サーバーに送信されるすべての情報を保護して、SQLインジェクションがないことを確認しました。
しかし、私のサーバーには変な名前の新しいフォルダーがあります。私たちのオンラインサービスの1つは、特定の入力を使用すると、その名前でディレクトリが作成されますが、_mysql_real_escape_string
_を使用した後にのみ作成されます。
これらは現在私のサーバーにある種類のフォルダ名です:
<script>alert(42873)<
_\'\"
_
_%27
_
!(()
_\r\n SomeCustomInjectedHeader:injected_by_wvs
_
_\0dir\0
_
_&dir
_
_�\'
_
ハッカーはどのようなインジェクションを仕掛けようとしましたか?それらはSQLインジェクションから期待される種類のものですか?またはJavaScriptの注入?
これは私がフォルダを作成するために使用しているコードです:
_$path = "designs_".$design->getDesignerType()."/product".$design->getProductID()."/template".$design->getTemplateID()."/".$design->getID();
if(!is_dir($path))
{ mkdir($path, 0777, TRUE); }
_
私は実際にexec
を使用していますが、フォルダを作成するためではありません。次のように、バイナリソースファイルを使用してPDFを作成するなど、他の用途にも使用しています。
_ exec("prince /home/zeejfl6/public_html/printshop/".$filename.".html /home/zeejfl6/public_html/printshop/".$filename.".pdf");
_
そして、このように画像を作る:
_$cmdi = "convert -density 300 -resize $io /home/zeejfl6/public_html/printshop/$filename.pdf -quality 100 -flatten /home/zeejfl6/public_html/printshop/$filename.jpg";
exec ($cmdi);
_
ハッカーが何をしているのかを段階的に説明しましょうスクリプトキディ しようとしました:
<script>alert(42873)<
:これは XSS攻撃 です。\'\"
_:Webサイトが SQLインジェクション に対して脆弱かどうかをテストしています。%27
_:これはurlencodeされているため、デコードすると_'
_が得られます。これは(2)と同じ意図です。!(()
:(2)と同じ。\r\n SomeCustomInjectedHeader:injected_by_wvs
_:ここで何が起こっているのかわからない.\0dir\0
_:_\0
_はNULL
を意味します。&dir
_:使用している場合を除き、ナンセンスです。�\'
_:(2)と同じ。備考:
ディレクトリの作成に関するコード。動的に作成しているため、簡単ですが、いくつかのセキュリティ問題が発生する可能性があります。最善の方法は、クライアントから提供されたdirnameとそのハッシュバージョンをDBに格納することです。ハッシュバージョン。ディレクトリの作成に使用します。したがって、DBを使用して入力/出力を「変換」します。
mkdir()
について:_777
_を使用していますが、_0777
_を意図していると思いますが、decimal
ではなくoctal
。考えられるセキュリティ上の欠陥について chmod()
とこの answer を見てください。
exec()
について:_$filename
_が高度に制御されておらず安全でない場合、これは 巨大なセキュリティホール です。つまり、ユーザーが自分のファイルに_";rm -rf ../../../../
_のような名前を付けた場合、OSに別れを告げることができます。もちろん、これはPHPに十分な特権がある場合にのみ可能です。
アドバイス:
前述のとおりmunkeyoto によるこの攻撃は、自動ハッキングツールを使用して実行されます。また、あなたが最近行ったハッキングの試みについて、何度か投稿しています。私はあなたにあなたのウェブサイトを監査してテストするために専門家を雇うことを強くお勧めします(あるいはそれのセキュリティを改善することさえ)。できない、またはしたくない場合は、セキュリティとベストプラクティスの詳細をご覧ください。利用可能なチュートリアル、書籍、コースがたくさんあります。私たち(そしてあなたにとって)は、上記のように簡単に回避できる skiddies による簡単なハッキングの試みを一度投稿するのは少し疲れます。
injected_by_wvsは、Acunetix Web(w)脆弱性(v)スキャナー(s)(wvs)によって使用されます。これはクロス(x)サイト(s)スクリプト(X)-パラメーター(通常はフォーム:名前、日付、時刻、年齢など)に挿入されるXSSです。 SQLベースのインジェクションには、SQLステートメントの一部(SELECT * FROM、INSERT INTO *)が含まれます。これらはほとんどの場合表示されますが、難読化できます。これは、これがどのような攻撃なのかを答えます。
escapeshellcmd() とexec()の使用を調べて、誰かが文字を挿入しようとするのを防ぐことができます。 exec()に関してHamZa DzCyberDeVが作成したステートメントに同意しません。時間をかけて入力をサニタイズすることは、それほど深刻ではありません。