浅谈漏洞思路分享-只有登录框的渗透测试
原创
炫彩之星
炫彩之星
菜鸟学安全
2026年11月8日 23:58
广东
去阅读
你以为只有登录框,其实能测的地方多到离谱
做项目最怕的不是漏洞难挖,是拿到一个目标翻来覆去看只有一个登录页——没有注册、没有找回密码,也没有后台入口,连个能点的地方都没有。没账号没密码,这仗怎么打?很多人到这一步就收工了,报一句“未发现明显风险”。
可登录框从来不是终点,它是入口。系统只露出一个登录页,说明前端把能藏的都藏了,但登录这一步本身要校验、要返回、要跳转、要维持会话,每个环节都是信息泄露和逻辑绕过的口子。而且藏起来的功能不代表不存在,只是没人去点:接口在 JS 里,后台路径在目录里,历史漏洞在组件版本里。
这篇把这两年遇到“只有登录框”时的打法整理了一遍,从最没技术含量但最好用的弱口令开始,到注入、爆破、验证码、改响应码、目录扫描、找回密码、注册、历史漏洞、端口、JS 泄露,一共十一个方向。没什么花活,但每条都真能出东西。
0x00 弱口令
第一步永远是厂商默认口令:很多系统出厂就是 admin/123456、admin/admin888,拿“系统名 + 默认密码”搜一下,命中率比想象中高。第二步才是高频弱口令:admin、test、admin123、admin888、123456、111111、qwer1234,先用小字典快速扫一遍,别一上来就挂十万字典。
有个细节值得留意:连续失败几次后如果返回“账号已锁定”,说明系统有锁定策略,硬撞会把账号锁死,换用户名或者降速;只报“密码错误”而没有锁定提示的,可以放开跑。即使是部委级这种防护规格的系统,弱口令也照样存在,所以它永远是第一顺位。
0x01 SQL 注入
万能密码挨个试:admin' or 1=1 --、admin'--、' or 1=1 #、\"or\"=\"a'='a,密码留空或随便填。运气好直接进后台,不顺就把登录请求保存成文件丢给 sqlmap:sqlmap -r login.txt --batch --level 3。
我人生第一个漏洞就是这条:用户名填 1' or 1=1 --q,密码留空,直接登录成功。
登录成功进到系统里:
补一句实话:现在登录接口大多做了参数化,真正的注入点常常在“忘记密码”“注册查重”这类走数据库查询的接口上。登录打不动别急着下结论,把那几个接口也过一遍。
0x02 暴力破解
爆破之前先判断用户名枚举:账号正确密码错误、和账号根本不存在的返回,如果文案、状态码或者响应耗时不一样,那就是枚举漏洞。能枚举就先跑用户名,再针对命中的账号跑密码,比盲跑省一个数量级的时间。
工具用 Burp Intruder 或者 hydra,字典从 top 1000 起步就够用。图里这个 admin,密码就是 q1w2e3r4:
边界还是那几样:验证码、账号锁定、IP 限频。授权范围内可以换源、加延迟,但别把目标打挂——打挂了后面全都没法测。
0x03 验证码绕过
有验证码怎么办?一个字:绕。
1、验证码字段直接删掉或置空提交,看后端到底校没校验;
2、删掉 cookie 换个新会话,看验证码是不是跟 session 绑的;
3、万能验证码:1111、0000、8888、1234;
4、Burp 拦包不发,把请求发到 Repeater 重放几次,同一个验证码能用第二次就是漏洞;
5、短信验证码同理可以爆:4 位数一共一万种,看它限不限频,不限频 5 分钟能跑完。
图形验证码“难认”不等于绕不过去,先确认它是不是一次性的、跟不跟会话绑定,再决定要不要上 ddddocr 识别。这套东西能单独写一整篇,这里先给最常用的五招。
0x04 修改响应码
原理一句话:前端只认返回值,后端没认真校验会话。做法也简单:先用真账号登录一次,把正确的响应包存下来当模板;再拿错误密码登录,Burp 拦截响应,把 {\"code\":500} 改成 {\"code\":0}、把 false 改成 true,或者干脆把 HTTP 状态码改成 200,看前端会不会放行跳进后台。
同样的思路不止登录:找回密码、注册、实名认证、支付回调,凡是“看返回码决定下一步”的地方,都值得试一遍。
0x05 目录扫描
dirsearch 起手:dirsearch -u https://target -e php,zip,rar,sql,bak,git -t 20,也可以换 ffuf。重点盯三类:网站备份文件(.zip/.rar/.sql/.bak)、后台和中间件入口(phpmyadmin、adminer、actuator、swagger)、版本控制目录(.git)。
写这篇文章前一天就扫出来一个 phpmyadmin,用万能密码 'localhost'@'@\"、密码空着直接进库:
线程别开太高,老系统扛不住会 502/500,IP 也容易被封;降点速换个稳定,比打挂重来划算得多。
0x06 找回密码功能
找回密码是逻辑漏洞重灾区:任意用户密码重置、短信轰炸、验证码爆破、验证码绕过、验证码回显、SQL 注入,一条链路能连着出好几个。
分享一个 edu 的任意用户密码重置:填一个未注册的手机号,居然也能正常走完获取验证码、设置新密码的流程;抓包把手机号参数换成目标号段批量跑,直接改掉了 13333333333 的密码。
测试动作拆开就三件事:“发验证码”和“校验验证码”两个包分别抓;逐个改参数,手机号、userId、token 先换成受害者的再看;看响应里有没有把验证码回显出来。
0x07 注册功能
注册和找回密码高度相似:任意用户注册、覆盖已存在账号、注册时改角色越权、注册接口注入。注册出来的账号还是一张越权的入场券,顺手拿它把后面的接口权限测一遍。
0x08 历史漏洞
登录框背后是整套组件,版本泄露或者指纹一对上就别绕弯路了。Shiro 先看 rememberMe:登录返回包里有 rememberMe=deleteMe 基本就能确认,接着上反序列化链;Struts2 直接打 /login.action 的 OGNL;还有 Fastjson、log4j2、老版本 CMS、Weblogic/Tomcat 管理口令。跑现成的成本最低、回报最高。
0x09 端口扫描
Nmap 全端口扫描:
nmap -sS -A -p 1-65535 <IP>
扫到 22、21、23、3306、6379、9200 这些别放过:ssh 弱口令、ftp 匿名、mysql 弱口令、redis 未授权、es 未授权。Web 正面打不动的时候,旁路往往就是突破口。
0x10 JS 信息泄露
F12 打开 Sources 和 Network,在 JS 里搜三个关键词:api、admin、test,再补搜 password、token。硬编码的测试账号、内部接口、没做鉴权的页面,经常就躺在里面。工具用 URLFinder 一把梭,顺带把 sourcemap(.map)也拉下来看看——还原出来的源码比混淆过的 bundle 好读太多。
写在最后
这份清单里没有一个高级技巧,全是在把功能点当成“正常用户会走的所有路径”重新走了一遍:登录会不会记住密码?“忘记密码”会不会发短信?验证码提交失败后还能不能复用?页面加载时前端偷偷请求了哪些接口?这些问题不需要什么工具,只需要坐下来把页面点透。
真正拉开差距的一是肯把请求包翻到底——账号正确和错误时返回的那一行提示差异,往往就是用户名枚举的全部线索;二是习惯留原文——改响应码、改字段、把验证码置空,这类手法都得先有一个正常的包做对照,才知道改哪里;三是不放过“意外”——目录扫出来的 phpmyadmin、JS 里的测试账号、万能密码登进去的数据库,通常都不是扫描器报出来的,而是顺手多点了一下。
从防御视角看,这类问题的根子都一样:前端把校验写得太实,后端把校验做得太虚。失败提示统一成一句话、验证码用后即焚、登录态和响应码在服务端判定、测试账号和备份文件永不上生产、JS 里不出现任何内部接口——上面十一种打法,能挡住的其实就是这几句。
登录框虽小,藏的东西不少。下一次见到只有一个登录框的站,别急着收工,把它点穿。
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。








评论