Vulnhub--XXE漏洞复现

环境搭建

靶机下载:https://download.vulnhub.com/xxe/XXE.zip

下载完后,选择OVF文件,打开方式选择VMware,存储位置看你自己,然后打开靶机

 需要我们去登录,这里是没有现成的信息可以让我们登录(Vulnhub的靶场就是比较贴近于实战的环境,这里登录进去就可以直接看到flag,所以它不会直接给我们登录信息),于是就需要通过其他一些渗透手段来获取登录信息

信息收集

首先第一步就是信息收集,使用nmap扫描一下,看看它的端口开放情况,由于我这里靶机和攻击机网络设置都是NAT模式,因此它们是位于同一网段的,通过ipconfig命令查看攻击机ip

 查到ip后,就可以使用命令nmap -sS 192.168.190.1/24来查看该网段内所以主机开放的端口,通过扫描出的结果分析,192.168.190.252这个ip地址就极有可能是目标主机的地址,并且有一个开放的80端口

 漏洞发现

接下来,尝试去访问刚才拿到的ip地址(192.168.190.252)

 访问后可以看到是一个Ubuntu介绍界面,由于是Web类的应用程序,因此这里可以对它进行目录扫描

 发现有一个robots.txt文件(知识补充:robots.txt文件是网站所有者用来指示搜索引擎爬虫的一个重要文件,其中包含了网站拒绝访问的规则和指示。爬虫在抓取网页之前会先查看目标网站的robots.txt文件,根据其中的规则来确定哪些页面可以被抓取、哪些页面不能被抓取。因此这个文件通常是目录扫描看的第一个文件),查看该文件,如下:

 会看到有一个xxe文件,尝试访问它:

 访问后,返回一个登录界面,常规操作,抓包分析:

 会看到数据包中有xml语言,这是判断XXE漏洞的标志信息,因此前面就算不知道是什么漏洞,到这里也能推断出是XXE漏洞,于是直接利用XXE攻击

漏洞利用

这里就可以利用XXE漏洞来读取文件,但是直接读取文件需要知道文件的路径,因此这里采用php的伪协议来读取文件,就不需要用到文件的所在路径,构造payload如下:

<!DOCTYPE r[
    <!ELEMENT r ANY>
    <!ENTITY admin SYSTEM "php://filter/read=convert.base64-encode/resource=admin.php">
]>

 把包放出去后,可以看到返回了文件里面的信息,不过这里采用了base64加密

 解密文件内容:

解密后可以看到文件中有username以及password的信息,这里password很明显是md5加密了,于是利用工具对它进行解密

 得到密码为:admin@123,我们现在拿到了账号密码就可以去登录了,但是这里需要注意:我们读取的文件是在xxe目录下的,而不是那个根目录下的admin.php,登录页面如下:

登录后,可以看到页面中出现了flag字样

 直接点进去查看,但是发现这个地址下的php文件不可读,因此利用刚才的XXE漏洞来读取该文件

 需要注意:这个文件是位于网站根目录下的,因此这里需要跨级读取文件

 解密文件:

 发现还有加密,很明显是Base32的加密(如果对密码编码不熟的,可以看我之前的博客:CTF常见密码编码合集),在线解密:

 Base64解密:

 接着利用漏洞读取flag.php文件

 解密文件:

 解密后得到一串看不懂的符号串,我查看资料说的是php代码,然后就直接去运行:

 运行后就拿到了flag,到这里“游戏”就结束啦~

梳理回顾

  1. 有了目标主机后,首先就是信息收集,得到目标主机的ip地址以及端口号;
  2. 访问目标主机,Web应用程序,直接目录扫描;
  3. 得到敏感文件robots.txt,访问该文件,得到敏感信息xxe目录;
  4. 访问该目录,得到登录框,抓包分析;
  5. 利用XXE漏洞读取文件;
  6. 得到admin.php目录下的账号密码,登录得到不可访问的flagmeout.php文件;
  7. 利用XXE漏洞读取,得到flag.php文件,读取该文件,获得php代码;
  8. 最后运行该php代码得到flag

这里面较难的就是最后一步的php代码,我没怎么接触过这种,所以做的时候这里就卡住了,还有就是运行php代码的时候,网上太多在线的运行环境了,有的根本就跑不出来,很容易误导。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值