怎么找网站的漏洞
找漏洞这活儿,找网站说穿了就是漏洞一场和程序员的心理博弈。你不需要是找网站天才,但得学会像贼一样思考——琢磨对方在哪个环节会偷懒,漏洞在哪个角落会自信过头。找网站
最笨也最有效的漏洞办法,是找网站直接看公开的漏洞库。CVE、漏洞CNVD这些平台,找网站每天都有新披露的漏洞漏洞。别急着去复现那些复杂的找网站,先翻翻跟自己目标技术栈相关的漏洞。比如你盯上一个用ThinkPHP写的找网站站,就去搜ThinkPHP的漏洞历史漏洞。很多老漏洞,找网站管理员压根没打补丁。我见过一个政府网站,用的框架漏洞是2018年的,直接一个Payload打过去,后台管理员的密码哈希就躺在那了。这不是技术多高超,纯粹是对方懒。
光靠捡漏不够,你得学会“乱点”。网站的每个输入框,都是攻击面。搜索框、登录框、留言板,甚至URL里的参数,全试一遍。别小看单引号,输入一个`'`,如果页面报出SQL语法错误,恭喜,你找到了一条通往数据库的路。有时候报错信息会把完整的查询语句和表名字段名都吐出来,那感觉就像捡到了对方掉在地上的钥匙。要是没报错,也别灰心,试试`"`、`)`、`\`,总有一款能让程序崩溃。
更隐蔽的玩法藏在功能逻辑里。比如一个修改密码的功能,你抓包看看它提交的参数。有些程序员会把用户ID直接放在前端表单里,你改成别人的ID试试。我遇到过电商网站,把商品价格放在隐藏字段里,改个数字提交,订单金额就变了。这种漏洞,扫描器扫不出来,纯粹是业务设计上的脑残。
别忘了看前端代码。按F12打开开发者工具,浏览器的源码就是一面镜子。注释里可能写着管理员邮箱,JS文件里可能硬编码了API密钥,甚至有些内网地址会直接写在配置里。有一次我在一个网站的HTML注释里发现了一段内网IP和账号密码,顺藤摸瓜,直接登上了对方公司的VPN。别觉得这低级,低级手段往往最管用。
还有个容易忽略的入口——子域名。主站防御搞得固若金汤,但测试环境、旧版系统经常挂在子域名上。用fofa或subfinder枚举一下,找到`test.xxx.com`或者`dev.xxx.com`,点进去看看。很多测试站直接裸奔,连登录页面都不需要认证。
真要说技巧,其实就一条:别把网站当铁板一块,它是无数个小部件拼凑起来的。每个接口、每个上传点、每个第三方插件,都是潜在的缝隙。上传文件时把后缀名改成`.jpg`,抓包再改回`.php`,绕过前端校验,这种老套路至今还能用。因为程序员只检查了客户端,服务端压根没管。
最后提醒一句,这些手段只能在授权范围内玩。找漏洞是为了补漏洞,不是拿来干坏事。你挖到东西,提交给SRC平台换点赏金,或者直接联系网站管理员,都比黑产强得多。技术本身没善恶,但用技术的人得有点底线。