【旧正月なので、過去記事を毎日1記事、計7記事投稿していきます。 】
最新の cms フレームワーク (laraval/symfony/slim) の出現により、今日の PHP 脆弱性の出現ポイント、原理、利用方法にいくつかの変化が生じています このシリーズでは、私が発見したそのような cms 脆弱性についてまとめていきたいと思います。
Slim は高度な設計アイデアを備えたよく知られた PHP 軽量フレームワークであり、これまでに 100 万人を超えるユーザーがいます。はフレームワークベースの CMS 専用の抜け穴であり、 にのみ現れます。
公式 Web サイト: http://www.slimframework.com/
脆弱性の詳細
この脆弱性は最新バージョン (3.0) に存在します。 まず、composer を使用してインストールします
composer には、slim/slim "^3.0@RC" が必要です
POST を取得するには、そのドキュメントを参照してください: http://www.slimframework.com/docs/objects/request.html#the-request-body data は getParsedBody メソッドを使用し、このメソッドは content-type に従って POST を区別して解析します。
この投稿でも言及されている非常に典型的な問題です: http://zone.org/content/ 19908 フレームワークは、必要のない「ヘルプ」を開発者に提供することがあります。たとえば、slimphp では、通常の POST の content-type は application/x-www-form-urlencoded です。 application/jsonに変更するとPOSTデータをjson形式で渡すことができ、application/xmlに変更するとXML形式でデータを渡すことができます。 この機能は次の 2 つの問題を引き起こします:
WAF のバイパス
XXE の脆弱性の可能性
- 言うまでもなく、従来の WAF は通常、データ型が指定された場合、application/x-www-form-urlencoded データのみを検出します。が変更されると、すべての主要な WAF が強制終了されます。 XXE がこの脆弱性の焦点です。 本文を解析するコードが表示されます:
-
public function __construct($method, UriInterface $uri, HeadersInterface $headers, array $cookies, array $serverParams, StreamInterface $body, array $uploadedFiles = []) { $this->originalMethod = $this->filterMethod($method); $this->uri = $uri; $this->headers = $headers; $this->cookies = $cookies; $this->serverParams = $serverParams; $this->attributes = new Collection(); $this->body = $body; $this->uploadedFiles = $uploadedFiles; if (!$this->headers->has('Host') || $this->uri->getHost() !== '') { $this->headers->set('Host', $this->uri->getHost()); } $this->registerMediaTypeParser('application/json', function ($input) { return json_decode($input, true); }); $this->registerMediaTypeParser('application/xml', function ($input) { return simplexml_load_string($input); }); $this->registerMediaTypeParser('text/xml', function ($input) { return simplexml_load_string($input); }); $this->registerMediaTypeParser('application/x-www-form-urlencoded', function ($input) { parse_str($input, $data); return $data; }); }
実際、解析コードは Request クラスのコンストラクター内のコールバック関数として記述されます。 $input を解析するために simplexml_load_string が直接呼び出され、XML エンティティ インジェクションの脆弱性が引き起こされていることがわかります。 したがって、スリムフレームワーク 3.0 で開発された CMS は、POST データを取得する限り、この XXE 脆弱性の影響を受けます。
脆弱性の証明
POST 情報を取得して出力する関数が 1 つだけある最も単純なデモ ページを作成します:
require 'vendor/autoload.php';$app = new \Slim\App();$app->post("/post", function($request, $response) { $parsedBody = $request->getParsedBody(); print_r($parsedBody);});$app->run();
3 つのホワイト ハットが組み込まれています: http://520fdc0ca2c37864f.jie.sangebaimao.com/
通常のリクエスト:
XXE 脆弱性をトリガーし、/etc/passwd を読み取ります:
脆弱性修正
slimphp2 では、公式がこれに対していくつかの処理を行っています:
/** * Parse XML * * This method creates a SimpleXMLElement * based upon the XML input. If the SimpleXML * extension is not available, the raw input * will be returned unchanged. * * @param string $input * @return \SimpleXMLElement|string */ protected function parseXml($input) { if (class_exists('SimpleXMLElement')) { try { $backup = libxml_disable_entity_loader(true); $result = new \SimpleXMLElement($input); libxml_disable_entity_loader($backup); return $result; } catch (\Exception $e) { // Do nothing } } return $input; }
バージョン 3.0 で公式が無視した理由はわかりません。問題。 理由は 2 つあると考えられます:
公式はこの問題に気づいていますが、バージョン 3.0 で必要な PHP バージョンは 5.5 以降であると信じており、5.5 以降の PHP には XXE の隠れた危険性がないと誤解しています。しかし実際には、XML 外部エンティティの解析は PHP のバージョンとは関係なく、コンパイル時の libxml ライブラリのバージョンに関係します。
当局はまだこの問題に気づいていません。
- 私は前者の可能性が高いような気がします。 したがって、解決策は引き続き 2 の解決策に従うことになります。

PHPは主に手順プログラミングですが、オブジェクト指向プログラミング(OOP)もサポートしています。 Pythonは、OOP、機能、手続き上のプログラミングなど、さまざまなパラダイムをサポートしています。 PHPはWeb開発に適しており、Pythonはデータ分析や機械学習などのさまざまなアプリケーションに適しています。

PHPは1994年に発信され、Rasmuslerdorfによって開発されました。もともとはウェブサイトの訪問者を追跡するために使用され、サーバー側のスクリプト言語に徐々に進化し、Web開発で広く使用されていました。 Pythonは、1980年代後半にGuidovan Rossumによって開発され、1991年に最初にリリースされました。コードの読みやすさとシンプルさを強調し、科学的コンピューティング、データ分析、その他の分野に適しています。

PHPはWeb開発と迅速なプロトタイピングに適しており、Pythonはデータサイエンスと機械学習に適しています。 1.PHPは、単純な構文と迅速な開発に適した動的なWeb開発に使用されます。 2。Pythonには簡潔な構文があり、複数のフィールドに適しており、強力なライブラリエコシステムがあります。

PHPは、多数のWebサイトとアプリケーションをサポートし、フレームワークを通じて開発ニーズに適応するため、近代化プロセスで依然として重要です。 1.PHP7はパフォーマンスを向上させ、新機能を紹介します。 2。Laravel、Symfony、Codeigniterなどの最新のフレームワークは、開発を簡素化し、コードの品質を向上させます。 3.パフォーマンスの最適化とベストプラクティスは、アプリケーションの効率をさらに改善します。

phphassiblasifly-impactedwebdevevermentandsbeyondit.1)itpowersmajorplatformslikewordpratsandexcelsindatabase interactions.2)php'sadaptableability allowsitale forlargeapplicationsusingframeworkslikelavel.3)

PHPタイプは、コードの品質と読みやすさを向上させるためのプロンプトがあります。 1)スカラータイプのヒント:php7.0であるため、基本データ型は、int、floatなどの関数パラメーターで指定できます。 3)ユニオンタイプのプロンプト:PHP8.0であるため、関数パラメーターまたは戻り値で複数のタイプを指定することができます。 4)Nullable Typeプロンプト:null値を含めることができ、null値を返す可能性のある機能を処理できます。

PHPでは、クローンキーワードを使用してオブジェクトのコピーを作成し、\ _ \ _クローンマジックメソッドを使用してクローン動作をカスタマイズします。 1.クローンキーワードを使用して浅いコピーを作成し、オブジェクトのプロパティをクローン化しますが、オブジェクトのプロパティはクローニングしません。 2。\ _ \ _クローン法は、浅いコピーの問題を避けるために、ネストされたオブジェクトを深くコピーできます。 3.クローニングにおける円形の参照とパフォーマンスの問題を避けるために注意し、クローニング操作を最適化して効率を向上させます。

PHPはWeb開発およびコンテンツ管理システムに適しており、Pythonはデータサイエンス、機械学習、自動化スクリプトに適しています。 1.PHPは、高速でスケーラブルなWebサイトとアプリケーションの構築においてうまく機能し、WordPressなどのCMSで一般的に使用されます。 2。Pythonは、NumpyやTensorflowなどの豊富なライブラリを使用して、データサイエンスと機械学習の分野で驚くほどパフォーマンスを発揮しています。


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

WebStorm Mac版
便利なJavaScript開発ツール

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

AtomエディタMac版ダウンロード
最も人気のあるオープンソースエディター

DVWA
Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、

Safe Exam Browser
Safe Exam Browser は、オンライン試験を安全に受験するための安全なブラウザ環境です。このソフトウェアは、あらゆるコンピュータを安全なワークステーションに変えます。あらゆるユーティリティへのアクセスを制御し、学生が無許可のリソースを使用するのを防ぎます。
