服务器疑似被PHP2Shell漏洞利用后如何排查是否已被入侵?

轻伟小哥_4985

轻伟小哥_4985

2026-11-09

703人浏览

原创

排查php2shell漏洞利用的核心在于检查web目录中是否存在被篡改的恶意文件以及服务器进程是否异常。具体做法是立即停止web服务,使用`find`命令结合`grep`搜索包含危险函数(如`system`, `exec`, `passthru`)的php文件,并比对文件哈希值或修改时间与备份库的差异。同时,通过`netstat`和`ps`命令检查是否有非预期的网络连接或隐藏进程,以确认攻击者是否已获取系统权限。

服务器疑似被PHP2Shell漏洞利用后如何排查是否已被入侵?

如何定位被植入的后门文件

定位后门文件需要深入Web根目录,重点扫描包含动态执行代码的文件。通常攻击者会将恶意代码隐藏在正常的PHP文件中,或者创建名为`shell.php`、`cmd.php`等隐蔽文件。可以通过查找最近修改的文件或使用正则表达式匹配危险函数调用来缩小范围。

服务器疑似被PHP2Shell漏洞利用后如何排查是否已被入侵?

#!/bin/bash
# 定义Web根目录,请根据实际情况修改
WEB_ROOT="/var/www/html"

# 查找包含常见后门函数的PHP文件
# 注意:这可能会产生误报,需人工复核
echo "正在扫描可疑文件..."
find $WEB_ROOT -name "*.php" -type f -exec grep -lE '(system|exec|passthru|shell_exec|popen|proc_open)\s*\(' {} \; > /tmp/suspicious_files.txt

# 显示结果
cat /tmp/suspicious_files.txt

# 进一步检查这些文件的最后修改时间
while read file; do
    echo "File: $file, Modified: $(stat -c %y "$file")"
done <p>运行上述脚本后,重点关注那些不在正常版本控制范围内、且修改时间接近入侵时间的文件。如果文件内容包含混淆的代码(如`base64_decode`、`eval`),则极大概率为后门。对于确认为恶意的文件,应保留样本用于取证,然后从干净的备份中恢复或被安全删除。</p><h2>如何检测系统层面的持久化痕迹</h2><p>即使清除了Web目录中的后门,攻击者可能已在系统中留下持久化机制。需要检查定时任务(Cron)、启动项以及网络监听状态。PHP2Shell漏洞利用后,攻击者常会添加Cron job以定期下载新载荷或维持访问。</p><p><img src="https://img.php.cn/upload/article/001/503/042/179420072116115.png?x-oss-process=image/resize,p_40" alt="服务器疑似被PHP2Shell漏洞利用后如何排查是否已被入侵?"></p><div class="aritcle_card flexRow artxards">
											<div class="artcardd flexRow">
												<a class="aritcle_card_img" rel="nofollow" href="/xiazai/skill5233" title="btpanel phpsite 宝塔面板PHP网站"><img
														src="https://img.php.cn/upload/skill/000/000/081/179040786932301.jpg" alt="btpanel phpsite 宝塔面板PHP网站" onerror="this.onerror='';this.src='/static/lhimages/moren/morentu.png'" ></a>
												<div class="aritcle_card_info flexColumn">
													<a rel="nofollow" href="/xiazai/skill5233" title="btpanel phpsite 宝塔面板PHP网站" class="overflowclass">btpanel phpsite 宝塔面板PHP网站</a>
													<p class="overflowclass">宝塔面板 PHP 网站管理:站点创建、删除、启停、PHP 版本切换、域名管理、SSL证书管理、伪静态管理、数据库管理</p>
												</div>
												<a rel="nofollow" href="/xiazai/skill5233" title="btpanel phpsite 宝塔面板PHP网站" class="aritcle_card_btn flexRow flexcenter"><b></b><span>下载</span>
												</a>
											</div>
										</div><pre class="brush:php;toolbar:false;">#!/bin/bash
# 检查当前用户的Cron任务
echo "=== 当前用户Cron ==="
crontab -l 2>/dev/null

# 检查系统级Cron目录
echo "=== 系统Cron目录 ==="
ls -la /etc/cron.d/
cat /etc/cron.d/* 2>/dev/null | grep -v "^#" | grep -v "^$"

# 检查常见的启动脚本
echo "=== 启动脚本检查 ==="
ls -la /etc/rc.local
ls -la /etc/init.d/ | grep -v "^total" | grep -v "^d"

# 检查异常的网络连接(监听端口)
echo "=== 异常网络连接 ==="
netstat -tulpn | grep LISTEN

# 检查异常进程
echo "=== 异常进程 ==="
ps auxf | grep -E "(nc|ncat|socat|python|perl)" | grep -v grep

执行上述检查脚本时,若发现未知的Cron条目、异常的监听端口(如非80/443的外部连接)或陌生的后台进程,应立即记录PID和网络连接信息。对于异常进程,使用`kill`终止并追踪其父进程。若发现持久化机制,需彻底清除相关配置,并考虑重置系统密码及SSH密钥,因为攻击者可能已获得root权限。

基于Web日志中特定HTTP请求的具体问题

通过分析Web服务器访问日志,可以还原攻击者的具体操作路径。例如,若日志中出现大量对`.php`文件的POST请求,且返回码为200但响应体为空或包含特定字符串,这通常是后门被激活的迹象。具体问题是:如何从日志中提取出所有疑似利用PHP2Shell漏洞的请求?

可以使用`awk`或`grep`工具过滤日志。假设使用Nginx或Apache的标准日志格式,可以搜索包含`POST`方法且URI指向可疑PHP文件的记录。以下命令可帮助提取此类请求:

# 假设日志文件为 access.log
# 提取所有POST请求到.php文件的行
grep "POST.*\.php" /var/log/nginx/access.log > /tmp/post_php_requests.txt

# 进一步筛选状态码为200的请求(表示执行成功)
grep " 200 " /tmp/post_php_requests.txt > /tmp/successful_exploits.txt

# 查看这些请求的IP地址分布
awk '{print $1}' /tmp/successful_exploits.txt | sort | uniq -c | sort -nr

该分析能识别出攻击源IP和被利用的具体文件。若发现同一IP频繁尝试不同文件名,表明攻击者在自动化扫描。此时应立即在防火墙层面封禁该IP,并审查被请求的文件是否确实存在后门。此步骤有助于评估入侵范围和影响程度,为后续加固提供依据。

php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!

相关文章

PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
php文件怎么打开
php文件怎么打开

打开php文件步骤:1、选择文本编辑器;2、在选择的文本编辑器中,创建一个新的文件,并将其保存为.php文件;3、在创建的PHP文件中,编写PHP代码;4、要在本地计算机上运行PHP文件,需要设置一个服务器环境;5、安装服务器环境后,需要将PHP文件放入服务器目录中;6、一旦将PHP文件放入服务器目录中,就可以通过浏览器来运行它。

2023.09.01

12484

6

php怎么取出数组的前几个元素
php怎么取出数组的前几个元素

取出php数组的前几个元素的方法有使用array_slice()函数、使用array_splice()函数、使用循环遍历、使用array_slice()函数和array_values()函数等。本专题为大家提供php数组相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.11

7201

5

php反序列化失败怎么办
php反序列化失败怎么办

php反序列化失败的解决办法检查序列化数据。检查类定义、检查错误日志、更新PHP版本和应用安全措施等。本专题为大家提供php反序列化相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.11

2235

5

php怎么连接mssql数据库
php怎么连接mssql数据库

连接方法:1、通过mssql_系列函数;2、通过sqlsrv_系列函数;3、通过odbc方式连接;4、通过PDO方式;5、通过COM方式连接。想了解php怎么连接mssql数据库的详细内容,可以访问下面的文章。

2023.10.23

4528

4

php连接mssql数据库的方法
php连接mssql数据库的方法

php连接mssql数据库的方法有使用PHP的MSSQL扩展、使用PDO等。想了解更多php连接mssql数据库相关内容,可以阅读本专题下面的文章。

2023.10.23

5254

6

html怎么上传
html怎么上传

html通过使用HTML表单、JavaScript和PHP上传。更多关于html的问题详细请看本专题下面的文章。php中文网欢迎大家前来学习。

2023.11.03

4131

9

PHP出现乱码怎么解决
PHP出现乱码怎么解决

PHP出现乱码可以通过修改PHP文件头部的字符编码设置、检查PHP文件的编码格式、检查数据库连接设置和检查HTML页面的字符编码设置来解决。更多关于php乱码的问题详情请看本专题下面的文章。php中文网欢迎大家前来学习。

2023.11.09

5977

8

php文件怎么在手机上打开
php文件怎么在手机上打开

php文件在手机上打开需要在手机上搭建一个能够运行php的服务器环境,并将php文件上传到服务器上。再在手机上的浏览器中输入服务器的IP地址或域名,加上php文件的路径,即可打开php文件并查看其内容。更多关于php相关问题,详情请看本专题下面的文章。php中文网欢迎大家前来学习。

2023.11.13

4682

8

sprintf函数用法详解
sprintf函数用法详解

sprintf函数的用法:1、格式化字符串;2、指定输出宽度和精度;3、返回值。更多关于sprintf函数用法详解的内容,大家可以阅读下面的文章。

2023.11.27

12482

4

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
《20天入门精通PHP》视频教程
《20天入门精通PHP》视频教程

共200课时 | 49.4万人学习

墨刀帮助中心
墨刀帮助中心

共0课时 | 0人学习

MyEclipse学习中心
MyEclipse学习中心

共0课时 | 0人学习