2020HW热门0day分析与复现

 

深信服EDR漏洞分析

RCE getshell

如果说最近爆出的0day当中最为人熟知的莫过于最先爆出的深信服EDR的0day了,只需要凭借着简单的复现条件就可以对漏洞加以利用,那么我们下面来分析一下深信服EDR的几个比较高危的漏洞吧。

首先从广为人知的c.php开始说起,这个漏洞的复现条件极为简单,只需要访问/tool/log/c.php然后使用get提交传入变量即可,利用exp如下:

http://ip/tool/log/c.php?strip_slashes=system&host=id

下面我们看一下他的代码

查看c.php程序入口,可以看到调用了show_form函数,并且利用REQUEST的方式传参,然后我们跟进这个函数。

从箭头处我们可以看到这里调用了extract函数,继续往下看到三元运算符其中变量strip_slashes指向了一个函数,如下图:

这个函数大概就是检查有没有开启gpc功能,如果没有开启则直接return返回值如果开启了就是用stripslashes函数进行转义。????相信屏幕前的你也一堆问号,神奇的逻辑。

言归正题,回到show_form这里,那么我们是不是就可以通过覆盖掉strip_slashes以及host变量来getshell了呢?覆盖后的变量大概就是

strip_slashes=system&host=id

组合起来也就变成了system(id)从而执行了命令呢?

真•后门

如果上面那个漏洞我们原谅了开发,那么下面这个漏洞一定会让你若有所思!我们直接来看一下代码吧!

我想可能刷过靶场的小伙伴对这串代码都不陌生,没错这不就是简单难度的变量覆盖漏洞吗?还是能执行命令那种,至于利用方法也是非常简单!

http://ip/php_cli.php?code=system("whoami");

神奇备份

这个也没有什么可说的直接上图吧!

就在/tool/log目录下

越权登陆

这里的越权登陆通过在前台登陆页面login.php界面进行传参提交用户名可越权至终端后台,利用payload如下:

http://ip/ui/login.php?user=admin

迷惑验证码

我们分析/tool/log/l.php代码,作为和c.php在同一目录的好兄弟没有点能耐好意思在这个目录呆?代码如下图:

在这个main函数中,我们首先步进到ldb_run_at_console函数中。

可以看到这个函数设置了一个全局变量,最后return时验证是否设置该变量,返回然后true或者false,当然因为没有设置这个变量那么一定就是false,然后看第一张图,也就满足了第一层if的条件,然后继续往下看第二层,如果没有设置captcha变量或者captcha的值不等于10899801则返回验证码错误。

那么我们可以看到他是直接通过REQUEST的方式接收值,既然我们可以控制变量那么直接构建payload即可。

http://ip/l.php?captcha=10899801

权限绕过

同样也有表哥挖到了权限绕过漏洞,通过修改Y-Forwarded-For的值为空以及其默认没有配置文件导致变量值为空在比较时可以越权获取特权,下面我贴一下文章地址:

https://mp.weixin.qq.com/s/4Z4QF-Wdq2PhqCkGKB8Q6Q

深信服小结

深信服EDR所有的漏洞当然不止以上几个,在tool目录下几乎无一例外的都有变量覆盖漏洞,也希望相关开发人员能够重视安全开发规范,我认为漏洞产生的原因就是开发没有做到数据与代码分离从而致使可以控制变量并加以利用,现在大部分漏洞已经有了相应的解决方案。大部分的EDR已经删除了tool目录,并且也发布了相应的补丁,虽然发补丁时顺道把源码泄露了,EXP已经上传至github有兴趣的小伙伴可以自行下载。

https://github.com/wikiZ/-EDR-EXP

 

宝塔越权漏洞

这个漏洞于8月23日上午公开,宝塔官方于晚上8点发布短信紧急修复公告,漏洞通过访问指定url可以直接越权利用,影响近9W余台服务器,利用payload如下:

http://ip:888/pma

通过访问以上url可以直接越权至phpmyadmin后台,也有许多娱乐圈黑客利用此漏洞四处破坏,造成了严重的社会影响,更有甚者在gov站点上挂黑页。
该漏洞主要影响版本有:
宝塔linux面板 7.4.2
宝塔windows面板6.8

修复方案:
1、升级宝塔面板至最新版本7.4.3,在面板内即可升级。
2、关闭888端口。

EXP地址:https://github.com/wikiZ/pagota

 

通达OA RCE漏洞

说到通达OA,它最近爆出的漏洞可真的不要太多了,就在几个月之前也爆出过RCE getshell漏洞,那时候我也写出了EXP并进行分析。这一次爆出的RCE同样是auth身份验证文件的问题,但却不是他的锅。下面我们来对代码进行审计吧!

漏洞影响版本:
通达OA < v11.7

首先漏洞的关键产生原因就是文件删除漏洞,攻击者通过该漏洞删除了auth身份验证文件,导致验证失效从而进行任意文件上传,任意文件删除漏洞产生位置在:

/module/appbuilder/assets/print.php

我们来看一下它的源码
P.S.注意通达OA的源码是加密的需要使用seayDZend工具解密后即可正常阅读源码

在上图代码中我们可以看到用户可以通过GET方式控制变量guid,然后下面对文件是否存在进行检测,如果存在则会调用unlink函数进行删除文件,s_tmp变量这里拼接了guid变量,所以这里我们就可以通过guid参数进行目录穿越从而进行任意文件删除,PAYLOAD如下:
http://ip/module/appbuilder/assets/print.phpguid=../../../webroot/inc/auth.inc.php

注意在测试时进行备份,删除了auth.inc.php可能导致部分功能不可用。
删除了auth.inc.php文件,我们继续分析文件上传点的源码,漏洞发生位置为:

/general/data_center/utils/upload.php

首先传入参数action=upload进入,然后传入不存在的filetype这里可以任意取值,最后传入repkid参数值为/.<>./.<>./.<>./ 逃逸file_exits函数。数据包中构建上传文件操作,上传文件参数名为FILE1。
这里的逃逸操作,使其进入if条件中拷贝文件至网站根目录。

最后直接访问http://ip/_filename.php即可。
数据包如下图:

通达OA漏洞小结

修复方式:
更新至最新版本v11.7即可。
更新地址:https://www.tongda2000.com/download/sp2019.php

EXP地址:https://github.com/wikiZ/tongda-deleteRCE

 

本文转自:https://www.anquanke.com/post/id/215347

posted @ 2020-08-28 10:12  vvan9  阅读(1603)  评论(0编辑  收藏  举报