验证码安全
核心原理:验证码生成、发送、验证环节的逻辑缺陷。
主要危害:导致账户被盗、短信轰炸、用户信息被遍历、执行任意用户操作。
常见漏洞:
爆破:验证码无尝试次数限制,且在有效期内不变。
识别:验证码过于简单,可被OCR工具自动识别。
复用:服务器未使验证码一次性失效,旧验证码可重复使用。
回显:验证码直接出现在客户端请求或响应中。
逻辑绕过:通过修改参数、跳转步骤等方式直接跳过验证码校验环节。
Token安全
核心原理:身份验证或防重放令牌(Token)在生成、传递、验证过程中存在缺陷。
主要问题:攻击者可预测、窃取或篡改Token,从而绕过身份验证。
常见漏洞:
爆破/预测:Token存在规律(如递增、基于时间),可被预测或暴力枚举。
客户端回显:敏感Token在HTTP请求/响应中明文传输,易被截获。
固定/复用:Token长期不变或可重复使用,导致会话固定攻击。
靶场pikachu:
Burte Force(暴力破解)概述
“暴力破解”是一攻击具手段,在web攻击中,一般会使用这种手段对应用系统的认证信息进行获取。 其过程就是使用大量的认证信息在认证接口进行尝试登录,直到得到正确的结果。 为了提高效率,暴力破解一般会使用带有字典的工具来进行自动化操作。
理论上来说,大多数系统都是可以被暴力破解的,只要攻击者有足够强大的计算能力和时间,所以断定一个系统是否存在暴力破解漏洞,其条件也不是绝对的。 我们说一个web应用系统存在暴力破解漏洞,一般是指该web应用系统没有采用或者采用了比较弱的认证安全策略,导致其被暴力破解的“可能性”变的比较高。 这里的认证安全策略, 包括:
1.是否要求用户设置复杂的密码;
2.是否每次认证都使用安全的验证码(想想你买火车票时输的验证码~)或者手机otp;
3.是否对尝试登录的行为进行判断和限制(如:连续5次错误登录,进行账号锁定或IP地址锁定等);
4.是否采用了双因素认证;
...等等。
千万不要小看暴力破解漏洞,往往这种简单粗暴的攻击方式带来的效果是超出预期的!
你可以通过“BurteForce”对应的测试栏目,来进一步的了解该漏洞。
从来没有哪个时代的黑客像今天一样热衷于猜解密码 ---奥斯特洛夫斯基
一.1.基于表单的暴力破解
如果我们看到了左上角的提示,直接输入就行,但是对于以后的题目不会有这样的提示,我们可以直接用自己平时fuzz脚本去试试跑一下也能跑出来,但是为了减少我爆破的时间直接使用他提示的语句来组成字典这里一共有三个用户: admin/123456 pikachu/000000 test/abc123
2.抓包放到bp爆破就行
二.验证码绕过(on server)
1.随便输入抓包看看
2.利用前面爆破出来的账号和密码来登录试试
3.发现这个验证码没有变化那么直接手动添加正确验证码
三.验证码绕过(on client)
1.还是一样的思路输入前面爆破出来的账号和密码然后来抓包
2.发现输入正确的密码账号就行,而且你抓包的时候就能看到完整的一个全部验证码
四.token防爆破?
token是由服务端生成的一串字符串,作为客户端向服务端请求的一个标识。在前端使用用户名/密码向服务端发送请求认证,服务端认证成功,那么在服务端会返回token给前端,前端在每次请求时会带上服务端发来的token来证明自己的合法性。
1.还是要利用bp的爆破模块下的宏功能
这里出现了csrf token错误,就是说服务端返回给你的token不是你这个,然后不同的密码返回的token值不一样,这就需要关联两个变量用到pitchfork模式
设置宏定义。点击option选项,下拉找到Grep Extract栏,点击Add,在弹出的窗口中点击Refetch response发一次包并获得返回数据,在下面输入栏处输入token,找到返回的token值
<input type="hidden" name="token" value="115056943e6fdac6dd687766619" />
然后选中token值并复制,同时在选中的情况下点击OK。然后将线程数设置为1,并在最下方Redirections重定向栏,选择Always
最后设置Payload,这里第1个Payload依然和前面一样选择对应的字典即可。第2个即token变量则选择Recursive grep递归搜索,最后将前面复制的token值粘贴在下方文本框
成功