Apache 2.4 は PHP コマンド 200 を成功としてログに記録しますが、これは何をしているのでしょうか? POST /?q=die('z!a'.'x'); など

Apache 2.4 は PHP コマンド 200 を成功としてログに記録しますが、これは何をしているのでしょうか? POST /?q=die('z!a'.'x'); など

CentOS 7.x VPS を Apache 2.4.29 と PHP 7.0.28 で実行していますが、ログに次のメッセージが表示されるようになりました。しばらくの間、オンラインの記事からできる限り php.ini のセキュリティを確保してきましたが、次の操作を実行すると HTTP ステータス コード 200 success が表示されるのはなぜでしょうか。これは何を実行しているのでしょうか。また、これを防ぐにはどうすればよいのでしょうか。私の知る限りでは、die()と同等ですexit()。これは、既知の古いバッファ オーバーフロー エクスプロイトでしょうか。

しかし肝心なのは、なぜ成功が返されるのか、そしてそれがどのような損害を与えたのかということです。

[18/Mar/2018:09:57:21 +0000] "POST /?q=die('z!a'.'x');&w=die('z!a'.'x');&e=die('z!a'.'x');&r=die('z!a'.'x');&t=die('z!a'.'x');&y=die('z!a'.'x');&u=die('z!a'.'x');&i=die('z!a'.'x');&o=die('z!a'.'x');&p=die('z!a'.'x');&a=die('z!a'.'x');&s=die('z!a'.'x');&d=die('z!a'.'x');&f=die('z!a'.'x');&g=die('z!a'.'x');&h=die('z!a'.'x');&j=die('z!a'.'x');&k=die('z!a'.'x');&l=die('z!a'.'x');&z=die('z!a'.'x');&x=die('z!a'.'x');&c=die('z!a'.'x');&v=die('z!a'.'x');&b=die('z!a'.'x');&n=die('z!a'.'x');&m=die('z!a'.'x');&eval=die('z!a'.'x');&enter=die('z!a'.'x'); HTTP/1.1" 200 3564

答え1

これは、PHP Web アプリケーションの脆弱性をブラインド プローブするものです。信頼できない入力、または指定されたクエリ パラメータのいずれかから何らかの方法でコードを実行する PHP Web アプリケーションがある場合、スクリプトは終了し、z!axWeb ページ出力に印刷されます。

このような事態が発生すると、プローバーは後で(おそらく数秒後)戻ってきて、実際に脆弱性を悪用することになります。

関連情報