Emergency response - One
Emergency response - One
S0cke3t事件起因
某日下午,我像平时一样在慵懒的敲着代码。突然接到通知说某某医院被通报遭到了黑客攻击并挂了webshell,本来以为就是简单被挂了马,扫扫溯溯源删除掉就可以了,没想到着实被这次挂马的方式秀了一把,这让我不禁感叹还是太年轻~
事件分析
通过与院方技术人员沟通,详细了解了攻击情况及时间,并拿到了具体的通报信息,关键信息如下
据通报信息显示,该网站下/plug/book.asp被检测为恶意文件,那么我们下一步就要具体检查该文件的内容,看看是否符合检测结果,再次与院方技术人员沟通拿到了该网站虚机主机管理平台账号密码。登录管理平台发现该网站已停止运行,为了避免在我们分析时再次遭受攻击,在征得院方同意下将网站打包在本地进行溯源分析。
将源码拖到虚拟机后,首先我们要查看被检测出的文件是否存在恶意代码
然而在我看完整个文件时并未在此文件中发现任何恶意代码(只截图了部分关键性代码),这就有点意思了~
暂时先把这问题放一边,先看看他是怎么进来的。因为大多数被挂马无非就是上传,弱口令和RCE。
接下来我们就可以排查数据库中管理员账号信息,看看密码是否存在弱口令等问题
很显然该网站管理员密码为弱口令(嘿嘿,别问我怎么知道的,难道你看着7a57a5a不觉得眼熟嘛~)
但是为了验证正确性我们还是到解密网站去解一下
接下来我们就要寻找该cms网上公开的getshell方法,通过搜索引擎找到一篇关于该cms后台getshell的技术文章,此文章给出了三种方法,其中第二,三种比较符合我们的要求,具体细节如下
可以看到第一个是通过修改上传类型,而第二个是利用后台模板编辑功能,写入生成asp或aspx类型webshell的ashx文件,再通过访问ashx文件最终生成asp或aspx类型的webshell。
那么接下来我们就要扫描一下网站文件,看看是否存在相似的文件存在。
通过扫描发现,网站下确实存在相似的文件,且目录比较符合文章中提到的修改上传类型的特征。查看一下具体的文件内容
不难发现该文件与上述漏洞代码基本一致。至此基本就确定了大致的攻击路径,攻击者通过弱口令
进入该网站后台随后通过修改上传类型向目标写入ashx类型的webshell,再通过ashx生成aspx。
唯一不足的是的由于网站缺失相关的日志文件,无法进行确切的攻击推演。
另类的挂马方式
不知道 细心的读者有没有发现通报中的book.asp并没有出现在我们本地扫描列表里,这也就说明通报所使用的探测器可能是基于页面返回信息来确定该文件是否为恶意文件,而我们本地使用的D盾则是基于语法语义来判断。
但是既然检测出了恶意特征,那就说明该文件一定是存在问题的。于是我在本地搭建起环境尝试访问该页面
可以看到页面并没有返回正常的留言界面,而是返回了一个经过解析的图片马。这样就证实了该文件为什么会被检测出的原因,那么随之而来的一个问题就是它是如何加载到该图片马的呢。
在经过我一番查找后,终于让我找到了该页面加载的本体文件
而该文件也被我们之前用D盾扫描了出来(当时应该注意一下的。。。)
那么又一个问题出现了,他是如何加载到该文件的呢????
下面听我娓娓道来
首先我们还是回到最初的book.asp,在该文件头部包含了两个文件,分别是
/lib/base.asp和theme.asp
我们先来看theme.asp
该文件又包含了skins.asp和theme/taws/config.asp,同样我们一个一个看,先看skins.asp
该文件中定义了样式的根目录为taws,接下来我们看taws/config.asp
该文件对theme_root进行了拼接,确定加载的绝对路径,同时也声明了留言板页面变量theme_book为theme_book.asp
第一个包含文件的关机信息我们已经掌握了,下面我们来看book.asp包含的第二个文件/lib/base.asp
该文件除了定义了一些变量,还包含了该cms的核心类文件,其中我们需要关注的就是sdcms.func.asp
首先该文件声明了类对象,并对类对象进行了初始化。至此基本的信息我们已经掌握,回过头我们看book.asp
首先该文件接收get传过来的act参数,并根据act参数值进行不同的操作,而我们在访问该页面时并未传入该参数,所以会直接进入end if代码段执行sdcms.show theme_book,""
, 执行sdcms类对象的show方法并传入theme_book,我们看一下show方法具体做了什么
首先调用getsplitname获取到theme_book的文件名并赋值给temproot,而后对之前webroot,theme_root与temproot拼接得到最终的加载路径 "/theme/taws/sdcms_book.asp"
,最后调用load和diaplay完成加载和显示。这样就成功的加载到了sdcms_book.asp文件。
攻击者首先对原先的文件进行了拷贝,用图片马替换了正常的留言页面,最终通过boook.asp达到劫持页面的效果,至此也不难看出该攻击者在挂马之前是对该cms进行过一定审计的,随后在对网站首页检查时也未发现留言页面入口,而攻击者也许正是发现了这儿一点,才将马挂到了留言页面。
我们将文件替换回来,再刷新一下页面
页面恢复了正常
总结
总体来说这个操作着实是秀了我一把,然而这位黑阔唯一疏忽的就是没有准备一个免杀的webshell,如果将theme_book.asp更换为一个免杀的webshell,也许会是另一番风景。