数据库密码配置
/pikachu/inc/config.inc.php 文件配置数据库连接密码
初始化
访问 /pikachu/install.php 初始化
pikachu 暴力破解
基于表单
提示
输入用户名和密码(随便),开启代理拦截
BurpSuite 抓包,发送到 Intruder 模块
为密码添加有效载荷
手动添加可能的密码或载入密码字典
开始爆破,查看验证特殊的返回包
成功爆破密码
用户名未知
随便输入用户名和密码,提交登录请求并拦截
发送到 Intruder 模块
为用户名和密码都添加有效载荷
攻击模式选择 Cluster bomb(集束炸弹)
第一个有效载荷载入用户名字典
第二个有效载荷载入密码字典
成功爆破出三个用户及密码
验证码绕过(Server)
漏洞点
用户名密码随便填写,验证码正确填写
提交请求,BurpSuite 抓包拦截,发送到 Repeater 模块
验证码正确,用户名或密码错误返回以下内容
当验证码和用户名密码都错误时显示验证码错误
而当再次输入刚刚正确的验证码时,显示用户名或密码不存在,说明一次抓包,验证码可重复利用
爆破
将包含正确验证码的登录报文发送到 Intruder 模块
选择 Cluster bomb 模式,为用户名和密码添加有效载荷
第一个有效载荷添加用户名字典
第二个有效载荷载入密码字典,开始爆破
成功爆破出三个账密
验证码绕过(Client)
漏洞点
测试
用户名、密码、当验证码都错误时弹出验证码错误
查看提示
根据提示查看前端代码
直接在浏览器中禁用 JS,随便输入用户名密码,不弹出验证码错误,说明成功绕过
爆破
BurpSuite 抓包爆破,同之前一样
成功爆破
token
原理
token机制流程
客户端使用用户名和密码请求登录。
服务端收到请求,验证用户名和密码。
验证成功后,服务端会生成一个token,然后把这个token发送给客户端。
客户端收到token后把它存储起来,可以放在cookie或者Local Storage(本地存储)里。
客户端每次向服务端发送请求的时候都需要带上服务端发给的token。
服务端收到请求,然后去验证客户端请求里面带着token,如果验证成功,就向客户端返回请求的数据。
每次刷新页面都会产生新的token
爆破 admin 密码
输入用户名 admin,随便输入密码,提交,BurpSuite 拦截,发送到 Intruder 模块
选择 Pitchfork 模式,并为密码、token 值添加有效载荷
在 Options > Grep-Extraxt 中点击 add
点击 fetch response 获取回复
复制返回报文中的 token 值
并点击 ok
payload 1 正常设置密码字典
payload 2 设置为 Recursive grep(正则表达式,可以过滤字符),将复制的 token 粘贴到 Payload Options 下的 Initial payload for first request 中
设置单线程攻击(high模式防止暴力破解禁止多线程,一个token值只能用于一次登录)
开始攻击,成功爆破