XXE解释
XXE:XML外部实体注入(被各种后端脚本调用)
=>XML:(存数据不会做任何事情)(像HTML|传输数据|无预定义)
特点:1. XML仅仅是纯文本文件,他不会做任何事情。
2. 可以自己发明标签(允许自己定义的标签和文本结构)
=>外部实体()
=>注入:用户输入的数据被当作代码执行
预定义:预先定义好的东西
var_dump() 查看数据类型
eval() 可以执行命令
echo 它可以输出
XML:
<?xml version="1.0”?>
DTD(文档类型定义):通过特殊的命令去其他文件中读取数据,
XML
mysqli_connect()
mysqli_query()
mysqli_close()
引用(1.txt) 包含(include)处理代码冗余
XXE常见函数
simplexml_load_string()
simplexml_load_file()
危害:
XXE可以通过DTD去读取、访问其他文件或者网站
注入步骤
XSS平台:
将XSS注入到目标站点--->有人访问后把数据传到平台--->记录下来
XXE:请求一个自己搭建的php文件,其他的文件。(将想要获取的数据带出来)
php文件记录请求的传参内容(记录文件)
file:/// 正常情况下,网站不应该使用的协议
PHP伪协议(php内部协议)
- 看到页面莫名传递、返回XML代码可以试试
- 代码审计【主流】
代码审计
- 静态审计(纯看)
- 动态审计(网站运行起来,然后通过一些特殊手法,去追踪具体的代码流程)
- 小技巧:依靠静态看代码,然后不用动态调试软件,直接修改源码进行动态调试
静态:
- 全文通读 ☆☆☆☆☆
- 危险函数定位
eval()
mysqli_query()
靶场实操
对CMS代码审计
使用Seay辅助审计,对可能出现问题的函数进行搜索


先观察第一个出现该函数的位置


发现这个HTTP_RAW_POST_DATA
也是获取POST传参信息的
在本地将CMS搭建起来



在这里可以看到怀疑点的路径

在下面加上一个返回phpinfo的代码,打开这个页面看看

发现生效了,说明代码执行到了这一步
尝试输出HTTP_RAW_POST_DATA
$GLOBALS['HTTP_RAW_POST_DATA'] =>获取POST原始数据

对这个页面进行抓包,把传参方式修改为POST,并传一些参数


页面将我传递的参数输出了
这里有一点问题,直接在线上测试

将攻击语句传入

发包查看https://5aeg8017.ia.aqlab.cn/3.txt 的到数据库链接
PD9waHAKZXJyb3JfcmVwb3J0aW5nKEVfQUxMIF4gRV9OT1RJQ0UpOyAKaGVhZGVyKCJjb250ZW50LXR5cGU6dGV4dC9odG1sO2NoYXJzZXQ9dXRmLTgiKTsKc2Vzc2lvbl9zdGFydCgpOwokY29ubiA9IG15c3FsaV9jb25uZWN0KCIxOTIuMTY4LjAuMTAiLCJ4eGUiLCAidGVpd28hOCM3RVJlMURQQyIsICJzY21zIik7Cm15c3FsaV9xdWVyeSgkY29ubiwnc2V0IG5hbWVzIHV0ZjgnKTsKZGF0ZV9kZWZhdWx0X3RpbWV6b25lX3NldCgiUFJDIik7CmlmICghJGNvbm4pIHsKICAgIGRpZSgi5pWw5o2u5bqT6L e5o6l5aSx6LSlOiAiIC4gbXlzcWxpX2Nvbm5lY3RfZXJyb3IoKSk7Cn0KJGZ1bmN0aW9uZmlsZT1kaXJuYW1lKCRfU0VSVkVSWyJTQ1JJUFRfRklMRU5BTUUiXSkuIi9kYXRhL2Z1bmN0aW9uLmJhcyI7CiRkYXRhZmlsZT0iZGF0YS9kYXRhLmJhcyI7CiRhamF4ZmlsZT0iZGF0YS9hamF4LmJhcyI7CiRhcGlmaWxlPSJkYXRhL2FwaS5iYXMiOwo/Pg==
<?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");
mysqli_query($conn,'set names utf8');
date_default_timezone_set("PRC");
if (!$conn) {
die("æ°æ®åº6L {:Ç¢Ò踵åÍű¥}½¹¹Ñ}ÉÉ½È ¤¤ì)ô(չѥ½¹¥±õ¥É¹
µ }MIYIlM
I%AQ}%195t¤¸½
ѽչѥ½¸¹
Ìì(
Ñ
¥±ô
ѽ
ѹ
Ìì(
©
ᥱô
ѽ
©
à¹
Ìì(
Á¥¥±ô
ѽ
Á¤¹
Ìì(üø=
登录数据库


得到flag
漏洞修复
修复XXE:
libxml_disable_entity_loader(ture)
PHP的禁止加载XML实体- 过滤SYSTEM关键字
Comments NOTHING