freeBuf
主站

分类

云安全 AI安全 开发安全 终端安全 数据安全 Web安全 基础安全 企业安全 关基安全 移动安全 系统安全 其他安全

特色

热点 工具 漏洞 人物志 活动 安全招聘 攻防演练 政策法规

点我创作

试试在FreeBuf发布您的第一篇文章 让安全圈留下您的足迹
我知道了

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

如何使用Padre对CBC模式加密执行Padding Oracle测试
2023-12-08 11:52:27


关于Padre

Padre是一款功能强大的高级Padding Oracle安全测试工具,在该工具的帮助下,广大研究人员可以轻松针对CBC模式加密执行Padding Oracle攻击测试,以审查和测试目标加密模式的安全性。

关于Padding Oracle

Padding的含义是“填充”,在解密时,如果算法发现解密后得到的结果,它的填充方式不符合规则,那么表示输入数据有问题,对于解密的类库来说,往往便会抛出一个异常,提示Padding不正确。Oracle在这里便是“提示”的意思,和甲骨文公司没有任何关系。

对于加密算法来说,它们是基于等长的“数据块”进行操作的(如对于RC2,DES或TripleDES算法来说这个长度是8字节,而对于Rijndael算法来说则是16、24或32字节)。但是,我们的输入数据长度是不规则的,因此必然需要进行“填充”才能形成完整的“块”。

功能介绍

1、运行速度快,支持并行并发;

2、支持令牌解密;

3、支持加密任意数据;

4、Padding Oracle自动化指纹;

5、密码块长度自动化检测;

6、如果在操作过程中出现错误故障,Padre将提供可行的解决方案建议;

7、支持GET/POST参数和Cookie中的令牌;

8、灵活的编码规则与规范(Base64、Hex等);

Padding Oracle攻击影响

1、泄露加密会话信息;

2、身份认证绕过;

3、提供服务器端信任的伪造令牌;

4、其他广泛的攻击面;

工具安装

方便起见,广大研究人员可以直接访问该项目的【Releases页面】下载对应操作系统版本的预编译Padre代码。

除此之外,我们也可以在本地设备上安装并配置好Go语言环境,并使用源码构建Padre:

go install github.com/glebarez/padre@latest

工具使用

Usage: padre [OPTIONS] [INPUT]

 

INPUT:

解密模式:输入加密数据

加密模式:输入要加密的明文数据

如果不提供,则从STDIN读取

 

NOTE: binary data is always encoded in HTTP. Tweak encoding rules if needed (see options: -e, -r)

 

OPTIONS:

 

-u *required*

目标URL,使用$字符定义令牌占位符

-enc

加密模式

-err

正则表达式模式,HTTP响应Body将于该正则表达式匹配以检测Padding Oracle,不提供则执行自动化指纹检测;

-e

编码二进制数据,支持的值有Base64和LHex,默认为Base64;

-cookie

在HTTP请求中设置的Cookie值,使用$可标记令牌占位符;

-post

执行POST请求的字符串数据,使用$可标记令牌占位符;

-ct

POST请求的Content-Type。如果不指定,工具将自动检测Content-Type

-b

密码块长度,不提供该参数则执行自动化检测,支持的值有8、16、32,默认为16;

-p

与目标服务器建立的并行HTTP连接数量 [1-256],默认为30;

-proxy

HTTP代理。例如use -proxy "http://localhost:8080"可使用Burp或ZAP做代理;

工具使用场景

如果我们找到了一个可疑的Padding Oracle,并且加密数据存储在一个名为SESS的Cookie中,我们就可以使用下列命令来执行Padre:

padre -u 'https://target.site/profile.php' -cookie 'SESS=$' 'Gw3kg8e3ej4ai9wffn%2Fd0uRqKzyaPfM2UFq%2F8dWmoW4wnyKZhx07Bg=='

如果确定了Padding Oracle上下文,那么Padre将会自动检测HTTP响应指纹,如果服务器确实存在安全漏洞,工具将会把提供的令牌解密为下列形式:

{"user_id": 456, "is_admin": false}

这样一来,我们就可以实现权限提升了。

我们还可以尝试先生成我们自己的加密数据,然后解密回明文数据:

padre -u 'https://target.site/profile.php' -cookie 'SESS=$' -enc '{"user_id": 456, "is_admin": true}'

上述命令将生成另一个加密数据集,大致形式如下(Base64):

dGhpcyBpcyBqdXN0IGFuIGV4YW1wbGU=

现在我们就可以打开浏览器,然后将SESS Cookie值设置成上面的加密数据,然后加载原始的Oracle页面,你将会看到你的权限提升至了管理员权限。

工具使用演示

许可证协议

本项目的开发与发布遵循MIT开源许可证协议。

项目地址

Padre:【GitHub传送门

参考资料

https://blog.skullsecurity.org/2013/a-padding-oracle-example

https://blog.skullsecurity.org/2016/going-the-other-way-with-padding-oracles-encrypting-arbitrary-data

# padding oracle # 加密 # 权限提升 # Padding Oracle攻击
免责声明
1.一般免责声明:本文所提供的技术信息仅供参考,不构成任何专业建议。读者应根据自身情况谨慎使用且应遵守《中华人民共和国网络安全法》,作者及发布平台不对因使用本文信息而导致的任何直接或间接责任或损失负责。
2. 适用性声明:文中技术内容可能不适用于所有情况或系统,在实际应用前请充分测试和评估。若因使用不当造成的任何问题,相关方不承担责任。
3. 更新声明:技术发展迅速,文章内容可能存在滞后性。读者需自行判断信息的时效性,因依据过时内容产生的后果,作者及发布平台不承担责任。
本文为 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者
文章目录