2

私のクライアントの1人が、ハッキングされたサイトをチェックして修正するように私に近づきました。サイトは別の開発者によって開発されました。非常に経験の浅い開発者であり、基本的なセキュリティさえも処理されていません。

問題は、どういうわけかPHPファイルがimagesフォルダーに書き込まれたことでした。ハッカーは、サイトがハッキングされたことを示すindex.htmlも作成しました。画像を確認すると、フォルダには777の権限があります。だから私はそれがフォルダのパーミッションのためだという大まかな結論に達しました。ホスティングサポート担当者によると、一部のPHPファイルには、拡張ファイルをサーバーにアップロードできるスクリプトの記述が不十分であり、ハッカーはファイルを実行してアクセスしたり、やりたいことを実行したりします。

いくつか質問があります:

  • 他のPHPファイルをアップロードできるのはアップロード機能だけですか?フォルダのアクセス許可は777であるため、リモートからファイルを書き込む他の方法はできませんか?
  • Sitには、いくつかのfckeditorsエディターといくつかのアップロード機能があります。私はそれらをチェックしました、十分な検証があるので、画像またはPDF以外の拡張機能をアップロードしようとすると、falseが返されます。
  • フォルダのアクセス許可を下位レベルに設定しても問題は解決しませんか?

サポート担当者にフォルダのアクセス許可を変更するように依頼しましたが、問題は解決しますが、他のPHPファイルが書き込まれるPHPファイルがいくつかあり、それを修正する必要があると彼は言います。そうしないと、サイトが稼働できなくなります。彼は、フォルダのパーミッションが変更されたとしても、ハッカーはそれらを777に変更して、PHPファイルの記述が不十分なため、好きなように実行できると言います。

そのようなPHPファイルがあるかどうかを見つけるための私のアプローチはどのようにすべきですか?ヘルプやポインタをいただければ幸いです。

4

5 に答える 5

2

777は、システム上のすべてのユーザー(とにかく、すべての親ディレクトリへの実行アクセス権を持つ)がそのディレクトリに何でも追加できることを意味します。ただし、Webユーザーはシステムユーザーではありません。ほとんどのWebサーバー(Apacheを含む)では、ランダムなクライアントが箱から出してすぐにファイルを書き込むことはできません。あなたはそれを許可するようにサーバーに具体的に指示しなければならないでしょう、そして私はそれが起こったことではないとかなり確信しています。

ただし、ファイルのアップロードを許可する場合は、アップロードフォルダーは、少なくともWebサーバーのユーザー(または、suPHPなどを使用している場合はサイトのユーザー)が書き込み可能である必要があります。また、Webサーバーがそのディレクトリに書き込むことができる場合、任意のPHPコードがそのディレクトリに書き込むことができます。ディレクトリを書き込み専用にする(fckeditorなどではかなり役に立たない)場合を除いて、アップロードを許可するのに十分な高さとPHPコードの実行を妨げるのに十分な低のアクセス許可を設定することはできません。

サイト自体の脆弱性が原因で、ほぼ確実に侵害が発生しました。書き込み先を適切にチェックしていないファイルアップロードスクリプトがあるか、含めるものの名​​前を盲目的に受け入れるスクリプトがある可能性があります。PHPコードは通常、Webサーバーのユーザーとして実行されるため、Webサーバーが書き込みアクセスできるすべてのものに書き込みアクセスできます。(誰かがFTP経由で侵入した可能性もあります。その場合は、パスワードを変更したほうがよいでしょう。しかし、Webサーバーに障害が発生する可能性はせいぜいわずかです。)

この時点で何をすべきかについては、サイトをワイプしてバックアップから復元するのが最善のオプションです。数回述べたように、攻撃者がサーバー上で任意のコードを実行すると、それほど多くはありません。もう信頼できます。それができない場合は、少なくとも最近変更されたファイルを見つけて削除してください。(エクスプロイトは、トラックをカバーするためにそれほど多くの問題を経験することはほとんどありません。)

いずれにせよ、アップロード、一時、セッション以外のディレクトリ(および既存のすべてのスクリプト)にアクセス許可を設定して、特にWebサーバーによる書き込み、期間を禁止します。サイトのコードがファイルを所有しているのと同じユーザーとして実行されている場合は、ディレクトリに555を使用し、ファイルに444を使用することをお勧めします。そうでなければ、おそらく755/644でうまくいくでしょう。(Webサーバーは、それがひどく誤って構成されている場合にのみそれらを書き込むことができ、無能なホスティング会社はすぐに廃業するでしょう。)

率直に言って、「サポート担当者」は正しい考えを持っています。見知らぬ人から任意のコードが実行されることを知っているサイトをサーバー上で稼働させることは絶対にありません。(ローカルファイルシステムに何も書き込めない場合でも、他のサーバーへの攻撃を開始するために使用できます。)現時点での最善のオプションは、ファイルをアップロードする機能をすべて削除することです。誰かがファイルのアップロードを安全に処理する方法を知らないことは明らかです。そして、誰かがあなたが脆弱であることを知っているので、穴を見つけてそれを塞ぐまで、とにかくハッキングされ続ける可能性があります。

何を探すべきかについては...残念ながら、単一ステートメントレベルより上の概念について話しているので、それはやや曖昧です。include$ _GET、$ _ POST 、requireまたは$_COOKIEから何らかの方法で派生したファイル名に書き込みを行うPHPスクリプトを探します。

于 2013-02-28T14:59:35.767 に答える
1

PHPはおそらくアップロードフォルダに書き込むことができ、Webサーバーはおそらくそこから読み取ることができる必要があるため、CGIを使用していない限り、フォルダのアクセス許可を変更しても問題は解決しません。アップロードされたファイルの拡張子を確認してください!

(つまり、0777のアクセス許可は、誰でも何でもアップロードできるという意味ではありません。)

于 2013-02-28T14:53:07.510 に答える
1

不可解なことに述べたように、ハッカーがサーバー上でコードを実行できるようになると、すべてのファイルが潜在的に危険であると想定する必要があります。これを自分で修正しようとしないでください。バックアップから(クライアントまたは元の開発者から)復元することが、これを回避する唯一の安全な方法です。

バックアップファイルの準備ができたら、サイト上のすべてを削除してバックアップをアップロードします。共有ホストの場合は、他のファイルが危険にさらされた場合に備えて、それらにも連絡する必要があります[まれに発生します]。

于 2013-02-28T15:01:51.023 に答える
1

2つの問題を特定しました。アクセス許可と拡張機能チェックの欠如ですが、これらがシステムが侵害された手段であったという証拠はありますか?このアサーションをサポートするものは何も提供していません。

権限をより制限的なものに変更すると、悪意のあるPHPスクリプトをアップロードするユーザーに対する保護は提供されません。

ファイルの拡張子をチェックすると、サイトにPHPコードを挿入するのが少し難しくなる可能性がありますが、それを防ぐことはできません

バックアップから復元すると、破壊されたコンテンツが削除される可能性がありますが、コードの脆弱性は修正されません。

あなたはあなたのクライアント(おそらくこれに対してあなたにお金を払っている)がこれを解決するために必要なスキルを持っていません。そして、それらのスキルを習得することは、ここでいくつかの答えを読むよりもはるかに長い道のりです(確かにそれは始まりですが)。

于 2013-02-28T15:35:53.270 に答える
1
于 2013-02-28T18:28:10.197 に答える