6

最近、Struts は攻撃者がリモート コードを実行できる脆弱性にパッチを適用しました。どうやらこれにパッチを当てないことは、ブラックハットに時流でレッドカーペットを歓迎するようなものです.

http://struts.apache.org/release/2.3.x/docs/s2-016.html

基本的に、次のような攻撃コマンドの実行を許可します。

正当な行為:

http://host/struts2-showcase/employee/save.action?redirect:%25{3*4}

悪用されたアクション:

http://host/struts2-showcase/employee/save.action?redirect:%25{(new+java.lang.ProcessBuilder(new+java.lang.String[]{'command','goes','here'})).start()}

できるだけ早くアップグレードする必要があることは承知していますが、コード ベースは古いバージョンの Struts とプラグインを使用しているため、できるだけ早くアップグレードするには時間がかかります。

これには、Struts 2 ライブラリをアップグレードするためのリファクタリングが必要です。その後、それらをテストする必要があります。

したがって、私の質問は、この脆弱性が実行されるのを阻止する考えがあるかどうかです。これは、アップグレードできるようになるまでの期間のみです。

OGNL に対して評価される前に URL をサニタイズするインターセプターを作成することが可能かどうか疑問に思っていました。

私が持っていた他のアイデアは、何らかの形でJavaセキュリティマネージャーを使用して任意のプロセス呼び出しを停止することでした.これは可能ですか? 一時的に穴を塞ぎますか?

使用されているサーバーは、誰かが関連性があると考える場合、jBoss です。

4

3 に答える 3

1

この問題はDefaultActionMapper、特別なパラメーターの処理方法に関連しています。このクラスは、メソッドをオーバーライドするように拡張できますhandleSpecialParametersただし、 DMIをオフにすると、これらの特別なパラメーターは機能しなくなります。一定の構成を使用する

<constant name="struts.enable.DynamicMethodInvocation" value="false"/>
于 2013-08-01T08:50:55.927 に答える
0

他のコメントによると、Tomcat の前で Apache を使用している場合、この Apache 構成フラグメントを使用して、リクエストが Tomcat に到達するのを防ぐことができます。

RewriteEngine On
RewriteCond %{QUERY_STRING} java.lang.ProcessBuilder
RewriteRule (.*) - [F]
于 2014-01-07T13:46:36.360 に答える