XML注入
引用:https://www.freebuf.com/vuls/175451.html 作者:Hu3sky
0X01 xxe漏洞介绍
XXE漏洞全称XML External Entity Injection即xml外部实体注入漏洞,XXE漏洞发生在应用程序解析XML输入时,没有禁止外部实体的加载,导致可加载恶意外部文件,造成文件读取、命令执行、内网端口扫描、攻击内网网站、发起dos攻击等危害。xxe漏洞触发的点往往是可以上传xml文件的位置,没有对上传的xml文件进行过滤,导致可上传恶意xml文件。
- 所有 XML 元素都须有关闭标签。
- XML 标签对大小写敏感。
- XML 必须正确地嵌套。
- XML 文档必须有根元素。
- XML 的属性值须加引号。
XML语法规则如下:
0×02 攻击思路
- 引用外部实体远程文件读取
- Blind XXE
- DoS
外部实体引用,有回显
读取任意文件
例一:
可以看到xxe-1.php页面以POST方式向xxe-2.php页面传输了XML数据,既然是XML数据,我们就可以自己增加一个恶意外部实体然后再原本的XML数据中进行实体调用,来进行XXE攻击,如下:
可以看到,成功的读取了robots.txt中的内容,这里的hu3sky是我们定义的一个外部实体。
例子二
jarvisoj上的一道题目API调用
这道题的题目说明是 请设法获得目标机器/home/ctf/flag.txt中的flag值。
进入题目 http://web.jarvisoj.com:9882/ 发现一个输入框,我们对其进行抓包
要把content-Type的json处改为xml。修改json处,构造一个xml表单进行xml注入,得到flag。