ファイルアップロード&脆弱性の解析

4056 ワード

一、IIS 5.x/6.0解析脆弱性(03)
IIS 6.0解析利用方法は2種類ある
1.ディレクトリ解析
/xx.asp/xx.jpg
ウェブサイトの下で履歴書のフォルダは.asp、.asaのフォルダは、ディレクトリ内の任意のファイル拡張子のファイルがIISによってaspファイルとして実行されます.
例えばディレクトリhahaha.asp,じゃあ/hahahaha.asp/1.jpg jpg形式のファイルはaspスクリプトファイルとして解析実行され、ハッカーがアップロードファイルのフォルダパスを制御できると仮定すると、アップロードフォーマットを迂回してshellを手に入れることができる
一般的なディレクトリ解析の脆弱性は、ckfinder、fckエディタなどのエディタと組み合わせて使用され、ディレクトリを作成することができます.
2.ファイル解析(;)
hahaha.asp;.jpg
IIS 6.0の下で、セミコロンの後ろのは解析されません、つまりhahaha.asp;.jpgはサーバからhahahahaと見なす.asp
3.奇形接尾辞名解析IIS 6.0デフォルトの実行可能ファイルにはaspのほかに、この3つ(特定の場合に解析されます):
  • /hahaha.asa
  • /hahaha.cer
  • /hahaha.cdx

  • 二、IIS 7.0/IS 7.5/Nginx<8.03奇形解析脆弱性
    Nginx解析脆弱性この偉大な脆弱性はわが国の安全保障機関80 secが発見したものだ...
    デフォルトのFast-CGIオープン状況では、黒広にhahahahaという名前がアップロードされます.jpg、内容は:');?>のファイルにアクセスし、hahahaha.jpg/.php、このディレクトリの下で一言木馬shellが生成されます.php.(この脆弱性は容器の脆弱性ではなくphpの脆弱性のようです.IIS 7,0/7.5だけでなく、10.0にも現れているからです)
    三、Nginx<8.03空バイトコード実行脆弱性
    影響版:0.5.,0.6., 0.7 <= 0.7.65, 0.8 <= 0.8.37
    Nginxは画像にPHPコードを埋め込んでアクセスする
    xxx.jpg.php
    コードを実行します
    四、Apache解析脆弱性
    Apacheは右から左へ判断解析を開始する、認識不可能解析であれば左へ判断する.
    例えばハハphp.owf.rar".owf"と".rar」という接尾辞はapacheが認識できない解析であり、apacheはhahaha.php.owf.rarはphpに解析する.
    合法的な接尾辞かどうかをどのように判断するかがこの脆弱性の利用の鍵であり、テスト時にhahahahaをアップロードしようとすることができる.php.rara.jpg.png...(よくある接尾辞を全部書いて...)合法的な接尾辞かどうかをテストします
    五、その他
    Windows環境ではxx.jpg[スペース]またはxx.jpg. この2つのファイルは存在できません.このように命名すると、windowsはデフォルトでスペースやポイントを除去し、ハッカーはパッケージをつかむことで、ファイル名の後にスペースやポイントを追加してブラックリストを迂回することができます.アップロードに成功すると、スペースとポイントがwindowsによって自動的に消去され、getshellもできます.
    Apacheにいるならhtaccessは実行することができる.アップロード可能である.それは試してみることができます.htaccessへの書き込み:
    SetHandler application/x-httpd-php
    それをアップロードしますjpgの木馬、こんな風にjpgはphpファイルに解析できます

    ファイルアップロードの脆弱性


    ファイルアップロード・ホールとは、プログラマがユーザファイルアップロード部分の制御不足や処理欠陥により、実行可能な動的スクリプト・ファイルを自身の権限を越えてサーバにアップロードできることを意味します.ここにアップロードされるファイルは、木馬、ウイルス、悪意のあるスクリプト、WebShellなどです.この攻撃方式は最も直接的で有効で、「ファイルアップロード」自体は問題なく、問題があるのはファイルアップロード後、サーバーがどのようにファイルを処理し、解釈するかです.サーバの処理ロジックが安全でない場合は、深刻な結果をもたらします.

    抜け穴の原因


    理由:1アップロードファイルの接尾辞(拡張子)に対して厳しい制限をしていない2アップロードファイルのMIMETYPE(ファイルの種類を記述するための記述方法)に対して検査をしていない3アップロードされたファイルディレクトリに対して実行不可能な権限を設定していない、(特にshebangタイプのファイル)4ウェブサーバに対してアップロードファイルまたは指定ディレクトリの動作に制限をしていない

    アップロード検出メカニズム、制限迂回


    1.先端規制

    if(ext=='jpg'||ext=='png'||ext=='jpeg'||ext=='gif'){
    
            return true;
    
        }else{
    
            alert("        !")
    

    ユーザがクライアントでファイルを選択してアップロードをクリックすると、クライアントはまだサーバにメッセージを送信していないので、ローカルファイルを検出してアップロード可能なタイプかどうかを判断する方式をフロントスクリプト検出拡張子と呼ぶ.
    迂回方式:1.フロントスクリプトを迂回して拡張子を検出することは、アップロードするファイルの拡張子をスクリプト検出規則に合致する拡張子に変更し、BurpSuiteツールを通じてパケットを切り取り、パケット中のファイル拡張子を元に戻すことで、迂回の目的を達成することである.例えば、ファイル名は本来「evil.jpg」であり、アップロード時にBurpSuiteでパケットをカットした後、パケットの名前を「evil.php」(または他のスクリプトタイプ)に変更すればよい.2.JSスクリプト検出の場合、ローカルブラウザクライアントでJSを無効にすればよい.火狐ブラウザのNoScriptプラグイン、IEでJSを無効にするなどして実現できる.

    2.拡張子の確認

    if($postfix=='php'||$postfix=='asp'||$postfix=='sh'){
    
     echo "invalid file type";
    
     return;
    
    }
    

    ファイルがサービス側にアップロードされた場合、ファイル名の拡張子をチェックし、合法でなければ今回のアップロードを拒否します.
    迂回方式:上記の解析ホールを迂回する

    3.HTTPヘッダのContent-Typeをチェックする


    HTTPプロトコルは、リソースをアップロードするときにHeaderにファイルを添付するMIMETYPEを規定し、ファイルタイプを識別します.この動作はブラウザで行います.サービス側はこのタイプをチェックすることができますが、これは依然として安全ではありません.HTTP headerは発行者や中間者が任意に修正することができますが、保護を加えると一定の効果があります.
    迂回方式:ツールでパッケージをつかんでhttpヘッダを修正して迂回する

    4.ファイルヘッダの内容を分析してファイルタイプをチェックする


    この検査方法は最も変態で、あなたはいくつかの困難を突破してやっとアップロードしましたが、彼は意外にもあなたのファイルの頭を検査して、ここのファイルの頭は名前ではありませんて、すべてのタイプのファイルはすべて異なる頭の情報があって、すべての特定のタイプのファイルはすべて異なる冒頭あるいは標識の位置があります.
    JPEG (jpg),   :FFD8FF
    
    PNG (png),   :89504E47
    
    GIF (gif),   :47494638
    
    XML (xml),   :3C3F786D6C
    
    HTML (html),   :68746D6C3E
    
    ZIP Archive (zip),   :504B0304
    
    RAR Archive (rar),   :52617221
    

    迂回方式:アップロードスクリプトに対応する幻数ヘッダバイトを加えればよいが、phpエンジンは(一般的に画像ファイルフォーマットを制限しない場合はGIFヘッダを使用するのが便利で、すべてテキスト印刷可能文字であるため)