第一章 应急响应-webshell查杀
第一章 应急响应-webshell查杀
前置知识
什么是应急响应?
简单官方一点:WebShell应急响应是指在检测到WebShell(恶意Web脚本)攻击后,采取一系列措施来控制、消除威胁,并恢复受影响的系统和服务。WebShell是一种常见的攻击手段,攻击者通过上传或注入恶意脚本到Web服务器上,从而获得对服务器的远程控制权限,而我们需要做的就是找到问题所在根源并且解决掉它
一、手动排查webshell
静态检测
我们可以查找一些特殊后缀结尾的文件。例如:.asp、.php、.jsp、.aspx。然后再从这类文件中查找后门的特征码,特征值,危险函数来查找webshell,例如查找内容含有exec()、eval()、system()的文件。
优点:快速方便,对已知的webshell查找准确率高,部署方便,一个脚本就能搞定。
缺点:漏报率、误报率高,无法查找0day型webshell,而且容易被绕过。
动态检测
- webshell执行时刻表现出来的特征,我们称为动态特征。只要我们把webshell特有的HTTP请求/响应做成特征库,加到IDS里面去检测所有的HTTP请求就好了。
- webshell如果执行系统命令的话,会有进程。Linux下就是起了bash,Win下就是启动cmd,这些都是动态特征。
日志检测
- 使用Webshell一般不会在系统日志中留下记录,但是会在网站的web日志中留下Webshell页面的访问数据和数据提交记录。
- 日志分析检测技术通过大量的日志文件建立请求模型从而检测出异常文件,例如:一个平时是GET的请求突然有了POST请求并且返回代码为200。
二、工具排查webshell
相对于手工排查,工具排查可能更好上手,但是如果想走的更远一些,某些线下的比赛可能会断网,也就说,手工排查的一些基本操作还是要明白的。(但是工具排查真的很香)
推荐一些查杀的平台工具(大部分都是在线端)
简介
靶机账号密码 root xjwebshell
1.黑客webshell里面的flag flag{xxxxx-xxxx-xxxx-xxxx-xxxx}
2.黑客使用的什么工具的shell github地址的md5 flag{md5}
3.黑客隐藏shell的完整路径的md5 flag{md5} 注 : /xxx/xxx/xxx/xxx/xxx.xxx
4.黑客免杀马完整路径 md5 flag{md5}首先代码特征
- WebShell通常会使用一些危险的函数来执行系统命令或代码,如:
- PHP: eval(), system(), exec(), shell_exec(), passthru(), assert(), base64_decode()
- ASP: Execute(), Eval(), CreateObject()
- JSP: Runtime.getRuntime().exec()
- WebShell通常会使用一些危险的函数来执行系统命令或代码,如:
编码和解码
WebShell经常使用编码和解码技术来隐藏其真实意图,如Base64编码:
eval(base64_decode('encoded_string'));1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
3. **文件操作**
* WebShell可能会包含文件操作函数,用于读取、写入或修改文件:
* PHP: `fopen()`, `fwrite()`, `file_get_contents()`, `file_put_contents()`
* ASP: `FileSystemObject`
4. **网络操作**
* WebShell可能会包含网络操作函数,用于与远程服务器通信:
* PHP: `fsockopen()`, `curl_exec()`, `file_get_contents('http://...')`
* ASP: `WinHttp.WinHttpRequest`
5. **特殊后缀文件 例如:.asp、.php、.jsp、.aspx。**
#### 一、黑客webshell里面的flag flag{xxxxx-xxxx-xxxx-xxxx-xxxx}
1. 搜索目录下适配当前应用的网页文件,查看内容是否有Webshell特征 很明显shell.php 是一个病毒文件,定位过去查看内容 并没有什么 继续分析其他两个文件
2. 在gz.php文件里面发现了 木马
* > 这段代码的目的是接收通过 `php://input` 流发送的数据,对其进行编码,并根据会话变量中的内容执行特定的 PHP 代码。这通常用于隐藏恶意代码或后门,使得攻击者可以通过特定的请求触发执行。
1
2
3
4
5
6
7
8
9
10
11
12
13
* ```
find ./ type f -name "*.jsp" | xargs grep "exec("
find ./ type f -name "*.php" | xargs grep "eval("
find ./ type f -name "*.asp" | xargs grep "execute("
find ./ type f -name "*.aspx" | xargs grep "eval("
//对于免杀Webshell,可以查看是否使用编码
find ./ type f -name "*.php" | xargs grep "base64_decode"
xargs:xargs命令用于将输入数据重新格式化后作为参数传递给其他命令。在这个命令中,xargs将find命令找到的文件列表作为参数传递给grep命令。
grep "eval(":grep命令用于搜索文本,并输出匹配的行。这里"eval("是grep命令的搜索模式,用于查找包含eval(字符串的行。
find ./ type f -name "*.php" | xargs grep "eval("
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 0xMouise!







