游客发表
实训第一天,渗透实训老师扔给我们一份拓扑图,渗透实训说:“把它打穿。渗透实训”图上有三层网络,渗透实训防火墙、渗透实训WAF、渗透实训数据库审计一应俱全。渗透实训我盯着那台标着“DMZ区Web服务器”的渗透实训图标,心里盘算着从哪下手。渗透实训旁边同学已经开始扫端口了,渗透实训nmap跑得飞快,渗透实训屏幕上跳出一串开放服务。渗透实训22、渗透实训80、渗透实训3306——MySQL直接暴露在外网,渗透实训这配置放在真实环境里够运维喝一壶的。
我先用dirsearch扫了一遍目录,发现一个`/backup/`路径返回200。点进去,整站源码压缩包躺在那儿,文件名还带着日期。解压后翻配置文件,数据库密码明文写着:`root:Admin@123`。试了一下,3306端口直接连上。那一刻我甚至有点失望——这靶机也太“配合”了。
但事情没那么简单。库里的用户表密码字段是bcrypt哈希,解不开。翻到`config`表,发现一个`api_key`字段,值是一串JWT。拿这个token去调后台接口,返回403,提示“IP不在白名单”。得,卡住了。
回头翻源码,发现`/debug/`目录下有个`test_conn.php`,里面写着数据库连接测试逻辑,但参数是从`$_GET['host']`取的。典型的SSRF。构造`?host=127.0.0.1:6379`,返回Redis的PONG响应。内网6379没设密码,直接写cron任务反弹shell。等了两分钟,nc监听的终端弹出了`www-data`的提示符。
提权更顺。`sudo -l`显示可以无密码执行`/usr/bin/find`。GTFOBins上查一下,`find . -exec /bin/sh \;`直接拿到root。从外网到root,前后不到四十分钟。
但真正让我记住的是另一组。那台机器只开了443,SSL证书是自签的。扫目录只返回一个登录页,试了弱口令、SQL注入都无果。后来用`openssl s_client`看证书详情,发现CN字段写着`dev-internal.corp.local`。改hosts指向靶机IP,访问这个域名,跳出一个Tomcat管理后台。默认口令`tomcat:tomcat`直接进。部署war包拿shell,全程没碰过Web应用本身。
两组靶机,两种思路。第一组是“顺着配置失误往下滚”,第二组是“从证书里挖隐藏入口”。实训结束那天,老师在白板上写了句话:渗透测试不是堆工具,是找逻辑漏洞。工具扫出来的东西,永远只是起点。
我现在看到任何登录框,第一反应不再是admin/admin,而是先看它背后有没有暴露的API文档、有没有带版本号的静态资源、有没有不该出现的调试接口。这些东西不会写在扫描报告里,但往往比高危漏洞更致命。
实训环境终究是干净的。真实网络里,你扫端口可能触发IDS,连数据库可能被蜜罐记录,反弹shell可能卡在出站策略上。但思路是一样的——信息收集做得越细,攻击面就越清晰。那些藏在证书、源码注释、HTTP响应头里的细节,才是渗透测试真正有意思的地方。
友情链接