游客发表
我见过太多人一上来就抱着《Metasploit渗透测试指南》啃,学渗结果连HTTP请求长什么样都说不清楚。透需这不是学渗工具的问题,是透需地基没打。
先讲个真事。学渗去年有个网友加我,透需说自己学了三个月渗透,学渗问我为什么用sqlmap跑不出注入点。透需我让他把目标URL发过来,学渗他发了个登录页。透需我打开一看,学渗用户名和密码是透需前端JS加密后才提交的——也就是说,sqlmap拿到的学渗请求包里,参数值本身就不是透需明文。他连“服务端收到的学渗数据长什么样”这个基本判断都没有,工具再强也白搭。
HTTP、TCP/IP、DNS这三样,必须能画出来。不是背OSI七层模型那种画法,而是能说清楚:浏览器输入一个域名到页面显示出来,中间经过了哪些设备、发了什么包、端口号是多少、状态码代表什么。我习惯让新手用Wireshark抓一次完整的登录过程,把每个包的字段都看一遍。你会发现Cookie在哪、Session ID怎么传、POST Body里到底装了什么。这些看明白了,Burp Suite抓包改包才不是瞎蒙。
DNS这一块很多人忽略。子域名枚举、DNS重绑定、域传送漏洞,都是建立在理解DNS查询过程上的。连A记录和CNAME的区别都说不清,怎么判断一个目标的外网攻击面?
渗透测试最终要落到命令执行。Linux下你至少得知道怎么找SUID文件、怎么看crontab、/etc/passwd和/etc/shadow的区别是什么。Windows那边,注册表Run键、计划任务、服务权限,这些位置得形成肌肉记忆。我见过有人拿到shell之后,连whoami都不打,直接上提权脚本,结果脚本跑一半报错——权限不够。连当前用户是谁都没确认,这不是工具的问题是脑子的问题。
命令行操作要练到不用看键盘。管道、重定向、grep、awk、sed这些,在渗透里出现的频率比在开发里还高。因为你要从一堆输出里快速筛出有用信息,手动翻页?来不及的。
Python是底线。不用写出多优雅的代码,但要能看懂别人的POC,能改参数、改URL、改payload。比如一个反序列化漏洞的利用脚本,你要能把其中的命令执行部分换成自己的。不会写没关系,搜索引擎和GitHub是后盾,但至少得知道哪一行是发请求、哪一行是解析响应。
HTML和JavaScript也得懂一点。XSS、CSRF这些漏洞,不理解DOM结构、不理解同源策略,就永远停留在“弹窗成功”的层面。我见过有人测XSS只试<script>alert(1)</script>,被过滤了就放弃。其实稍微看一下过滤规则,换个可能就过了。这靠的是对浏览器解析机制的理解,不是工具能替代的。
自己搭一个DVWA或者SQLi-Labs,把每种注入类型手动跑一遍。不是用工具跑,是手动构造payload。union注入、报错注入、布尔盲注、时间盲注,每种都自己写一遍。这个过程很枯燥,但做完之后你对“数据是怎么从数据库被取出来”这件事会有完全不同的感觉。
Web框架方面,至少得知道MVC是什么、路由怎么解析、中间件干什么用。不然你看到Spring Boot的Actuator端点暴露,都不知道那意味着什么。
基础这些东西,学起来没有“拿下一个站”那么爽。但它们决定了你后面能走多远。工具会过时,漏洞会修复,但协议、系统、代码这三样东西的底层逻辑,十年二十年不会大变。我到现在还经常翻TCP/IP详解和HTTP权威指南,每次都有新收获。渗透这行,快就是慢,慢就是快。
友情链接