|
凌晨两点十七分,端口渗透我盯着屏幕上那个孤零零的端口渗透 22 端口,心里骂了句脏话。端口渗透目标机只开了 SSH,端口渗透连个像样的端口渗透 Web 服务都没有,这渗透测试做得跟啃压缩饼干似的端口渗透——干巴,但还得嚼。端口渗透 端口渗透这事,端口渗透说穿了就是端口渗透找门。目标主机在互联网上露出的端口渗透每一个开放端口,都是端口渗透一扇没上锁的窗。有人觉得 80 和 443 才是端口渗透主战场,我不同意。端口渗透真正有意思的端口渗透东西,往往藏在那些不起眼的端口渗透犄角旮旯里。 去年给一家物流公司做评估,扫完 C 段发现一台机器开着 6379。Redis,没设密码。我连上去敲了个 INFO,返回的 redis_version 是 3.2.1——这版本有个经典的未授权写入 SSH 公钥漏洞。十分钟后,我拿到了那台机器的 root shell。运维后来跟我说,那台 Redis 是临时搭的缓存,忘了关。忘了关,三个字,就是渗透测试里最动听的情话。 但别以为端口渗透就是无脑扫。nmap 跑一遍 -sS -sV -p-,结果出来几十个开放端口,你得判断哪些值得深挖。3306 的 MySQL 如果只监听 127.0.0.1,那从外网打就是白费劲。8080 上的 Tomcat 如果版本是 9.0.30,那 CVE-2020-1938 的幽灵猫漏洞可能还活着。端口本身不危险,危险的是跑在端口后面的那个进程,以及配置它的人。 我见过最离谱的一个案例,是某政务系统的 7001 端口。WebLogic,版本 10.3.6.0。这玩意儿在渗透圈里跟没穿衣服差不多——反序列化漏洞一打一个准。但真正让我愣住的是,那台机器上还跑着 7002,SSL 版的 WebLogic 控制台,密码是 weblogic123。我甚至没用到 exp,直接登录后台部署了个 war 包,shell 就弹回来了。有时候安全防线不是被攻破的,是自己塌的。 端口渗透的精髓在于“横向”。你从 8080 打进去,拿到一个低权限的 www-data,这时候别急着提权。先 netstat -antp 看看这台机器自己连了哪些内网端口。10.0.0.15:5432 是 PostgreSQL,10.0.0.22:445 是 SMB。这些内网端口从外网扫不到,但从这台跳板机上,它们就是敞开的。我管这叫“从窗户爬进客厅,再从客厅走进卧室”。 说个具体细节。有一次打内网,目标网段里有一台机器只开了 3389,RDP。外网直接爆破?太慢,而且容易被封 IP。我扫了同网段其他机器,发现一台 445 开着的 Windows Server 2008,用 MS17-010 拿下来之后,在它的 C:\Users\Administrator\Desktop 上翻到一个 rdp.txt。里面是那台 3389 机器的管理员密码。端口渗透有时候就是这么回事——你盯着的门打不开,但隔壁窗户没关,窗户旁边的桌子上还放着钥匙。 最后说个反直觉的观察。很多人扫端口只扫 TCP,忽略 UDP。161 的 SNMP 如果 community string 是 public,能直接读出目标机器的网卡信息、路由表、甚至进程列表。69 的 TFTP 如果开放,说不定能下载到配置文件。UDP 扫描慢,但值得等。我习惯在跑 nmap -sU --top-ports 50 的时候去泡杯咖啡,回来往往有惊喜。 端口渗透没有银弹。每个端口背后都是一个具体的服务、一个具体的版本、一个具体的配置错误。你要做的就是比运维更了解那台机器——他忘了关的,你替他关。 |