实战 | 记一次小程序cms安全事件应急响应

VSole2021-11-30 11:54:28

1、安全事件发生

2021年11月16日,上级发来不良检测记录,内容包含为某站点存在涉DuBo违规内容,该站点为基于ThinkPHP 5.0.10框架的小程序管理系统,下面以xcx.test.cn作为代替

经过对比原始版本的源码,以及命令ls -alh确认,index.php于11月15日23:16分出现文件修改,确认该web服务器遭到非法攻击。

后果:修改内容为在head内添加了meta标签和修改了title标签,标签内容为非法内容,搜索引擎的爬虫在爬取该站点时会爬取meta标签的内容,那么用户在百度搜索关键词时,会检索出不良内容。

2、安全事件溯源

2.1 暂停服务

首先进入宝塔关闭Apache与MySQL服务,其他途径告知用户系统正在维护

2.2 保存现场环境

进入到宝塔的网站管理界面,点击被入侵站点,点击备份站点(数据库同理备份)。

因为备份文件过大,则把全部备份通过宝塔的“腾讯云COSFS 2.0”插件,转储到cos里,在通过访问cos下载备份文件。

2.3 提取WEB日志

ssh连接进入服务器,提取宝塔的web日志,路径/www/wwwlogs/xcx.test.cn/ ,提取xcx.test.cn-access_log与xcx.test.cn-error_log到本地

2.4 find命令检索被文件修改

使用find . -mtime -300 -name “*.php”检索/www/wwwroot/xcx.test.cn/网站目录下被修改过的PHP文件,以快速确认webshell落地路径

从图中可以发现,在十一月份分别不同天数,有三个文件被添加或修改过,对比原始源码发现,除了index.php原本不存在图中另外两个文件。

2.5 分析webshell文件1

路径:/public/plugin/PHPExcel/PHPExcel/CalcEngine/index.php

分析该文件,总共分为两个部分

s函数:对$dapeng的字符串进行rot13解码

m函数与get1_str函数:该函数作用是eval执行PHP代码,通过组合变量$dp和$dapeng1成新的系统函数,把rot13解码的字符串,从十六进制转换为字符串文本(既为PHP代码)。

PS:该图为十六进制转码后的PHP代码

从图中可以得知,这里的变量file_path是上一层的index.php的$file_path,此处先备份网站首页index.php另存为index.bk.html,并把index.php的权限修改为0666,既所有用户可读可写权限,猜测此处目的防止因为权限原因无法修改首页。

2.6 分析webshell文件2

路径./public/webuploader/server/preview/dd887179e09b2326595305d8dd475763.php

分析该文件,可以得知是一个PHP远程文件包含+eval执行

Ps:该文件在后面日志分析得出,该文件为黑客第一个上传的木马。

从该路径/public/webuploader/server/preview/可猜测,黑客应该是使用webuploader下的fileupload.php或fileupload2.php或presiew.php里其中的一个php文件的上传漏洞,把webshell上传到服务器

2.7 分析access日志之攻击手法

从access日志来看,该web站点一直由来自不同地区,不同国家的IP地址用web漏洞扫描器一直进行扫描

由于刚刚提到webshell文件2的路径在webuploader/server下,而该文件夹下恰好有三个相关的上传文件,我们分别在access_log中搜寻fileupload.php或fileupload2.php或presiew.php

结果均为无结果:

我们猜测,黑客在使用presiew.php的原文件名应该为preview.php,通过对比1月份的备份包与本月的备份包,其中得出1月份的preview.php与presiew.php的文件内容完全一致,可以确认是被黑客修改了名称,preview.php内是有关文件上传的PHP代码。

那么回到vscode继续检索preview.php得到结果

结果还是比较多,在精确搜索一下,只显示有200回响的

成功筛选出4条记录,分别是

其中第1与第2条IP地址均为浙江省金华市婺城区 电信

第3条与第4条IP地址均为深圳市腾讯云

然后对比user-agent,第1、2条为

第3、4条为

请注意上述两条USER-AGENT都是非常旧的系统和浏览器版本,理应不符合该系统的对象用户,可初步判别均为异常流量。

通过相同UA头检索,发现UA为”Mac OS X 10_15_7”的主机,正在不断的从2021年6月21号到2021年11月16日,一直使用爬虫/web扫描工具进行扫描测试。

可以看出图中的相关日志,该UA都在同一天访问有关sql数据库的管理页,通过检索可知,有关“Mac OS X 10”的UA有6838条,可以判断是爬虫工具。

继续检索UA头为”Mozilla/5.0 (Windows NT 6.1; rv:25.0) Gecko/20100101 Firefox/2X.0”的相关行日志共两条,请注意下面两条日志的时间与webshell木马的dd887179e09b2326595305d8dd475763.php时间。

从上图中可以看出,第二条日志的时间与webshell的修改时间完全重合,且同时说明在11月1日该站点已经被渗透,

跟随这个UA继续检索日志,又发现访问了另外一个木马CalcEngine/index.php

故判断UA为“Mozilla/5.0 (Windows NT 6.1; rv:25.0) Gecko/20100101 Firefox/2X.0”就是黑客攻击我企站点的UA。

在这一些不同行的日志里,除了IP归属地为浙江省金华市婺城区 电信外,其他的IP归属地均为国外,所以金华市的这个IP很有可能是黑客的真实IP地址。

总结:黑客使用preview.php分时段上传了木马dd475763.php与CalcEngine/index.php,然后在11月15日23点16分通过dd475763.php修改了public/index.php

2.8 分析access日志之留种后门分析

根据来源地址为dd88719e.php,查找

referer:https://xcx.test.cn/webuploader/server/preview/dd887179e09b2326595305d8dd475763.php 

查找出以下几个后门

(1)111.php

(2)banner3.php(经典大马)

(3)picture3_6.php(此处与preview.php文件内容一致)

(4)config.php(WebShell)

通过$_REQUEST[admin]传参到eval函数,实现命令执行。

使用D_SAFE补充验证

2.9 分析preview.php

1)首先该文件的首行应该是if判断session是否为管理员,但在该文件内并没有写校验,故存在越权漏洞。只要知道路径,任何人都可使用该php来上传文件。

2)存在上传文件后缀无限制

从图中可以看出,通过正则表达式,变量$base64是文件内容,变量$type是文件后缀,从红色框住的if语句里,完全没有任何的过滤,

故payload为data:image/php;base64,PD9waHAgcGhwaW5mbygpOz8+

3)不校验上传文件内容

从截图得知,上传后的文件名是文件内容的md5值,而代码中也不做文件内容检查,即可直接写<?php phpinfo();?>

2.10 preview.php攻击手法复现

复现完成

三、修复建议

1.过滤presiew.php文件内上传的文件后缀名传参,并加入session校验。2.对webuploader/下所有文件进行审计后发现,fileupload.php和fileupload2.php都有文件上传漏洞,故建议对上传文件进行过滤3.对上传目录./preview/和./upload/禁止执行php。4.禁止非大陆地区的IP地址访问。
webshellwebuploader
本作品采用《CC 协议》,转载必须注明作者和本文链接
后果:修改内容为在head内添加了meta标签和修改了title标签,标签内容为非法内容,搜索引擎的爬虫在爬取该站点时会爬取meta标签的内容,那么用户在百度搜索关键词时,会检索出不良内容。
webshell新工具 -- PyShell
2023-07-24 10:21:11
0x01 工具介绍PyShell是多平台Python WebShell。该工具可以帮助您在web服务器上获得shell式的界面,以便远程访问。与其他webshell不同的是,该工具的主要目标是在服务器端使用尽可能少的代码,而不考虑使用的语言或服务器的操作系统。您可以在 Windows 和 Linux 中使用不同类型的 shell,具有命令历史记录、上传和下载文件,甚至可以像在目录中一样移动标准外壳。
场景:己经拿到了一个webshell,但是无法正常执行命令,因为被360安全大脑的主动防御拦截了。由于目标是 java 环境,这里可以尝试利用 jsp 执行系统命令上线,具体做法是先写一个 jsp的脚本然后放到 weblogic 的 webshell 路径下,如果找不到 webshell 可以使用文件查找命令dir c:\ /s /b |find "fuck4.jsp"
Webshell-Sniper是一款使用Python编写的基于终端的Webshell管理器,和以往我们分享的Webshell管理工具有所不同,所有操作都在终端中完成。使用它可对您的网站进行远程管理。虽然它没有图形化的GUI也没有WEB界面,但这样的操作也是另有一翻感觉。功能基于终端的shell交互反向连接shell数据库管理Webshell-Sniper安装与使用环境服务端 :. 需要注意的是,Webshell-Sniper服务端只支持Unix系统环境。
0x01 工具介绍该工具没什么技术含量,学了一点javafx,使用jdk8开发出了几个简单功能用来管理webshell。工具整合并改写了各类webshell,支持各个语言的cmd、蚁剑、冰蝎、哥斯拉,又添加了实际中应用到的一些免杀技巧,以方便实际需要。0x02 安装与使用直接下载releases版即可。
Webshell 检测综述
2022-12-15 09:45:32
通过Webshell,攻击者可以在目标服务器上执行一些命令从而完成信息嗅探、数据窃取或篡改等非法操作,对Web服务器造成巨大危害。Webshell恶意软件是一种长期存在的普遍威胁,能够绕过很多安全工具的检测。许多研究人员在Webshell检测领域进行了深入研究,并提出了一些卓有成效的方法。本文以PHP Webshell为例。
动态函数PHP中支持一个功能叫 variable function ,变量函数的意思。//最终是system;当一个变量后边带括号,那他就被视作一个函数。编译器会解析出变量的值,然后会去找当前是否存在名为“system()”的函数并执行它。这里就不给实例了,很多免杀案例中都用到了这个特性。也是被疯狂查杀的特征。回调函数回调函数,简单来说就是一个函数不是由我直接调用,而是通过另一个函数去调用它。
前言提到webshell免杀,方法无外乎对静态特征的变形,编码,或利用语言特性绕过。计算机中有很多符号,它们在编程语言中占据一席之地,这些符号作为运算符号,标识符号或起到特殊含义。本文以PHP为例介绍一些利用符号免杀方法。免杀WAF检测通过对安全狗、护卫神、D盾等常见软WAF的测试,发现WAF查杀主要依赖两种检测方法1.静态检测:通过匹配特征来查找webshell。如危险函数,文件特征码等。例如 ${$my_var[8]}与${$my_var}[8]的区分${xxx} 括起来的要当成变量处理。
通过URL信息获取如果能获取到恶意请求的URL信息,就可以根据URL信息定位到Webshell文件。URL信息可以通过态势感知、WAF等监测预警系统获取,也可以通过对系统异常时间段的Web日志进行审计获取。通过扫描工具扫描获取通过Webshell查杀工具进行扫描,可以定位到部分免杀能力不强的Webshell文件。默认情况下,Windows将仅在索引位置中查找最近修改的文件。
VSole
网络安全专家