登录框攻击面思路

登录框攻击面思路

参考链接:

1、用户名

' => 没反应

" => 密码错误

存在SQL注入==> 尝试万能账户 ' or '1' = '1 => 爆破密码

例子:

    • (1) 正常登录报错

    • (2) 加一个引号

    • (3) 修改payload,以此返回数据包不同来判断存在SQL注入。

2、逻辑漏洞

    • 短信轰炸/邮箱轰炸

    • 一般在发送验证码后抓包,不断 repeate 即可。

    • 绕过:
        • 添加空格或者 \n\r\r\n
            • mobile1=XXXXXX 变成 mobile1= XXXXXX 或者 mobile1=XXXXXX 或者 mobile1=XXXXXX\n

            • 空格 或者 \n 可以叠加,比如:mobile1=XXXXXX\n\n

        • 参数污染绕过
            • 参数污染,就是说后台发送短信的时候会取数字那部分,当你混入其他字符之后绕过了对已经发送的手机号码的限制的校验。

            • tel=+)WAFXE#!18888888888&uid=11

        • +86 或者 086
            • mobile=+86 18888888888 或者 mobile=086 18888888888

        • 变量污染绕过
            • 后台可能校验了第一个变量的内容是否超过限制,但是当数据包在传递到后台过去的时候,如果多个参数名是一样的时候,是会以第二个、第三个、第四个…最后那个参数为基准去传递,因此绕过了后台的限制。

            • mobile=17777777777(绕过限制的号码)&mobile=18888888888(真正接收短信的号码)

        • 数据长度绕过
            • 手机号码的定义是 11 位数,但是后台没有对传递的手机号码做校验长度,比如123=0123=00123,通过该方法来进行一个手机号码的绕过: 【狗的一个漏洞】

        • 修改变量参数绕过
            • 比如这样的请求参数:terminal=01&Mobile=XXXXXXX,前面的接口是调用短信发送内容的接口,比如 terminal 参数值为 01 是调用注册成功的短信提示,02 是调用密码重置成功的短信提示,03 是调用注册成功的短信提示等等,当修改这个接口值时,也就达到了短信轰炸或邮箱轰炸的目的。

            • 比如 apitype=1&phone=18888888888, 1 代表注册接口,2 代表注册成功接口,3 代表密码重置接口,那我们就可以爆破 apitype 参数,这样一个手机号就会不断的经历注册,注册成功,密码重置成功的短信轰炸。所以,在漏洞挖掘的时候,关注参数以及参数之间的关联是十分必要的。

            • 比较常见就是发送验证码的时候前端带入一个状态,通过修改这个状态可以来绕过系统的限制,如已注册的用户不能发送短信或者相反未注册的用户不能发送短信
                • mobile=188&checkFlag=Flase 改成 mobile=188&checkFlag=True

        • 修改响应包
            • 比如发送成功后返回值是 success ,发送失败的返回值是 error ,那么当达到次数后,可以通过修改返回值为正确的返回值:success,从而绕过限制,达到发送成功的目的。

        • 修改IP绕过短信&邮箱轰炸限制
            • 有些同样是验证当前IP的,如果当前IP短时间内获取短信或邮件频繁或者达到一定次数的话就会出现限制,那么就可以利用修改IP或者代理IP来进行绕过限制。

        • 利用大小写绕过邮箱轰炸限制:前面说到了关于加空格的绕过限制,邮箱也可以用,但还有一种方式可以绕过邮箱轰炸限制,那就是通过修改大小写,通过修改邮箱后面字母的大小写就可绕过限制,比如参数是这样的:Email=XXXX@qq.com 当次数达到限制时,随便修改一个字母为大写:Email=XXXX@Qq.com 就可绕过限制。

        • 抓包删除或修改cookie信息(Cookie:xxxxxxxxx全部删掉或删除中间一部分xxx) -> 空数值发包多次

image

    • 任意用户注册

    • 爆破注册页面的验证码,即可任意用户注册

    • 通过邮箱验证,构造验证链接
        • 先按正常流程发送验证链接到邮箱,去邮箱查看验证链接格式,可能就是由注册时所填信息构成的 -> 再次注册新账户,直接构造验证链接,用浏览器打开即可成功验证。

    • 任意密码重置

    • 随意输入验证码 -> 发包 -> 返回包,修改{"status":0}{"status":1} -> 成功重置密码

    • 验证码为4位的话,可抓包爆破验证码

    • wooyun-2013-039809

    • 不完全的登录(登录绕过)

    • 在登录页面,随意输入任意的账户和密码,然后抓包,修改返回包,骗过前端,从而获得一定的权限,这种登录绕过的方式很可能导致后台功能不完善或者数据为空 -> 将标识身份的信息制空,可以看到许多敏感数据。
        • 修改响应包状态码为200直接绕过

        • 修改响应包内容绕过
            • 🌰 登录失败时,返回包中有数据 0|sjhdfao -> 思考 0 有什么意义? -> 查找js文件,发现判断置 1 的时候可以成功登录。

3、禁用JS插件,查看页面源代码12

    • 禁用JS和查看页面源代码,有时候会有意想不到的惊喜。

    • 例如某些重定向,某些权限缺失,在我们未授权进入后台一瞬间,就会重定向回去登录页面,而如果此时我们禁用了JS,则可以进行一定权限的控制。

    • Ctrl + U 查看源代码,在源代码里可能会泄露一些秘密,例如测试账号、一些网站的后台结构、JS接口、源码仓库地址等。

4、URL重定向

    • 一般出现在以下参数里,而登录时常常也有这个URL重定向到后台网站,我们修改这个后台网站的URL即可跳转到任意页面,可用于钓鱼页面的制作

    • 常见URL跳转参数
        • redirect

        • redirect_to

        • redirect_url

        • url

        • jump

        • jump_to

        • target

        • to

        • link

        • linkto

        • Domain

5、明文传输/用户名可枚举/爆破弱口令

    • 用户名可枚举

    • 因为页面对所输入的账号密码 进行的判断 所回显的数据不一样
        • 举例:用户名不存在,密码错误

        • 修复:用户名或密码错误

    • 爆破弱口令

    • 防火墙默认账户密码
      image

image.png

6、扫描

    • 目录扫描

    • 御剑

    • 多次爆破,遍历访问多级域名的目录

    • js扫描

    • chrome插件:FindSomething

    • 多次爆破,遍历访问多级域名的JS

    • nmap扫描

    • 举例:使用Nmap对批量网段的探测,获得了一个登陆网站,并且在网站中遍历目录,获得了一个test页面,最后在这个页面的JS文件中,获取到了一个接口,通过这个接口重置了主登录页面的密码。

7、框架漏洞

寻找CMS,或者网页框架,以及某些厂商的服务存在漏洞。可以提取特征指纹,去fofa找同类型站打。

8、各种未授权、免登录进入后台

9、验证码问题

    • 验证码可修改接受者
      可将A账号的修改密码验证码接受者修改为B,这样A账号的验证码就会发到B的手机上,从而B可以重置A的账号密码
      例如A账号moblephone=13333888888 ,这点是可控的,我们修改为moblephone=18888888888,即可收到A账号的重置验证码

image.png

    • 登录验证码可绕过
      可能存在万能验证码0000或者9999,不过此类情况较为罕见。更多的情况为修改返回包,可能会出现可绕过逻辑判断。

    • 验证码可爆破
      验证码失效的时间过长,并且为纯数字或者过短字符,导致可被爆破。

    • 验证码回显前端
      有的网站验证码会回显到前端,只需要抓包即可获得验证码

    • 验证码复用
      验证码不会自动刷新,导致我们可一码多次使用,我们只需要输入一次验证码就可以让我们能够开始进行暴力破解。

    • 验证码识别

    • 识别验证码burp插件:https://github.com/f0ng/captcha-killer-modified
        • 源码zip和jar包都要下载。

    • 验证码插件使用教程:https://www.cnblogs.com/4geek/p/17145385.html

    • 下载依赖库:网上看到的教程都说 ddddocr 不支持 Mac M1,M1用户需要自己编译 onnxruntime 才行,于是我找到了这个项目 https://github.com/cansik/onnxruntime-silicon ,亲测有效。

pip3 install onnxruntime-silicon
pip3 install -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com ddddocr aiohttp

© 版权声明
THE END
喜欢就支持一下吧
点赞10 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容