很多人以为web渗透就是透需学会用几个工具,扫一扫、透需点一点,透需运气好就能拿到shell。透需我刚开始也这么想,透需直到第一次实战打一个政府站,透需发现连后台登录框都找不到,透需才明白工具只是透需最后一步,真正要补的透需是底层认知。
先搞懂HTTP协议。透需不是透需背几个状态码就完事,而是透需能说清楚一个请求从浏览器发出到服务器返回,中间经过了什么。透需请求头里Cookie、透需Referer、透需User-Agent各自干什么用,响应头里Set-Cookie怎么种,Location怎么跳。我见过有人连302和301的区别都分不清,就去打越权,结果连登录态怎么维持的都没搞明白。抓包是日常操作,Burp Suite或者Fiddler,选一个用熟。别急着开扫描器,先把浏览器开发者工具的Network面板看透。
然后必须会一门脚本语言。Python最实际,写个简单的目录爆破脚本、写个请求重放工具,比手点快得多。不需要学到能写框架,但至少要能读懂requests库的文档,能处理json和正则。我早期偷懒,全用现成工具,结果遇到一个需要动态token的接口,工具全废,只能硬着头皮写脚本,那一次之后才老实补了Python。
数据库基础不能跳过。SQL注入是web渗透的必修课,但很多人只背了' or 1=1 --,连联合查询的字段数怎么确定都不知道。我建议直接在本地装个MySQL,手动建表插数据,然后用union select一步步把数据带出来。报错注入、盲注、堆叠注入,每种都自己搭环境试一遍。别光看文章,看十篇不如自己打一次。
前端知识也得有。不用会写React,但要能看懂JavaScript,知道DOM怎么操作,同源策略是什么。XSS和CSRF的利用链,很多时候卡在前端细节上。比如一个存储型XSS,你插了script标签被过滤,得知道用img onerror或者svg onload绕过。这些不是工具能自动帮你想到的。
Linux命令要熟。渗透测试大部分时间在命令行里,ls、cd、grep、awk、sed、curl、nc,这些是吃饭的家伙。拿到一个webshell,第一件事是信息收集,whoami、id、uname -a、cat /etc/passwd,这些命令敲得慢,效率就低。我习惯把常用命令存成alias,省时间。
漏洞原理比工具重要。SQL注入、XSS、CSRF、SSRF、文件上传、文件包含、命令执行、越权,这些是web渗透的核心漏洞类型。每个漏洞,要搞清楚它为什么产生,怎么利用,怎么防御。比如文件上传,前端校验怎么绕,后端校验怎么绕,黑名单怎么绕,白名单又怎么绕。这些细节,扫描器不会告诉你。
信息收集是贯穿始终的。打一个站之前,先搞清楚它有哪些子域名、哪些端口、哪些目录、哪些参数。子域名爆破用subfinder,目录扫描用dirsearch,端口扫描用nmap。但工具跑完,结果要自己看,哪些是真实业务,哪些是蜜罐,哪些是废弃系统。我打过一个站,主站防护严密,但一个废弃的子域名跑着老版本CMS,直接getshell。
最后,法律边界要清楚。没有授权,不要碰任何系统。哪怕只是扫个端口,也可能违法。我见过有人扫了某个学校的内网,被请去喝茶。技术可以学,但手要干净。
学web渗透没有捷径,就是一个个漏洞打过去,一个个环境搭起来。工具会更新,但底层的东西不会变。把HTTP、数据库、Linux、脚本这几样吃透,剩下的就是时间问题。
顶: 586踩: 2






评论专区