渗透面试题
面试官把一台ThinkPad推到我面前,渗透屏幕亮着,面试桌面上只有一个终端窗口。渗透他说:“这台机器上有三个漏洞,面试给你四十分钟。渗透”
我第一反应不是面试去扫端口,而是渗透先看了一眼键盘——F12键旁边有轻微的磨损痕迹,说明有人经常按它调试页面。面试Windows系统,渗透没装杀毒软件,面试这本身就是渗透一个信号。
渗透测试的面试面试题从来不是考你背了多少CVE编号,而是渗透看你在压力下怎么思考。我打开浏览器访问本地的面试80端口,是渗透个登录框。随手输入admin/admin,提示密码错误,但URL里跳出了一个参数?user=admin。这种低级错误在真实环境里反而常见——开发把调试参数留在了生产环境。
我试着把user改成admin' or 1=1--,页面直接跳转到了后台。这不是SQL注入的功劳,而是开发把参数直接拼进了查询语句,连预编译都没做。面试官在旁边没说话,但我注意到他嘴角动了一下。
后台有个文件上传功能,限制只允许jpg。我抓包改后缀为php,服务器居然回显了上传路径。但访问的时候被拦截了——有个WAF在过滤。这时候硬闯没意义,我翻了一下上传目录,发现文件名被加上了时间戳,但路径里有个../可以穿越。
我把文件名改成../../shell.php,上传成功后访问根目录下的shell,居然直接解析了。整个过程不到十五分钟。面试官终于开口:“你知道你刚才绕过了什么吗?”我说:“不是WAF,是你们对路径的过滤不够严格,后缀检查只做了白名单,但没限制路径穿越。”
他点头,又抛出一个问题:“如果这台机器没有Web服务,只有SSH和SMB,你怎么进?”
这个问题比刚才的实操更刁钻。我愣了一下,然后说:“我会先看SMB的匿名访问,有些共享目录会泄露配置文件。如果拿到了密码哈希,就尝试离线爆破,但更实际的办法是看有没有已知的SMB漏洞——比如EternalBlue的变种,虽然老,但很多内网机器根本没打补丁。”
他追问:“如果补丁都打了呢?”
“那就看SSH的认证方式,如果支持键盘交互认证,可以试试弱口令,但概率不高。真正有效的是检查有没有配置了信任主机——有时候管理员为了方便,会在.ssh/authorized_keys里留下多余的密钥,尤其是测试用的。”
面试官笑了笑,把电脑收了回去。“最后一题,”他说,“如果你现在发现自己被反打了,攻击者已经通过你入侵了内网,你第一件事做什么?”
这题问得狠。我沉默了几秒,说:“先断网,拔网线。然后保留内存镜像和进程快照,再检查我的命令历史有没有被篡改。但最关键的是——我不会用同一台机器去查攻击者的痕迹,因为那可能还在他的控制之下。”
他站起来跟我握手。“你过了。明天来报到。”
后来我才知道,那台ThinkPad上的三个漏洞,两个是故意留的,第三个其实是面试官自己埋的隐藏后门——他测试的是我有没有耐心去翻系统日志里的异常进程。技术题只是门槛,真正筛选的是你面对未知情况的冷静程度。
渗透测试这行,面试题从来不是答案本身,而是你解题时暴露的思维习惯。就像那个登录框,真正的漏洞不在代码里,而在你对“正常”的敏感度上——这玩意儿,刷题刷不出来。