红日安全nday漏洞还原分析之dedecms后台getshell

2019-04-04 约 1226 字 预计阅读 3 分钟

声明:本文 【红日安全nday漏洞还原分析之dedecms后台getshell】 由作者 红日安全 于 2018-07-23 14:18:55 首发 先知社区 曾经 浏览数 3790 次

感谢 红日安全 的辛苦付出!

本文由红日安全成员: 七月火 编写,如有不当,还望斧正。

前言

最近发现 dedecmsnday后台getshell ,于是打算还原一下。根据日志显示,攻击者访问了 dede/ad_add.php 文件后,转而访问 plus/ad_js.php 文件,提交的 payloadplus/adjs.php?nocache=1&aid=1&=whoami

前期准备

DedeCMS V5.7 SP2正式版下载:http://updatenew.dedecms.com/base-v57/package/DedeCMS-V5.7-UTF8-SP2.tar.gz

我们先来看一下 dede/ad_add.php 文件。可以看到这是一个增加广告的页面,如下图:

实际上,它在后台的位置对应如下:

接下来,笔者使用 TheFolderSpy 软件对网站文件进行监控,这样能让我们快速的发现发生修改的文件,从而提高审计效率。 TheFolderSpy 设置如下:

然后,在如下4个位置分别填入一些标识信息,以便后续判断到底是哪一处发生问题。填写信息如下:

点击确定添加广告后,发现 TheFolderSpy 软件并没有监测到有文件内容被修改。于是我们继续访问 plus/adjs.php?nocache=1&aid=1&=whoami ,发现生成了一个 data\cache\myad-1.htm 文件,并且我们在上图第三个框中填写的 phpinfo();3 被写入了该文件。如下图所示:

我们可以观察到该文件路径为 data\cache ,那么应该是个缓存文件,而且文件后缀为 htm 。由于攻击者通过访问 plus/ad_js.php 页面能 getshell ,那么很有可能是程序在某处将这个缓存文件给包含了。接下来我们对 plus/ad_js.php 文件进行详细分析。

漏洞分析

plus/ad_js.php 文件代码如下:

这里关注 第9行第15行 ,可以清晰的看到程序包含了我们之前监控到生成的 htm 文件,第12-14行 主要是对要写入 htm 文件的内容进行处理,具体代码如下:

仔细观察这段代码,程序将从数据库中 dede_myad 查询的结果存在 $row 变量中(上图第3行),然后将表 dede_myad 中的 normbodyexpbody 字段的值作为 $adbody 写入缓存文件 $cacheFile ,并在最后 include $cacheFile; 。而 第16-18行 只是对 $adbody 内容进行简单的处理。我们再从数据库中,查看 dede_myad 表的内容,如下图:

可以看到 normbodyexpbody 字段,对应的就是我们刚刚填写的第3个和第4个标识信息。我们现在再来看看 normbodyexpbody 字段的值是如何写入的。再次回到 dede/ad_add.php 文件,针对刚刚填写的广告内容发起提交,抓包如下:

然后我们再看 dede/ad_add.php 文件代码:

此时整个漏洞发生的流程便十分清晰了,程序将来自用户的数据 $normbody['htmlcode'] 仅仅只是用 addslashes 函数处理,并没有对代码进行分析,然后便直接存储在数据库 dede_myad 表的 normbody 字段,导致用户可以将PHP代码存储在数据库中。如果攻击者此时访问 plus/ad_js.php 文件,则调用 normbody 字段并写入缓存文件,最终利用文件包含该getshell。

漏洞利用

在明白了上述分析流程,想利用该漏洞便十分简单。我们在广告内容处插入 --><?php phpinfo();?><!--

然后访问如下链接( 这里的aid值为第几个广告 ):

http://localhost/dedecms/plus/ad_js.php?nocache=1&aid=3

总结

本文从代码审计的角度,对漏洞进行详细分析,借助文件监控软件迅速定位漏洞所在。或许大家可以利用这种方式,发现更多的后台 getshell 利用姿势,期待大家挖掘。最后,希望大家多多交流,共同进步。如果大家有什么好的代码审计技巧,还望不吝分享,感谢大家的阅读。

关键词:[‘技术文章’, ‘技术文章’]


author

旭达网络

旭达网络技术博客,曾记录各种技术问题,一贴搞定.
本文采用知识共享署名 4.0 国际许可协议进行许可。

We notice you're using an adblocker. If you like our webite please keep us running by whitelisting this site in your ad blocker. We’re serving quality, related ads only. Thank you!

I've whitelisted your website.

Not now