如何使用Padre对CBC模式加密执行Padding Oracle测试

VSole2024-01-06 17:26:15


关于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


cookiepadding
本作品采用《CC 协议》,转载必须注明作者和本文链接
ProxyOracle漏洞分析
2021-12-07 14:03:00
NO.1 前言2021年8月份,oracle又公开了代理漏洞ProxyOracle、ProxyShell。本文则分析ProxyOracle具体的一些攻击细节。Padding Oracle攻击根据加解密时是否用同一组密钥,可以分为对称加密和非对称加密。对称加密中又存在流加密与分组加密两种加密方法。
一次成功的Shiro Padding Oracle需要一直向服务器不断发包,判断服务器返回,攻击时间通常需要几个小时。因为这些程序没有对发包失败抛出异常的情况做出处理,从而导致工具停止工作。最终,攻击成功了,我虚拟机下花了不到1小时共计完成,但是在真实生产环境测试,攻击成功一次DNS或者JRMPClient攻击,程序需要跑大约4个小时左右,2次攻击加起来近9个小时。
Padre是一款功能强大的高级Padding Oracle安全测试工具,在该工具的帮助下,广大研究人员可以轻松针对CBC模式加密执行Padding Oracle攻击测试,以审查和测试目标加密模式的安全性。
渗透测试面试指南
2022-05-21 22:11:08
前言一开始会问问你在工作中负责的是什么工作,参与过哪些项目。还有些会问问你之前有没有护网的经历,如果没有的话一般都会被定到初级。下面就是一些技术上的问题了SQL注入的分类Boolean盲注。正向代理即是客户端代理, 代理客户端, 服务端不知道实际发起请求的客户端.
面试题记录
2021-12-12 06:44:03
前言一开始会问问你在工作中负责的是什么工作,参与过哪些项目。还有些会问问你之前有没有护网的经历,如果没有的话一般都会被定到初级。下面就是一些技术上的问题了SQL注入的分类Boolean盲注。正向代理即是客户端代理, 代理客户端, 服务端不知道实际发起请求的客户端.
对blackhat和defcon一些感兴趣的议题做了一些小结。静态分析blackhat里面一个静态分析引擎的
js逆向一直没有相关了解,虽然目前渗透遇见的不是很多,大多数遇见的要么不加密,要么无法实现其加密流程,不过最近看到了一个较为简单的站点正好能够逆向出来,就做了简单记录。本文旨在介绍js逆向的一些基础思路,希望能对初学js前端逆向的师傅有所帮助。
这篇文章主要是通过前端JS来寻找接口进行测试,寻找漏洞成功进入后台后,进行后台文件上传html。仅供学习。
这是 CyBRICS CTF 2021 中的一个难度为 Hard 的 Web 题(其实是 Crypto 密码题)。由于作者的某些原因,这个题目在比赛结束都是零解。
C:\Users\bk\Desktop\天府科技云APP\天府科技云服务平台\天府科技云服务平台.apkC:\Program Files\Java\jdk1.8.0_111\bin\jarsigner.exe?文件将解压出来的classes.dex文件拷贝到dex2jar工具文件夹中执行命令:d2j-dex2jar classes.dex执行完毕后,得到反编译而来的classes-dex2jar.jar文件使用jd-gui.exe或者luyten-0.5.4打开 classes-dex2jar.jar文件,得到360安全加固混淆加密的源代码。应同时使用V1+V2签名)6.应用完整性校检将反编译出来源码中修改图片文件名为test.png进行重新生成apk包,命令如下:java -jar apktool.jar b -f?
VSole
网络安全专家