老套路,BURP抓包
发现提交的鉴别信息中出现了token字段,发送到REPEATER模块,看看回显!
如果用户名和密码是正确的呢?会有什么样的回显呢?
登录成功了!此时,我有了个想法,如果使用登录成功的token和错误的用户名或密码,会如何呢?
继续测试!!!!
发现回显是主页!!无登录错误信息和登录成功信息!
接下来,我们把修改的用户名和密码,改成正常的用户名和密码信息,发现还是无法正常登录,回显的界面还是无任何成功或者失败信息!
进而,推断,TOKEN信息无法复用,在加入TOKEN信息后,在无法猜测TOKEN的情况下,无法正常的进行暴力破解!!!!
但是,这只是我的想法,看了大佬的WP,我感觉自己TOO YOUNG TOO NAIVE!
接下来,我将由我自己推翻以上的,我自己的说法!!!!
先来补充一些小知识!!!!!
小知识:
token字段:token是由服务端生成的一串字符串,作为客户端向服务端请求的一个标识。在前端使用用户名/密码向服务端发送请求认证,服务端认证成功,那么在服务端会返回正确的token给前端,前端在每次请求时会带上服务端发来的token来证明自己的合法性。如果这个 Token 在服务端持久化(比如存入数据库),那它就是一个永久的身份令牌。
1、Token 完全由应用管理,所以它可以避开同源策略
2、Token 可以避免 CSRF 攻击
3、Token 可以是无状态的,可以在多个服务间共享
经过我的测试发现几个问题:
1、这个TOKEN是不断变化的,即使用户名和密码都对,每次返回的TOKEN也都不一样
2、当用户名和密码正确时,但是TOKEN不正确时,也无法登录。但是,在这种情况下,请求包对应的响应包中包含的TOKEN的VALUE,把这个VALUE值重新的放回构造的请求包中,重新发送,这个响应包回显中就提示登录成功。
3、这个思路即是递归思路,即构造变量,但是调用自身请示包的响应报中TOKEN中的VALUE值,即达到爆破的目标。
以下,即是正确的方式:
抓包后,传入INTRUDER模块,清除所有变量,
然后将PASSWORD和TOKEN两个字段设置为变量。
设置攻击类型为PITCHFORK,草叉类型,即两个变量同时修改。
PAYLOAD1,其中PASSWORD字段直接导入字典。
接着,TOKEN字段需要通过在RESPONSE报文中获得,所以需要进行以下配置:
PAYLOAD2:类型设置为递归搜索:
然后,在OPTIONS-GREP-EXTRACT
TIPS:这些设置能被用于从响应报文中提取有用的信息到攻击结果表中。
首先点击,获取回复的键:如右下图:
设置正则匹配:设置开头以及结尾匹配出TOKEN字段:点击OK
接着点击开始攻击:
错误提示如下:
上面的信息为:递归查找的PAYLOAD无法用于多个请示线程,所以这里需要将线程,修改为1。
成功:
来源:freebuf.com 2021-07-13 08:23:23 by: 知非知非知非
请登录后发表评论
注册