目次
- Pass-01jsチェック
- Pass-02はコンテンツタイプを確認します
- パス-03ブラックリストバイパス
- パス-04.htaccessバイパス
- パス-05ドット+スペース+ドットバイパス
- パス-06ケースバイパス
- パス-07スペースバイパス
- パス-08ポイントバイパス
- パス-09 :: $ DATAバイパス
- パス-10ドット+スペース+ドットバイパス
- パス-11二重書き込みバイパス
- パス-1200切り捨て
- パス-1300が切り捨てられました
- パス-14画像の馬のバイパス
- Pass-15 getimagesize()-ピクチャーホース
- パス-16exif_imagetype()-ピクチャーホース
- Pass-17セカンダリレンダリング
- Pass-18の競合状態
- パス19コンペティション
- パス-2000が切り捨てられました
Pass-01jsチェック
条件:フロントエンドがサフィックス名を制限している(.jpg / .png / .gif)
Pass-02はコンテンツタイプを確認します
条件:バックエンドがMIMEを制限している
パス-03ブラックリストバイパス
条件:バックエンドはサフィックス(.asp / .aspx / .php / .jsp)(ブラックリスト)を
制限し
ます。Apacheのhttpd.confに次の構成コードがあることを前提として、.phtml .phps .php5.phtをアップロードできます。
AddType application/x-httpd-php .php .php3 .php4 .php5 .phtml
パス-04.htaccessバイパス
条件:.htaccessバイパス
ブラックリストは、.htaccess
前提条件(1.mod_rewriteモジュールが有効になっています。2.AllowOverrideAll)を除いて、問題のあるサフィックスのほとんどすべてを拒否した
ため、最初に次の内容の.htaccessファイルをアップロードします。
SetHandler application/x-httpd-php
このようにして、すべてのファイルがphpとして解析されます
パス-05ドット+スペース+ドットバイパス
検証では最初にファイル名の両端のスペースが削除されますが、作成するサフィックス名には両端にスペースがないため、第10レベルの方法を使用してバイパスできます。つまり、ドットスペースドットバイパス(。。)です。 、したがって、この検証は無効です。その後、サフィックスの最後のドットが削除され、スペースの1つが除外されます。現時点では、アップロードされたファイルのサフィックスは.phpです。ブラックリストに含まれていないため、正常にアップロードできます。また、Windowsオペレーティングシステムのため、ファイルサフィックスの最後のドットも削除されるため、バイパスが完了しました。
補足:実際、この質問は**。user.ini **を介してバイパスされますが、何度か試しましたが成功しませんでした。将来は成功しました。このメソッドを追加します。
パス-06ケースバイパス
状態:ケースバイパス
パス-07スペースバイパス
条件:スペースをバイパスする
この質問はサフィックス名を削除しないため、サフィックス名にスペースを追加することでバイパスできます。
パス-08ポイントバイパス
条件:ドットバイパス
サフィックス名の末尾のドットは処理されません。Windows機能を使用すると、サフィックス名の最後の「。」が自動的に削除されます。サフィックス名に「。」を追加してバイパスできます。
パス-09 :: $ DATAバイパス
サフィックス名の「:: DATA」はフィルタリングされません。php + windowsの場合:ファイル名+ ":: DATA 'がフィルタリングされた場合。php+ windowsの場合:ファイル名+" ::D A T A 'をフィルターを通過するラインに挿入します。時のp HのP+W I N- D O W Sの状況の条件で:としてであれば、テキスト要素の名前+「」:: DATA "は、::DATA以降のデータをファイルストリームとして扱い、サフィックス名をチェックしません。":: DATAの後のデータは、ファイルストリームとして扱われ、サフィックス名をチェックしません。保つ "::D A T Aの後の数データとしてのテキスト片流れで処理、ないことが押収された測定された後に接尾辞名。そしてポールホールド」::「ファイル名の前にWindowsの機能を使用して、あなたが追加することができます。 『DATA :: $ DATA』をサフィックス名にバイパスします:
パス-10ドット+スペース+ドットバイパス
コードは最初にすべてのを削除します。ファイル名の最後にあるスペースを削除し、次にファイル名の前後のスペースを削除してから、strrchar関数を使用してを検索します。ファイル名のサフィックスを確認しますが、元のファイル名を確認します。ファイルが最終的に保存されたときに名前を変更せずに使用されるため、1.php ...(dot + space + dot)を使用してバイパスできます
パス-11二重書き込みバイパス
ブラックリストフィルタリング、ブラックリストのサフィックスを空に置き換え、1回だけ置き換えるので、二重書き込みでバイパスできます
パス-1200切り捨て
ホワイトリストの判断ですが、$ img_pathは直接接続されているため、%00の切り捨てでバイパスできます。
切り捨て条件:PHPのバージョンが5.3.4未満であり、PHPのmagic_quotes_gpcがオフになっています。
パス-1300が切り捨てられました
save_pathパラメーターはPOSTを介して渡されるか、00で切り捨てられます。これは、POSTがGETのように%00を自動的にデコードしないため、バイナリで変更する必要があるためです。
パス-14画像の馬のバイパス
ファイルの最初の2バイトを読み取ってファイルの種類を判断し、画像を直接アップロードして画像を馬にすることができます。画像に直接
アクセスしても、画像はPHP解析として扱われないため、ファイルインクルードを使用する必要があります。脆弱性
Pass-15 getimagesize()-ピクチャーホース
この質問は、getimagesize関数を使用してファイルの種類を判別することです。または、ピクチャーホースによってバイパスすることもできます。方法は、pass-14と同じです。
パス-16exif_imagetype()-ピクチャーホース
ここでは、php exif_imagetypeモジュールを使用してファイルの種類を判別し、picture horseを使用してバイパスします。この方法は、pass-14と同じです。
Pass-17セカンダリレンダリング
接尾辞の名前、コンテンツタイプを判断し、imagecreatefromgifを使用してそれがgif画像であるかどうかを判断し、最後に2回目のレンダリングを行った後、リンクを参照できます:詳細についてはこの記事を参照してください。ただし、繰り返し発生する場合、PHPコードは2回目のレンダリング後も変更されます。
Pass-18の競合状態
これが条件付きの競合です。最初にファイルをサーバーにアップロードしてから、ファイルのサフィックスがホワイトリストに含まれているかどうかを確認します。含まれている場合は名前を変更し、そうでない場合は削除して、1.phpにアクセスするだけでアップロードできるようにします。削除される前に、それを使用することができます。Burpの侵入者モジュールはアップロードを続け、その後、アドレスにアクセスして更新し続けます。
パス19コンペティション
条件付き競合の問題もありますが、この質問はファイルサフィックス名をホワイトリストで判断し、ファイルサイズやファイルの有無などを段階的にチェックするため、連続して写真をアップロードできます。条件付きの競争では、名前を変更するには遅すぎる可能性があります。したがって、アップロードは成功します。
パス-2000が切り捨てられました
move_uploaded_file()関数のimg_pathは、postパラメーターsave_nameによって制御されるため、save_nameの00切り捨てでバイパスできます。