【渗透测试】web端姿势-前端利用
目录
前端
存在问题
关于密码重置
jwt攻击
jwt介绍
工具使用
学习来源
前端
存在问题
任意用户注册
未授权访问,直接访问对应链接,可得到系统权限
可爆破用户名
爆破用户名,密码
用户名注入
万能密码
用户名Xss
修改返回包信息,登入他人账户
修改cookie中的参数,如user,adminid等
后台登录参数修改为注册参数/reg、/register、/sign等发送验证码后回显到返回数据包中
登录失败返回包修改,例如“false”改为“true”,响应数值“0”改为“1”,登录后台。如果存在这些情况,一般前端Js、Html也可以直接找到后端对应的各类未授权访问接口
Js、Html存在用户名密码等注释信息
根据系统查找系统对应的默认账号密码登录
有些系统的密码为空,密码不填或者抓包后置空发送
存在信息泄露手机号、邮箱、人名等可以到社工库查找对应的密码
页面无注册功能,通过Js或Html找到隐藏注册接口注册登录
注册时验证码没有做好绑定,删除验证码参数,或者验证码参数为空可以注册
验证码没有做好绑定,发送了验证码但是后端接收到任意验证码都可以注册、爆破、重置密码等
社工字典密码生成 GitHub - zgjx6/SocialEngineeringDictionaryGenerator: 社会工程学密码生成器,是一个利用个人信息生成密码的工具(html端)
GitHub - Mebus/cupp: Common User Passwords Profiler (CUPP)(Linux工具)
关于密码重置
验证码不失效:爆破验证码
重置一个账户,不发送验证码,设置验证码为空发送请求。
发送验证码,查看相应包,在包中看到验证码
验证码生存期的爆破
修改相应包为成功的相应包进行发送
跳过验证步骤:先正常修改密码走一遍,记录通过验证码后输入密码的页面信息,如url,再重新输入用户名,在验证码页面输入url跳转到修改密码页面进行修改。
验证码未绑定用户:两个账户,重置别人密码时,替换验证码为自己正确的验证码
重置别人密码时,抓包把手机号替换为自己的手机号或者邮箱地址
重置自己的成功时,同意浏览器重置别人的,不发验证码
替换用户名,ID,cookie,token参数等验证身份的参数
通过越权修改他人的找回信息如手机/邮箱来重置参数隐藏:输入用户名时抓包,复制用户参数,输入正确密保跳转到修改密码页面,输入密码进行修改拦截数据包发现用户参数不可见,在密码前面添加用户参数,并把参数值修改为他人参数值,即可修改他人密码。
参考自:(3条消息) 逻辑漏洞 - 密码重置_J0hnson666的博客-CSDN博客_密码重置漏洞
jwt攻击
jwt介绍
JSON Web Token(JWT)是一个开放标准(RFC 7519),用于在双方之间安全地表示声明。
JWT是一种无状态的认证机制,通常用于授权和信息交换。JWT只通过算法实现对Token合法性的验证,不依赖数据库,Memcached的等存储系统,因此可以做到跨服务器验证,只要密钥和算法相同,不同服务器程序生成的Token可以互相验证,一旦我们掌握了token的构造,便可模仿任何已知用户进行操作。
jwt结构:头部(header),有效载荷(payload),签名(signature)。通常的形式为:xxxxx.yyyyy.zzzzz。
头部:头部用于描述关于该JWT的最基本的信息,通常由两部分组成:令牌的类型(即JWT)和所使用的签名算法。例如:{ "alg": "HS256", "typ": "JWT" }。Alg代表加密方式,修改用户名等身份认证的地方,把HS256设置为none生成token发送请求,使用python的pyjwt模块
有效载荷:令牌的第二部分是载荷,放置了 token 的一些基本信息,以帮助接受它的服务器来理解这个 token。同时还可以包含一些自定义的信息,用户信息交换。例如:{ "sub": "1234567890", "name": "John Doe", "admin": true }
签名:要创建签名部分,您必须获取编码的头部,编码的有效载荷,密钥,头部中指定的算法,并对其进行签名。
例如,如果要使用HMAC SHA256算法,则将通过以下方式创建签名:
HMACSHA256(base64UrlEncode(header) + "." +base64UrlEncode(payload),secret)
签名用于验证消息在整个过程中没有更改,并且对于使用私钥进行签名的令牌,它还可以验证JWT的发送者是它所说的真实身份。
JSON Web Tokens - jwt.io
对于未签名jwt:将原JWT串解码后修改用户名等身份认证的地方,生成新token发送请求
工具使用
jwt_tools:
GitHub - ticarpi/jwt_tool: A toolkit for testing, tweaking and cracking JSON Web Tokens
下载、配置:
$ git clone https://github.com/ticarpi/jwt_tool
$ python3 -m pip install termcolor cprint pycryptodomex requests
$ cd jwt_tool
$ python3 jwt_tool.py -h
$ python3 jwt_tool.py eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwicm9sZSI6InVzZXIiLCJpYXQiOjE1MTYyMzkwMjJ9.1rtMXfvHSjWuH6vXBCaLLJiBghzVrLJpAQ6Dl5qD4YI -d /usr/share/wordlists/dirb/common.txt -C
对应的靶场webgoat里面有漏洞练习,可以进行测试。
学习来源
Web登录认证类漏洞总结 | 技术精选0137 (qq.com)
JWT攻击手册 - Bypass - 博客园 (cnblogs.com)