TryHackMe-渗透测试2_log

身份验证绕过

第一个点:利用用户注册系统爆破用户名,如果某个用户名已注册则系统可能会回显已注册的信息

通过ffuf爆破,-mr匹配回显信息,以达到输出已注册的用户名,字典:/usr/share/wordlists/Seclists/Usernames/Names/names.txt

第二个点:通过刚刚得到的用户名,去用户登录系统爆破密码

首先我们注册一个账户,然后尝试登陆并故意输入错误密码点击登录,抓包发现status code是200,response中有回显信息密码错误;

然后再输入正确密码登录,登录成功,code是302跳转:response header的location字段跳转至:/customers,查看response header的时候无意发现了

Set-Cookie: admin=false;......

这玩意不用猜都知道有什么用,我们先不管;

先通过ffuf爆破刚刚爆破得到的用户名的密码

ffuf -u http://10.10.48.237/customers/login -H "Content-Type: application/x-www-form-urlencoded" -X POST -w ./usernames.txt:usr -w /usr/share/wordlists/seclists/Passwords/Common-Credentials/10-million-password-list-top-100.txt:pwd -d "username=usr&password=pwd" -fc 200

过滤status code为200的,剩下302的就是跳转成功的,即登录成功,最终获得正确密码

逻辑缺陷利用:

在这个thm的room中,提到一个点就是,php的$_REQUEST post的data优先级高于get的query string

根据此特点,我们进入靶机的重置用户密码系统

这里也是经过我反复测试get、post传参。最终得出结论:

1.后端首先通过$_GET获取email参数进行逻辑判断
2.上述操作后,如果通过,则后端再通过$_POST获取username,然后与数据库比对,判断email是否与username匹配
3.上述操作后,如果匹配,则使用$_REQUEST获取email参数然后发送重置密码邮件

问题就出在了第三点,只要我们在post的表单中手动添加一下非预期的email地址,就可已在第三点中将原本应该从get query_string取值,变成了从post data中取值,这个时候是绕过了前两点的。

构造:

curl 'http://ip:port/customers/reset?email=某个用户的email' -H 'Content-Type: application/x-www-form-urlencoded' -d 'username=某个用户的用户名&email=黑客的邮箱'

这样我们就顺利的将某个账号的重置密码邮件发送到我们所指定的邮箱里去。

最后一个点:cookie篡改

就是利用刚刚发现的cookie并进行篡改和解密

也没什么有意思的,挺简单,

https://crackstation.net/

https://www.base64encode.org/
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Sugobet

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值