1日目 - ウィッシュリスト(in_array機能欠陥)

範囲は赤い安全です  https://www.ripstech.com/php-security-calendar-2017/  PHPセキュリティCALENDAR 2017

原因はネットワークの浸透という最近の研究で、秦の高齢者がツールを望んで尋ね、彼は尋ねた:「あなたはまだソースコードを監査ん、」私は言った:「いいえ、」彼は:「開始することができ、」私:「はい。」

私はまだ非常に人間の食べ物が、従順まあ、おりますが、ソースコード監査のみCTFは、質問を具体的に時間を見つけるために訓練を受けていない、見て、彼らはソースコードに精通していないが、システム開発の時間と学習をすることを感じるだろう行うときそしてそれを販売します。シャオ黄の学生は、(道をして、いくつかの可能な抜け穴に注意し、何もしていますが、PHPの関数に関連するソースコードが長い喜喜に精通しているであろう)それを学ぶ、赤い安全な撮影範囲をお勧めします

 

このようなソースIS

クラスチャレンジ{ 
  CONST UPLOAD_DIRECTORY = ' ./solutions/ ' 
  プライベート$ファイル; 
  プライベート$ホワイトリスト。

  パブリック関数の__construct ($ファイル){ 
    $この - >ファイル= $ファイル; 
    これを$ - >ホワイトリスト=範囲(1、24 )。
  } 

  パブリック関数__destruct (){
     場合(in_array(の$ this - >ファイル[ ' 名前' ]の$ this - > ホワイトリスト)){ 
      move_uploaded_file(
        $この - >ファイル[ ' tmp_name ' ]、
        自己:: UPLOAD_DIRECTORY。この$ >ファイル[ - ' 名前を' ] 
      ;)
    } 
  } 
} 

$チャレンジ =新しいチャレンジ($ _ FILES [ ' 溶液' ])。

 

  アクセスPHPクラス、メソッドのメンバ変数やメソッド、変数が参照のconst(定義された定数)またはスタティック(静的声明)、そして私たちは、::演算子を使用しなければならないと宣言した場合、または一方の場合、参照変数または方法はないのconstまたはstaticとして宣言され、その後、オペレータが使用する必要があります - >。

  move_uploaded_file  新しい場所にファイルをアップロードします。

  これは、この脆弱性の発生につながった任意のファイルアップロードの脆弱性は、アップロードされたファイル名を検出するin_array()関数を使用するのは危険ですです。この関数はtrueに第三のパラメータ設定されていないため、このような7shell.phpという名前のファイルとしてファイル名の構造、年末までにバイパステストサービスへの攻撃につながる可能性があります。PHP()関数が決定されるのでin_arrayを使用する場合、任意のファイルアップロードの脆弱性を、それがデジタル7shell.php 7に圧入され、アレイ内の範囲(1,24)内の数字7は、最終的なバイパスがin_array()関数を決定します。(ここでその理由は、配列型の要素の目標数、弱い比較のため、発生キャスト。第三のパラメータがtrueに設定されている場合、型は最初の2つのパラメータが同じである比較します)

 

(*)修理

この脆弱性の理由は、あなたが修理のための強力な一致を使用することができ、問題の比較的弱いタイプです。例えば、第3のパラメータのin_array()関数がtrueに設定され、またはデジタル可変強度にINTVAL()関数を使用して、または定期的なマッチングプロセス変数を使用することです。

 

 

参考:

https://xz.aliyun.com/t/2451

おすすめ

転載: www.cnblogs.com/wkzb/p/12464884.html