|
很多人对“渗透服务器”这个词有误解,渗透以为就是服务敲几行命令、屏幕上跳出绿色字符、器教然后大喊一声“我进来了”。渗透现实里,服务一次完整的器教渗透更像搬砖:信息收集占七成时间,真正拿到shell可能只占五分钟。渗透去年我帮一家小型电商做授权测试,服务从外网到内网域控花了整整三天,器教其中两天半都在翻他们的渗透员工博客和GitHub提交记录。 先讲最容易被忽略的服务一步:被动信息收集。别急着扫端口。器教打开whois查域名注册邮箱,渗透去社工库比对历史泄露密码,服务用Google搜`site:target.com filetype:env`。器教我那次就是在一个离职员工的个人博客里翻到了内网VPN的测试账号,密码是他家猫的名字加上生日。很多渗透失败不是技术不行,是耐心不够。 主动扫描阶段,nmap别上来就`-A -T4`全开。先发几个ICMP包看看防火墙反应。如果目标屏蔽了ping,试试`nmap -Pn -p 80,443,8080`。有一次我扫一个C段,发现只有8080端口开着,返回的是Tomcat默认页。用`curl -I`看响应头,Server字段写着`Apache-Coyote/1.1`,版本号被抹掉了。但错误页面的中文乱码暴露了编码是GBK,结合Tomcat版本推测,大概率是Windows Server 2008。这个判断后来被证实——他们运维图省事,直接用了旧镜像。 漏洞利用环节,别迷信MSF的`exploit`一键梭哈。手动验证更可靠。比如遇到Struts2的S2-045,先发一个`Content-Type: %{ ...}`看返回是否包含`multipart/form-data`异常。确认后再用`ognl`表达式执行`whoami`。我见过有人直接上工具,结果目标打了补丁,工具返回“exploit completed”但根本没弹shell,白高兴一场。 拿到低权限shell后,提权是另一道坎。Windows下先跑`systeminfo`和`whoami /priv`。如果看到`SeImpersonatePrivilege`,恭喜,JuicyPotato或PrintSpoofer大概率能用。Linux下别只盯着`sudo -l`,看看`/etc/crontab`里有没有可写脚本,或者`find / -perm -4000 2>/dev/null`找SUID文件。有次我遇到一个CentOS 7,内核是3.10,直接上DirtyCow编译提权,五分钟拿到root。但注意,脏牛补丁很多系统都打了,先`uname -a`确认版本。 内网横向移动,别一上来就扫445。先看当前机器的`arp -a`和`netstat -ano`。如果发现同网段有数据库端口3306,试试用之前收集的密码撞库。我那次就是用一个`admin:Admin@123`登进了MySQL,然后`load_file`读到了域管的hash。再配合`responder`抓NTLMv2,一晚上就拿到了域控。 最后说清理痕迹。别以为`wevtutil cl System`就完事了。Windows事件日志、PowerShell操作日志、甚至Prefetch文件都会留下记录。Linux下`~/.bash_history`要清,`/var/log/auth.log`也要处理。但更关键的是:别删系统文件。有次我看到一个新手把`/var/log/wtmp`删了,结果系统重启后直接报错,运维立刻发现异常。 渗透测试的边界感比技术更重要。授权书里写清楚测试范围和时间窗口,别碰生产数据库,别留后门。我习惯在结束前给客户写一份详细报告,包括每个漏洞的复现步骤和修复建议。毕竟,你是在帮人补墙,不是拆家。 |