去年夏天,新手渗透我在一台没打补丁的新手渗透Windows Server 2012上,用一条MS17-010的新手渗透exp,三分钟拿到了SYSTEM权限。新手渗透屏幕弹出meterpreter会话的新手渗透那一刻,我盯着命令行发呆——不是新手渗透兴奋,是新手渗透后怕。那台机器暴露在公网,新手渗透只跑了一个老旧的新手渗透OA系统,管理员密码是新手渗透Admin123。我什么都没做,新手渗透只是新手渗透把网上公开的利用代码复制粘贴了一遍。
这就是新手渗透新手渗透的真相:大部分入门者第一次拿shell,靠的新手渗透不是什么高深技术,而是新手渗透目标懒得打补丁。
先搞清楚你在干什么
渗透测试和黑客入侵的区别,不在技术,在授权。没有书面授权,你扫别人一个端口都算违法。我见过太多新手,学了点nmap命令就手痒,对着学校官网一顿扫,结果被保卫处请去喝茶。所以第一件事:搭自己的靶场。VMware装两台虚拟机,一台Kali,一台Metasploitable2,随便你怎么折腾。或者去HackTheBox、TryHackMe注册个账号,花点小钱,合法地打靶。
别急着学什么0day。新手阶段,你需要的不是漏洞挖掘能力,是信息收集的耐心和工具链的熟练度。
信息收集比漏洞利用重要十倍
我刚开始学的时候,总想直接上exploit。后来发现,真正花时间的是前期的信息收集。拿到一个目标IP,先nmap扫端口:nmap -sV -sC -p- 10.10.10.1。看到80端口开了,浏览器访问,看看是什么CMS。如果是WordPress,wpscan跑一下;如果是Tomcat,试试manager后台弱口令。这些操作不酷,但管用。
有一次打靶机,nmap扫出来只开了22和80。22端口版本是OpenSSH 7.2,80是Apache 2.4.18。看起来没什么漏洞。但我在80的robots.txt里发现了一个隐藏目录/backup,里面躺着一个sql文件,导出了admin的密码哈希。拿去cmd5一查,明文是password。SSH直接登进去,root到手。整个过程没有用任何exploit,就是翻目录翻出来的。
信息收集的核心是“翻”。翻源码注释、翻robots.txt、翻.git目录、翻备份文件、翻HTTP响应头。新手最容易忽略的是HTTP响应头里的Server字段和X-Powered-By,它们直接告诉你后端用什么语言、什么版本。
工具会用就行,别背命令
Metasploit、Burp Suite、sqlmap,这三个工具够你应付大部分入门靶机。不用背参数,用的时候-h查一下就行。我见过有人把msfconsole的命令背得滚瓜烂熟,但连一个简单的SQL注入点都找不到。工具是手的延伸,不是大脑的替代。
Burp Suite的Repeater和Intruder是重点。Repeater用来手动改包,观察响应变化;Intruder用来爆破目录和密码。sqlmap别上来就--os-shell,先--dbs看数据库,再--tables看表,一步步来。急了容易把目标打崩。
提权才是分水岭
拿到低权限shell只是开始。Windows下用systeminfo看补丁,用whoami /priv看权限;Linux下用uname -a看内核,用sudo -l看能执行什么。大部分靶机的提权路径就那几条:内核漏洞、SUID滥用、计划任务、服务配置错误。
我印象最深的一次,是在一台Linux靶机上发现/usr/bin/find有SUID位。直接find . -exec /bin/sh -p \;,root shell就弹出来了。这条命令在GTFOBins上就能查到。新手需要养成的习惯是:拿到shell后,先把sudo -l、find / -perm -4000 2>/dev/null、crontab -l这三条命令跑一遍。
别碰真实目标
最后说一句难听的话:在你拿到OSCP或者有三年以上安全工作经验之前,不要对任何非授权目标动手。你以为你在“测试”,法律眼里你在“入侵”。我认识一个哥们,扫了当地政府网站的一个注入点,还没提权就被网警定位了,最后罚款加写保证书。技术可以慢慢学,案底跟你一辈子。
渗透测试的本质是模拟攻击,不是炫技。新手最该练的不是手速,是克制。