一般的な PHP の脆弱性について パート 2: 一般的な封じ込めの脆弱性
インクルージョンは一般に LFI と RFI、つまりローカル ファイル インクルードとリモート ファイル インクルードに分けられます
LFI
LFI の場合、多くの制限に .php で終わるサフィックスが含まれるため、Include ($a .'. php') たとえば。
したがって、画像の馬を含めたい場合は、次の .php
-
00 の切り詰めを切り詰める必要があります。 gpc オフ && php
-
長いファイル名の切り捨て。とにかくこれで成功することはほとんどありません。
-
文字セット変換による切り捨て。これを含めても基本的には役に立ちません。
また、サフィックスが .php である必要があるという cms の制限もあります。たとえば、次の単純なコード
$include_file=$_GET[include_file];if ( isset( $include_file ) && strtolower( substr( $include_file, -4 ) ) == ".php" ) { require( $include_file ); }
は、渡された の最後の 4 文字をインターセプトし、それが「.php」であるかどうかを判断します。 「.php」の場合は含まれます。ここでは zip (または phar) プロトコルを使用できます (もちろん、これはラテレインから学びました、笑)。
まず新しい 1.php を作成し、その中に phpinfo を書き込み、
それから .zip に圧縮し、zip の名前を yu.jpg に変更します。
次に、この .jpg をアップロードして次の内容を含めます:
写真をアップロードする場所が見つからない一部の LFI のために、ログや環境変数などを含む LFI に写真をアップロードする方法に関するヒントを投稿している人もたくさんいます。 、ここではこれ以上は言いません。
RFI
次に RFI について話しましょう。
RFI が利用可能であれば、それが最も便利です。リモート ファイル、php://input データ、さまざまな疑似プロトコルが含まれます。
しかし、RFI の最大の制限は、allow_url_include が必要であり、「変数または定数の前にパスが定義されていない」ことであることは誰もが知っています。
そして、Allow_url_include はデフォルトでオフになっているため、allow_url_include がオンであっても、「変数の前にパスがない」または「定数」であっても、これは RFI の欠陥です。
ここでは、allow_url_include がオフの場合でも rfi できるテクニックを紹介しますが、成功率はあまり高くありません。
まず、php.ini のallow_url_include を見てください:
; Whether to allow include/require to open URLs (like http:// or ftp://) as files.allow_url_include = Off
翻訳すると、http://、ftp://、その他のプロトコルなどの URL を含めることが許可されることを意味します。オフの場合、そのようなプロトコルを含めることは絶対に許可されません。
ここで最初にテストします:
<?phpinclude($_GET[yu]);
まず、allow_url_include と &allow_url_fopen が両方ともオンになっている場合
RFI が成功しました。
この場合、allow_url_include がオンになり、allow_url_fopen がオフになります
リモート ファイルの直接インクルードは失敗します。今回は擬似プロトコルを使ってみましょう。
またRFIに成功しました。
allow_url_include &&allow_url_fopen がオフの場合。
疑似プロトコルが失敗しました。
ファイルを含める方法:
URL ファイル アクセスはサーバー設定で無効になっており、含めることが許可されていないことを示します。
しかし、その昔、星の外に実行ディレクトリが存在せず、リモート呼び出し cmd を使用して権限を昇格し続けた時代をまだ覚えている人も多いはずです。
それは共有ファイルを使用し、それらを地球外のホストで実行します。
それでは、ここで試してみましょう:
共有ファイルが正常に組み込まれました。これはローカルでのみテストされ、リモートではテストされません。ただし445なので基本的に失敗する可能性があります。
原文に基づいて簡単な編集と修正を加えた、http://drops.wooyun.org/papers/4544 から転載。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











セッションハイジャックは、次の手順で達成できます。1。セッションIDを取得します。2。セッションIDを使用します。3。セッションをアクティブに保ちます。 PHPでのセッションハイジャックを防ぐための方法には次のものが含まれます。1。セッション_regenerate_id()関数を使用して、セッションIDを再生します。2。データベースを介してストアセッションデータを3。

JWTは、JSONに基づくオープン標準であり、主にアイデンティティ認証と情報交換のために、当事者間で情報を安全に送信するために使用されます。 1。JWTは、ヘッダー、ペイロード、署名の3つの部分で構成されています。 2。JWTの実用的な原則には、JWTの生成、JWTの検証、ペイロードの解析という3つのステップが含まれます。 3. PHPでの認証にJWTを使用する場合、JWTを生成および検証でき、ユーザーの役割と許可情報を高度な使用に含めることができます。 4.一般的なエラーには、署名検証障害、トークンの有効期限、およびペイロードが大きくなります。デバッグスキルには、デバッグツールの使用とロギングが含まれます。 5.パフォーマンスの最適化とベストプラクティスには、適切な署名アルゴリズムの使用、有効期間を合理的に設定することが含まれます。

PHP開発における固体原理の適用には、次のものが含まれます。1。単一責任原則(SRP):各クラスは1つの機能のみを担当します。 2。オープンおよびクローズ原理(OCP):変更は、変更ではなく拡張によって達成されます。 3。Lischの代替原則(LSP):サブクラスは、プログラムの精度に影響を与えることなく、基本クラスを置き換えることができます。 4。インターフェイス分離原理(ISP):依存関係や未使用の方法を避けるために、細粒インターフェイスを使用します。 5。依存関係の反転原理(DIP):高レベルのモジュールと低レベルのモジュールは抽象化に依存し、依存関係噴射を通じて実装されます。

phpstormでCLIモードをデバッグする方法は? PHPStormで開発するときは、PHPをコマンドラインインターフェイス(CLI)モードでデバッグする必要がある場合があります。

システムが再起動した後、UnixSocketの権限を自動的に設定する方法。システムが再起動するたびに、UnixSocketの許可を変更するために次のコマンドを実行する必要があります:sudo ...

静的結合(静的::) PHPで後期静的結合(LSB)を実装し、クラスを定義するのではなく、静的コンテキストで呼び出しクラスを参照できるようにします。 1)解析プロセスは実行時に実行されます。2)継承関係のコールクラスを検索します。3)パフォーマンスオーバーヘッドをもたらす可能性があります。

PHP開発でPHPのCurlライブラリを使用してJSONデータを送信すると、外部APIと対話する必要があることがよくあります。一般的な方法の1つは、Curlライブラリを使用して投稿を送信することです。
