2

パス トラバーサルの脆弱性を悪用するはずの Tomcat で Java Web App を実行しています。/tmpサーバーのディレクトリに抽出される .zip ファイルをアップロードできるセクション (アプリ内) があります。ファイルの内容は.zipチェックされていないので、基本的に何でも入れられます。その中にファイルを入れてみたところ、.jsp完全に解凍されました。私の問題は、ブラウザから「通常の」ユーザーとしてこのファイルにアクセスする方法がわからないことです。アドレスバーに入力しようと../../../tmp/somepage.jspしましたが、Tomcat は単に削除し、利用でき../ないhttp://localhost:8080/tmp/リソースを表示します。どういうわけか ../ のパスにエンコードできれば理想的ですsomepage.jspWeb アプリの Web riot ディレクトリに抽出されるようにします。これは可能ですか?../抽出後に変換されるエスケープシーケンスはありますか?

どんなアイデアでも大歓迎です。
注: これはセキュリティ コースの学校プロジェクトであり、脆弱性を見つけて修正することになっています。誰かを傷つけようとしているわけではありません...

4

2 に答える 2

2

マイナス投票でごめんなさい。セキュリティは非常に重要であり、教えられるべきです。

使用するファイル名を渡しますか?

サーバーが行うチェックは、おそらくIf location starts with "/tmp" then allow it. では、「/tmp/../home/webapp/」を渡す必要がありますか?

別のアイデアは、コンテンツが上に移動する zip ファイルを作成できるかどうかを確認することです。たとえば、zip 内のファイル名に「../」を設定するとどうなりますか? zip ツールで許可されていない場合は、手動で変更する必要がある場合があります。

于 2013-10-21T21:47:54.633 に答える
0

この種の脆弱性から保護するには、次のようなものを探しています。

 String somedirectory = "c:/fixed_directory/";
 String file = request.getParameter("file");
 if(file.indexOf(".")>-1)
 {
   //if it contains a ., disallow
   out.print("stop trying to hack");
   return;
 }
 else
 {
   //load specified file and print to screen
    loadfile(somedirectory+file+".txt");
   ///.....
 }

変数 "file" をチェックせずに loadfile 関数に渡すと、誰かが必要なファイルをロードするためのリンクを作成できます。https://www.owasp.org/index.php/Path_Traversalを参照

于 2013-10-21T21:51:04.817 に答える