パディングオラクル攻撃に対して脆弱なasp.net Webアプリケーションの非常に基本的な例を誰か教えてください。
2009 次
2 に答える
1
次の2つのサイトで手順を試して、サイトをテストしてください。
http://blog.dotsmart.net/2010/09/22/asp-net-padding-oracle-detector/
http://www.troyhunt.com/2010/09/fear-uncertainty-and-and-padding-oracle.html
お役に立てば幸い
于 2011-10-31T16:42:48.330 に答える
0
私はそれが非常に遅い答えであることを知っていますが、誰かがこの情報を探しているかもしれません.
ASP.NET の古いバージョンは、パディング Oracle 攻撃に対して脆弱でした。いくつかの微調整を通じて、「古い」動作を強制することはまだ可能です。ブログで詳しく説明しており、サンプル コードはGitHubにあります。
VIEWSTATE フィールドを攻撃します。まず、ViewState 署名を無効にする必要があります。これを行うには、web.config ファイルに次の設定があることを確認してください。
<appSettings>
<add key="aspnet:UseLegacyMachineKeyEncryption" value="true" />
</appSettings>
また、パディング オラクル攻撃に対して脆弱なサンプル .ashx ファイル:
<%@ WebHandler Language="C#" Class="EncryptionHandler" %>
using System;
using System.Linq;
using System.Reflection;
using System.Web;
using System.Web.Security;
using System.Text;
public class EncryptionHandler : IHttpHandler
{
static readonly byte[] secret = Encoding.UTF8.GetBytes("Some text to break.");
public void ProcessRequest(HttpContext context)
{
var viewState = context.Request.Form["VIEWSTATE"];
if (viewState == null) {
viewState = MachineKey.Encode(secret, MachineKeyProtection.Encryption);
context.Response.ContentType = "text/html";
context.Response.Write("<!doctype html><html><form action=\"/EncryptionHandler.ashx\" method=\"POST\">" +
"<input type=\"hidden\" name=\"VIEWSTATE\" value=\"" + viewState + "\" />" +
"<input type=\"submit\" value=\"Test\" /></form></html>");
return;
}
var v = MachineKey.Decode(viewState, MachineKeyProtection.Encryption);
context.Response.ContentType = "text/plain";
if (v.SequenceEqual(secret)) {
context.Response.Write("I know the secret");
} else {
context.Response.Write("Something is wrong with my secret.");
}
}
public bool IsReusable {
get {
return false;
}
}
}
ここで、HTTP コード (暗号が無効な場合は HTTP 500) に基づいて、サイトへの攻撃を試みることができます (ここで説明されているように)。
于 2019-01-24T08:04:13.040 に答える