暴力破解之token绕过
- 什么是token
- 当用户登录时,服务器会生成一个唯一的 Token 并返回给客户端。客户端在后续的请求中携带这个 Token,服务器通过验证 Token 的有效性来确定用户的身份和权限,从而允许或拒绝用户对特定资源的访问
- 进入靶场,随机输入用户名与密码,抓包查看
- 可以发现在原来的基础上附加了一个token值,发送至重发模块,查看token值的生成以及验证规则
- 可以发现,当进行重发时,显示token值错误,即token值是动态更新的,那么客户端是如何获取这个由于登录错误而产生的新的token的呢?查看返回包的token字段
- 可以发现请求包中的token值与响应包中的token值是不同的,那么这个token值是否是客户端下一个请求的正确token值呢?很简单,将响应包的token值复制,然后在下一个请求包中将此token加上,重发
- 可以发现,页面不再是token错误,而是显示登录错误,那么token值的传递规则就很清楚了,当上一个验证登录错误后,服务端会传回一个新的token值,作为下一次登录的token,那么接下来就很简单了,咱只要制定一个规则,在每次爆破之前,获取上一个响应包中的token值进行登录即可,那么接下来,让我们进入BP的宏制作
- BP的宏制作
- 首先需要确定在历史中,有服务端的返回包,否则无法获取上一次返回的token
- 点击当前页面右上角的“setting”,然后点击 project -> sessions 进入如下页面
- 可以看见当前页面 "Macros",这就是BP的宏制作,点击 "add",设置自己的宏规则,选择带有token返回的URL,然后点击 "OK"
- 此宏的名称自己随意设置(这里选择默认的,Macro 1),然后选择刚刚添加的URL,并且选择其 "Response"包,然后点击 "Configure item",进行配置
- 点击右下角的 "add"
- 在"
arameter name" 填入正确的参数名,即token,然后在下面搜索栏输入token,寻找响应包返回的值,然后选中,此时会自动为你生成自定义参数的位置,当然,你也可以自己手动输入,然后点击一直点击OK
- 可以看到此时我们已经完成了对此次爆破的token获取规则的宏制作
- 当然,此时规则还没有生效,我们需要对当前页面的 "session handing rules"(会话处理规则)进行添加我们刚刚设置的规则,点击 "Add"
- 然后,对于"Rule description"(规则描述),可以自行选择更改,然后在下面的"Rule actions"(规则行为)进行添加,表示当进行请求时,你所自设的"Rule actions"会被依次执行,在本次实验中,表示对响应包token的抓取
- 选择"Run a macro"(运行宏)
- 然后选择我们制定的宏规则"Macro 1"选择 "Update only the following parameters and headers"(只更新以下参数和头文件),点击"Edit"(编辑),点击 "Add" ,将我们的全局变量token加入其中,然后点击"close",点击"ok"
- 然后选择"Scope"(范围),进行执行宏的范围规定
- 在"URL scope"(URL范围)中选择"Include all URLs"(包括所有的URL),在这里由于我们需要对所有服务器返回的URL响应包中的token进行抓取,故作此选择,若有别的需求,也可以选择其他选择,然后点击"ok"
- 可以发现已经更新了我们制定的规则,接下来我们对目标服务器进行请求时,会自动执行此规则
- 经过上述的步骤,我们完成了宏的制作,我们可以在重发模块来进行重发,看是否自动更新了token,可以发现,我们两次重发token值都成功更新,并且响应包也没有提示token值错误,意味着宏制作成功,可以进行用户名和密码的爆破
- 由于当前请求需要获取上一个请求返回的响应包中的token,因此必须为单线程执行,否则可能会打乱获取token的顺序,导致出错
- 在"Intruder"模块下的"Resource pool"进行配置,选择"Create new resource pool"(创建新的资源池),"Name"可以自定义,也可以选择默认,选择下面的"Maximum concurrent requests"(最大并发请求数),并设置1,即单线程爆破,然后选择"Automatic throttling"(自动调节)即可
- 然后进入"Settings",更改此模块下的"Redirections"(重定向),更改为"Always",这是因为如果爆破成功,需要进行其他跳转,如登录后跳转到用户主页 ,如果不跟随重定向,设置的 token 宏可能只作用于初始请求,后续重定向后的请求无法携带正确 token,导致请求失败
- 都设置完成后进行爆破,获取正确的用户名和密码,登录成功(中间的爆破步骤请看个人主页的第一个作品)
- 进入网页,成功登录
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |