什么是漏洞利用/java反序列化漏洞利用-0基础渗透入门教程

什么是漏洞利用/java反序列化漏洞利用-0基础渗透入门教程

1.前言

2019年9月,禅道项目管理软件爆出全版本的RCE漏洞。于是便好奇漏洞的成因,在阅读作者的文章及自己复现分析后,发现漏洞其实算是一种越权调用,普通权限(用户组为1-10)的攻击者可通过/api/.php中方法,越权调用目录下所有的model模块和方法,从而实现SQL注入、任意文件读取、远程代码执行等攻击。

2.漏洞分析

在分析漏洞之前,先需要了解禅道的路由模式。禅道有两种路由模式(2)、GET方式,其中GET方式为常见的m=&f=形式传递模块和方法名,而(2)则是通过路径和分隔符的方式传递模块和方法名。路由方式及分隔符定义在/.php中,下载的禅道11.6.1默认使用路由方式。

1.png

接下来,从入口文件www/index.php开始分析禅道如何传参的,在index.php的66-68行,调用了三个方法()、()、()。

2.png

先跟进/base/.class.php查看方法,当路由方式为或者的时候,会调用方法,将$this->URI用”-”分割,第一个参数设置为模块名,第二个参数设置为方法名,检查是否存在后传递到类的变量中。

3.png

再跟进//model.php 方法,主要是验证将要调用的模块和方法对当前用户是否有权限,除了中定义的公开模块和方法之外,其他的方法都是需要登录的。

4.png

而本漏洞需要利用的模块和方法分别为api、,可以表中查询调用该接口所需要的权限组为1-10,这意味着普通用户即可以调用该接口。

5.png

6.png

最后到方法,通过之前获取的包含对应的类文件并实例化,随后调用方法从路径中获取方法对应的参数值,最后通过方法调用对应类中的对应方法并赋值。

7.png

8.png

存在漏洞接口为/api/.php的方法,这是一个能够调用所有model类的超级方法,51行方法能否调用指定指定模块的model文件并返回model对象。配合52行的函数便可以调用所有的model文件的所有方法。

9.png

3.漏洞利用

原作者利用的是文件写入和文件包含结合执行任意代码,这里有一个更加简单的方式可以直接写入。文件写入漏洞代码位于//model.php中的save方法,$和$都可以控制。

10.png

要想写入php文件这里需要可以在路径中引入”.”,这里先看禅道会对PATH中传递的参数名和参数值限制规则/.php,对参数值的正则为^[a-zA-Z0-9=_,`#+\^\/\.%\|\x7f-\xff]+$,这里其实是可以有”.”的。

11.png

但是为什么原作者放弃了直接写入的方法呢,真实原因在/base/.class.php的方法,程序会先匹配路径中是否有”.”,如果有的话,将第一个点之前的部分作为需要解析的路径,之后的部分作为视图类型。这就解释了之前漏洞作者为什么没能直接写入。

12.png

那么如何绕过呢,仔细分析程序发现在/api/.php的方法中调用了对参数进行处理,而会对参数值做一次url解码!那么问题迎刃而解了,可以对”.”以及其他被限制的字符做两次url编码,即可以绕过对字符串中”.”的分割以及之后正则的匹配。直接写入的请求如下:

13.png

由于路由的原因,必须覆盖www目录下的原有php文件才可以被直接解析,这里可以覆盖x.php。

14.png

4.参考链接

~

网络安全学习,我们一起交流

~

  • 5
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值