AJP13是定向包协议。因为性能原因,使用二进制格式来传输可读性文本。AJP协议:WEB服务器通过TCP连接和SERVLET容器连接。为了减少进程生成socket的花费,WEB服务器和SERVLET容器之间尝试保持持久性的TCP连接,对多个请求/回复循环重用一个连接。一旦连接分配给一个特定的请求,在请求处理循环结束之前不会在分配。换句话说,在连接上,请求不是多元的。这个是连接两端的编码变得容易,虽然这导致在某一时刻会有很多连接。
AJP13通过mod_jk来连接。mod_jk简称JK,是Apache服务器的一个可插入模块,用以为Apache或IIS服务器处理JSP/servlet的能力。
本篇文章中,首先我们要弄明白mod_jk的作用是反向代理,而其实使用httpd.conf中的<VirtualHost>标签就可以实现反向代理,为什么还要多搞个mod_jk那么麻烦做反向代理。原因是<VirtualHost>标签是http协议反向代理到8080端口,mod_jk是ajp协议反向代理到8009端口;http协议tcp只保持短时间连接要经常进行tcp三次握手四次挥手,ajp协议tcp保持长时间连接反向代理开销就比较小。
下面是实验环境:
192.168.19.133 装有Tomcat 8的虚拟主机,防火墙封闭8080端口
192.168.19.130 kali虚拟机
nmap扫描发现8009端口:
Kali是默认安装Apache2的,我们仅需要安装mod-jk
jk配置文件:
jk.conf软连接到/etc/apache2/mods-enabled/目录
配置jk_works.properties
默认站点的配置:
重启apache2
systemctl restart apache2
现在apache的mod_jk模块就配置好了,访问192.168.19.130的80端口,就被重定向到192.168.19.133的8009端口了,然后就可以部署war了。
原文始发于微信公众号(CTS纵横安全实验室):Apache tomcat ajp13绕过安全限制漏洞
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论