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获取到结果之前进行类型转换,如图所示。