黑客实战演示视频
凌晨两点十七分,黑客我盯着屏幕上跳动的实战视频光标,对面那台服务器的演示root权限已经到手了。整个过程没超过四分钟——从扫描到提权,黑客一气呵成。实战视频这不是演示电影桥段,是黑客我上周在测试环境里复现的一个真实漏洞利用链。
视频录下来了,实战视频全程无剪辑。演示今天把它拆开讲清楚。黑客
入口:一个被遗忘的实战视频测试接口
目标是一台跑着某开源电商系统的云主机。我先用fofa搜了一下同款资产,演示全国大概有两千多台暴露在公网。黑客这个数字本身已经够吓人了。实战视频
真正让我决定动手的演示是/api/v1/debug这个路径。正常生产环境不该存在的东西,它大摇大摆地挂在上面,返回一堆系统信息——PHP版本、数据库类型、甚至部分环境变量。开发图省事留下的调试接口,最后变成了别人进门的钥匙。
用curl请求一下,返回的JSON里有个file_path参数。试着传了个../../../../etc/passwd,没做任何过滤,直接读出来了。目录穿越,低级但致命。
从读文件到拿Shell
能读文件不代表能执行命令。我翻了翻日志文件,发现系统用的是ThinkPHP 5.0.22。这个版本有个经典的远程代码执行漏洞,只要构造特定的请求就能触发。
构造payload的时候要注意一点:目标装了云锁,会拦截明显的system、exec这类函数名。绕过的办法不复杂,用assert配合base64编码就行。视频里我把这一步放慢了,弹幕里有人说“这也太简单了吧”——确实简单,但就是能打通。
拿到webshell之后,权限是www-data。离root还差一步。
提权:内核漏洞的暴力美学
先uname -a看了下内核版本:Linux 4.4.0-116-generic。Ubuntu 16.04的老机器。这个内核版本存在CVE-2017-16995,一个eBPF模块的提权漏洞,利用工具在GitHub上直接能下载到。
上传、编译、执行。第一次没成功,报了个Operation not permitted。查了下发现目标开了SMAP保护,需要调整一下利用代码里的偏移量。第二次跑,直接返回了root shell。
从webshell到root,总共花了不到九十秒。
一些不那么技术但更重要的观察
这台机器不是孤例。我后来在shodan上搜了下同样的指纹,发现大量同款系统存在一样的问题——调试接口没关、框架版本老旧、内核补丁没打。运维的人可能觉得“内网的东西没人看得到”,但一旦有一台机器被突破,横向移动就是分分钟的事。
视频最后我留了个彩蛋:把整个利用过程写成了一个Python脚本,一键化。从扫描到提权,全自动。这东西我不会公开,但我想说的是——攻击的门槛正在变得越来越低。
防守方要做的其实也不复杂:关掉不必要的接口、及时更新框架和内核、部署WAF并定期看日志。但就是这些基础工作,太多人没做到。
录这个视频的时候我刻意没有打码目标IP,因为那是我自己的测试机。真实环境里搞未授权的渗透,不管有没有造成损失,都是刑事犯罪。技术本身没有对错,用的人才有。
视频放在我的个人博客上,密码是hackdemo2024。感兴趣的自己去看,但别拿去干坏事。