我目前执行ASP渗透测试。NET应用程序并试图利用填充Oracle攻击。这个AFAIK是基于响应代码分析的,但是被测系统的ScriptResource和WebResource代码总是响应200 OK,即使密码无效。但是,在这种情况下,响应的内容是一个空字符串。
在这种情况下,是否可以使用任何axd作为oracle ?可能基于响应内容的差异
填充Oracle攻击的工作原理是能够区分两种情况:
- 服务器解密数据失败,因为在解密时,它没有找到正确格式的填充。
- 服务器找到了正确的填充,但解密的数据却是随机的垃圾。
攻击者可能有几种方法来获得这种区别。来自服务器的特定错误代码是最容易被利用的;但任何可察觉的差异就足够了。该攻击首次发布于2002年(是的,人们花了8年时间才注意到它可以应用于ASP !),并且它已经在SSL连接上被证明只有时间差异:服务器正在解密数据,然后只有在解密正常的情况下才验证MAC;MAC计算所花费的额外2ms足以让攻击者知道填充是否有效,从而允许直接应用padding Oracle攻击。
回答你原来的问题,可以使用内容长度。Padbuster注意到状态码,但我认为它完全检测了响应长度。
回答你对特洛伊的回复,一个很长的密文长度并不表明他们是脆弱的。通常,短的密文长度确实表明它们是易受攻击的,但您需要解码该值,然后看看模数8=0,看看它是否易受攻击。换句话说,长度是8的倍数。通常我会看到一块密文(16字节)结束大约25字节一旦它的。net url编码。修复包括HMAC(我认为),它扩展了长度,应该使一个块密文不可能。我不能肯定地说这一点,因为我不确定HMAC是多长时间,如果它在填充后工作与否。
这听起来像填充oracle补丁可能已经安装,结果你没有得到你所期望的错误代码。看看你是否信任你的主机提供商,他们是否真的安装了填充oracle补丁,看看你是否可以建立这个。