Apache Mod_jk 访问控制权限绕过(CVE-2018-11759)

Apache Mod_jk 访问控制权限绕过(CVE-2018-11759)

0x01 漏洞简介

​ Apache Tomcat JK(mod_jk)Connector是美国阿帕奇(Apache)软件基金会的一款为Apache或IIS提供连接后台Tomcat的模块,用以为Apache或IIS服务器提供处理JSP/Servlet的能力。由于httpd和Tomcat在路径处理规范上存在差异,因此可以绕过Apache mod_jk Connector 1.2.0版本到1.2.44版本上由JkMount httpd指令所定义端点的访问控制限制。
​ 如果一个只有只读权限的jkstatus的接口可以访问的话,那么就有可能能够公开由mod_jk模块给AJP提供服务的内部路由。
​ 如果一个具有读写权限的jkstatus接口可供访问,我们就能通过修改AJP的配置文件中相关配置来劫持或者截断所有经过mod_jk的流量,又或者进行内部的端口扫描。

0x02 影响版本

Apache mod_jk Connector 1.2.0 ~ 1.2.44

0x03 环境搭建

0x03 漏洞环境搭建

下载地址:https://github.com/immunIT/CVE-2018-11759

进入目录,运行环境:docker-compose up -d

查看端口开放:docker ps -a

访问80端口就是网站的主页了

0x04 漏洞分析

Apache httpd将url中的分号视作路径解析中的普通字符,然而Tomcat却将他们当作查询分隔符(和"?"类似)。因此,攻击者可以获取到例如这样的路径:http://server/java_app/..;,但是对于httpd来中,这并没有触发服务器,并跳转到对应的目录下,而仅仅是被原封原样地转发到了Tomcat上,而且地址尾部会被解析为**…** 。*

译者注:"… "是两个点加一个空格

这就允许攻击者可以获取到本不应该在Tomcat上可以访问的资源。如下图比对CVE-2018-1323

在这里插入图片描述

我们现在已经确定了这个漏洞其实并未完全挖掘出来,因为mod_jk的补丁虽然确实修复了针对mod_jk的特定路径遍历攻击,但是还是没有解决mod_jk对分号路径解析方式的核心问题。

探测jkstatus

jkstatus是mod_jk模块的管理界面。当设为读写权限的时候,它允许通过配置AJP连接Java Web服务器来代理HTTP请求。

通常,我们可以限制对jkstatus的访问,比如使用如下的httpd指令:

<Location /jkstatus>
JKMount jk-status
Require ip 127.0.0.1
</Location>

这条指令会阻拦任何外部资源对jkstatus的访问。

在这里插入图片描述

我们发现通过在/jkstatus后面注入分号,就可以绕过这样的限制。

在这里插入图片描述

如果给jkstatus设定成具有读写访问权限的配置,要绕过jkstatus访问控制的话,其产生的影响就等同于通过更改工作人员使用的端口来实现对所有由mod_jk供应的应用程序拒绝服务的效果。不仅如此,如果攻击者再将相应的AJP连接到任何一台他所掌控的服务器上,他也可能会劫持到所有由mod_jk供应服务的web应用的流量。

理论上讲,通过将AJP的目标和端口修改为内部主机和其对应的端口,我们也可以进行内部TCP端口扫描,这是因为Tomcat和httpd的jkstatus返回的错误信息不一致的缘故,具体情况取决于提交的AJP端口是否有效**(错误网关与服务不可用的情况)**。

jkstatus(如果是只读权限的配置)还会公开内部服务器主机名、ip、端口、mod_jk模块服务的服务器和路由、以及文件系统上http服务器的绝对路径。

这种对访问控制权限绕过的手法具有很大的破坏效果,但是必须要注意一点的就是,通过JkMount指令定义任何端点的访问控制都有可能被分号注入绕过。

0x05 漏洞复现

尝试访问http://192.168.237.129/jkstatus,返回无权限访问的页面。

在这里插入图片描述

此时在路径 /jkstatus 后加上“;”,再次访问,发现成功绕过访问限制。

在这里插入图片描述

在url分号之后提交的get参数,就可以成功向jkstatus请求修改其访问权限的配置。

在这里插入图片描述

如果给jkstatus设定成具有读写访问权限的配置,要绕过jkstatus访问控制的话,其产生的影响就等同于通过更改工作人员使用的端口来实现对所有由mod_jk供应的应用程序拒绝服务的效果。不仅如此,如果攻击者再将相应的AJP连接到任何一台他所掌控的服务器上,他也可能会劫持到所有由mod_jk供应服务的web应用的流量。

如下图可以提交任意主机名和端口

在这里插入图片描述

参考链接

https://xz.aliyun.com/t/3974#toc-2

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值