站点渗透
拿到一个站点的站点渗透Shell,比想象中安静得多。站点渗透没有电影里的站点渗透绿色代码瀑布,没有急促的站点渗透键盘敲击声。屏幕上只有一个光标在闪,站点渗透我敲下`id`,站点渗透回显是站点渗透`uid=33(www-data) gid=33(www-data) groups=33(www-data)`。就这。站点渗透一个Web服务的站点渗透权限,低得可怜,站点渗透但足够让我在里面翻箱倒柜了。站点渗透
这台机器是站点渗透上周做攻防演练时盯上的。外网只有一个80端口,站点渗透跑着一套看起来年久失修的站点渗透CMS。后台登录页的站点渗透验证码形同虚设,用Burp抓包重放,把验证码参数直接删掉照样能过。弱口令爆破跑了二十分钟,admin/admin123就进去了。后台有个文件上传点,做了前端校验,改个后缀就绕过去了。上传的PHP马儿被杀了,但换成`phtml`就活了。这套流程没什么技术含量,纯粹是运维偷懒。
拿到Shell之后第一件事是看`/etc/passwd`和`/etc/shadow`的权限。shadow读不了,但passwd里有个叫`deploy`的用户,家目录下留了个`.bash_history`。历史记录里赫然躺着`mysql -u root -pP@ssw0rd123`。数据库就在本机,3306只监听127.0.0.1。用这个密码连上去,`select * from users`,管理员表的密码字段是MD5,丢进cmd5一查,明文是`Admin@2024`。这个密码同时能SSH登录服务器。从Web到系统,就这么简单。
内网扫描用的是fscan,C段扫下来发现三台存活主机。一台是域控,一台是文件服务器,还有一台开发机。开发机的445端口开着,用刚才的`deploy`账号密码试了一下,居然能读共享目录。里面有个`config`文件夹,放着数据库连接字符串和一套Jenkins的凭据。Jenkins的地址在内网另一台机器上,8080端口。用凭据登录进去,发现构建任务里有个脚本会定期从GitLab拉代码,而GitLab的root密码就写在脚本注释里。这链条长得离谱,但每一环都是因为有人把密码写在了不该写的地方。
横向移动的时候用了MS17-010,域控没打补丁。永恒之蓝一把梭,拿到域控权限后直接`dcsync`把krbtgt的哈希拖下来。整个域就沦陷了。从外网一个破CMS到域控,花了不到六个小时。中间没有用任何0day,全是配置错误和弱口令。
复盘的时候我在想,渗透测试这活儿,技术只占三成,剩下七成是耐心和观察力。你得盯着那些不起眼的细节:一个备份文件、一条历史命令、一个不该开放的端口。很多人上来就想着找漏洞,其实最该找的是人的疏忽。机器不会犯错,人才会。那个`deploy`用户把密码写在history里的时候,大概觉得没人会看到。但攻击者恰恰就爱翻这些犄角旮旯。
站点渗透的本质不是突破防线,是沿着别人留下的脚印走进去。门没锁,你推一下就行了。至于推门之后看到什么,那取决于运维到底有多懒。我见过把数据库密码写在网页源码注释里的,也见过用`123456`当SSH密码的。每次遇到这种,我都觉得这行当挺没劲的,但又挺有意思。没劲的是对手太弱,有意思的是你永远不知道下一个站点会给你什么惊喜。
最后提一句,那台机器我清日志的时候发现,半年前已经有人来过。用的也是同样的路径。运维一直没改密码。









