Web安全-Joomla内核SQL注入漏洞利用


实验声明:本实验教程仅供研究学习使用,请勿用于非法用途,违者一律自行承担所有风险!

Joomla内核SQL注入漏洞利用

实验目的

??Joomla是一套网站内容管理系统,使用PHP语言和MySQL数据库开发。Joomla! 3.5.0 -3.8.5版本对SQL语句内的变量缺少类型转换,导致User Notes列表视图内SQL注 入漏洞,可使攻击者访问或修改数据等。通过本实验了解Joomla内核SQL注入原因,了解Joomla内核SQL注入利用方法,了解Joomla内核SQL注入修复方法。

实验环境

渗透主机:PLM

(用户名: college 密码: 360College)
工具:Burpsuite、Sqlmap等


漏洞靶机:PTD(存在Joomla内核SQL注入漏洞靶机)

(用户名: college 密码: 360College)

实验原理

??本实验复现的是Joomla内核SQL注入漏洞(CVE-2018-8045)的渗透过程。

??Joomla内核SQL注入漏洞的影响版本范围为: Joomla 3.5.0-3.8.5

??Joomla内核SQL注入漏洞的漏洞原因主要是:

??漏洞文件在\administrator\components\com_users\models\notes.php,问题点如图所示,Joomla没有对$category_id 参数进行过滤或者转义,直接拼接到SQL语句,造成SQL注入。

??Burp Suite是用于渗透测试的web 应用程序的集成平台。本实验通过Burp代理进行抓取访问Joomla后台的数据包,并修改提交。

??Sqlmap是著名的、自动化SQL注入利用工具。本实验利用其进行SQL注入,获取敏感信息。

实验步骤

第一步 使用PLM渗透主机,登录目标Web站点管理后台及漏洞产生菜单项

1.登录后台,IP为PTD的IP地址

利用URL地址输入http://域名(IP)/administrator 登陆后台

系统内置好了系统账号,用户名:admin,密码:admin_123

2.访问漏洞页面

登陆后台以后,点击User --> User Notes 访问漏洞页面

第二步 配置Firefox代理功能

1.首先需要配置浏览器代理,点击如图所示的按钮

2.然后选择“选项”选项,弹出界面以后然后鼠标向下一直滚动的底部,单击“设置”按钮。

3.然后按照如图所示设置,最后点击“确定”项。

第三步 启动burpsuit代理抓包

1.设置完成以后双击打开C:\soft\Burpsuite软件,按照如图所示选项启动软件。

下一步配置

下一步配置

下一步配置

下一步配置

成功启动后的界面如图所示:

第四步 burpsuit抓包

1.然后单击Proxy选项卡,单击Intercept is off -> Intercept is on。

2.然后在User Notes界面单击Search Tools按钮,在第二个选项卡选择列表选项

3.点击完以后BrupSuite会自动抓包,抓取的信息如图所示

4.将刚才的抓取的数据包保存成文件payload.txt

注意:将整个POST的文件内容全部复制保存

5.然后修改filter[category_id]属性值为单引号,如图所示

如果category_id为7则将7用单引号符号替换

6.然后在单击Forward(多次点击)按钮发送数据包

单击以后会发现页面出现错误,如图所示。

第五步 基于sqlmap调用抓包信息进行SQL注入

1.将刚才保存的文件payload.txt拷贝至C盘根目录

2.在cmd命令行启动sqlmap.py

3.将cmd命令行的路径切换至C盘根目录,与payload.txt文件存放路径一致。

然后在CMD窗口输入sqlmap.py -r "payload.txt" -p filter[category_id]后回车

此时SQLMAP开始进行基于漏洞的渗透测试

渗透测试过程需要2-3分钟,中间需要进行参数选择时,输入“y”

最后成功探测出web服务器的一些敏感信息,如图所示

4.继续使用命令sqlmap.py -r "payload.txt" -p filter[category_id] --dbs探测数据库信息,结果如图所示

5.跟进sqlmap的基础操作命令,可继续渗透获取相关数据库的表、列、字段等信息。

思考与总结

??为了避免该类漏洞对你的影响,请务必升级Joomla至3.8.5后的最新版本。

??技术修复方法是:将$category_id获取到结果之前进行类型转换,如图所示。