ウェブサイトのセキュリティにおける thinkphp の普遍的な脆弱性の悪用と修復の提案の検出

ウェブサイトのセキュリティにおける thinkphp の普遍的な脆弱性の悪用と修復の提案の検出

月収10万元の起業の夢を実現するミニプログラム起業支援プラン

中国では、多くのウェブマスターやプラットフォームがオープンソースシステムであるthinkphpを使用してウェブサイトを構築しています。なぜそれほど人気が​​あるのでしょうか。第一に、オープンソースであり、便利で効率的であり、静的HTMLを生成できます。第二に、PHPアーキテクチャを簡単に開発できるフレームワークです。サードパーティのプラグインやサードパーティの開発会社が多く、テンプレートをカスタマイズできます。thinkphpをベースに、多くの大規模な仮想通貨プラットフォーム、メンバーシッププラットフォーム、ショッピングモールシステムを開発できます。公式のthinkPHPは、システムのアップグレードにおいて比較的完全な仕事をしており、タイムリーに更新およびバグの修正を行っています。

現在の公式最新バージョンは ThinkPHP5.0.20 です。以前の ThinkPHP3.2、ThinkPHP3.1、ThinkPHP3.0 にはすべて、高リスクのリモート コード実行の脆弱性、thinkphp SQL インジェクションの脆弱性、バックエンド管理者の XSS クロスサイト脆弱性、任意のファイル アップロードの脆弱性など、Web サイトの脆弱性がありました。 2018年9月5日、SINE Securityは、通常のthinkphpウェブサイトセキュリティ検出中に、ある顧客が使用していたthinkphpシステムに、非常に有害なウェブサイトSQLインジェクション脆弱性があることを発見しました。当初、この顧客が使用していたthinkphp 3.2.3という下位バージョンが、このウェブサイト脆弱性の原因であると考えました。しかし、実際のセキュリティ検出では、このバージョンだけでなく、最新バージョンの5.0.20も脆弱性の原因であることがわかりました。ウェブサイトの脆弱性とPOCエクスプロイトの詳細を段階的に分析してみましょう。

ウェブサイトのセキュリティ検出 thinkphp 脆弱性生成原理

ウェブサイトの脆弱性を生成するファイルは、dbフォルダを含むライブラリフォルダの下のthinkファイルに存在する。

driver.class.phpコードの677行目から、注文処理の分析中に不正な分析パラメータが挿入される可能性があることが判明しました。

キー値を割り当てる際に厳密なセキュリティ制限やフィルタリングがないため、攻撃者はSQLインジェクション文を使用して

行構造は、データベース内の管理者アカウントとパスワードの確認、データベースへの書き込みなどの操作を含め、データベースの内容を照会します。

thinkphp 3.2.3 の脆弱性コードは次のとおりです。

/**

* 注文分析

* @アクセス保護

* @param 混合 $order

* @戻り値文字列

*/

保護された関数parseOrder($order) {

if(is_array($order)) {

$配列 = 配列();

foreach ($order as $key=>$val){

if(is_numeric($key)) {

$array[] = $this->parseKey($val);

}それ以外{

$array[] = $this->parseKey($key).' '.$val;

}

}

$order = implode(',',$array);

}

!empty($order) を返しますか? ' ORDER BY '.$order:'';

}

ThinkPHP 5.1.22 の脆弱性コードは、ライブラリ フォルダーの下の think フォルダーにある db/query.php ファイルに存在します。

コードの 1514 行目は次のとおりです。

/**

* ソート順('id','desc')または順序を指定する

(['id'=>'desc','create_time'=>'desc'])

* @アクセスパブリック

* @param string|array $field ソートフィールド

* @param 文字列 $order ソート

* @return $this

*/

パブリック関数 order($field, $order = null)

{

($field が空の場合) {

$this を返します。

} elseif ($field インスタンスの式) {

$this->options['order'][] = $field;

$this を返します。

}

if (is_string($field)) {

空の場合($this->options['via']) {

$field = $this->options['via'] . '.' . $field;

}

if (strpos($field, ',')) {

$field = array_map('トリム', ', $field' を爆発的に拡大します);

} それ以外 {

$field = 空($order) ? $field : [$field => $order];

}

} elseif (!empty($this->options['via'])) {

foreach ($field を $key => $val として) {

if (is_numeric($key)) {

$field[$key] = $this->options['via'] . '.' . $val;

} それ以外 {

$field[$this->options['via'] . '.' . $key] = $val;

$field[$key] を設定解除します。

}

}

上記の thinkphp 3.2.3 および thinkphp 5.0 コードから、order が関連関数を分析するときに、それがキー値に割り当てられ、SQL インジェクション ステートメントと混合して攻撃 Web サイトを実行したり、スプライシング方式で SQL セキュリティ フィルタリングをバイパスしたりして、SQL ステートメントを実行し、データベースを照会してデータベースを操作することができることが分析できます。

ThinkPHP の脆弱性悪用に関する詳細:

ThinkPHP の脆弱性修復の提案:

システムで thinkphp 3.* の下位バージョンを実行している場合は、できるだけ早く thinkphp の最新バージョンにアップグレードしてください。

システムで thinkphp 5.* のより高いバージョンを実行している場合は、できるだけ早く thinkphp の最高バージョンにアップグレードしてください。

ウェブサイトが攻撃を受けた場合は、できるだけ早くウェブサイトの安全なバックアップを作成し、ウェブサイト上のトロイの木馬バックドアを検索し、コード内の改ざんされたコードを修復し、ウェブサイトのセキュリティ強化をしっかり行ってください。一部のキャッシュフォルダーにセキュリティ権限を設定します。ウェブサイトの脆弱性修復についてあまり詳しくない場合は、専門のウェブサイトセキュリティ会社を見つけて対応してもらえます。国内のSINE Security Company、Green Alliance Security、Venustechはいずれも比較的専門的です。ウェブサイトが Linux や Windows などの別のサーバーを使用している場合は、ウェブサイト ファイアウォールを導入して SQL インジェクション攻撃を防ぐことができます。ウェブサイトのデフォルトの管理者バックエンド アドレスは、より複雑なアドレスに変更できます。

元のタイトル: thinkphp ユニバーサル脆弱性の悪用によるウェブサイト セキュリティ検出と修復の提案

キーワード: ウェブサイトのセキュリティ、ウェブサイトの脆弱性検出

<<:  ブラウザ信頼IP SSL証明書の申請には1~3日しかかかりません

>>:  企業が売上を伸ばすためのリード育成の6つの方法

推薦する

lisahostはどうですか?シンガポール ISP 住宅 VPS レビュー

現在、lisahost が提供している VPS は非常にユニークです。米国とシンガポールのデータセン...

soladrive: 米国サーバー 35% オフ、月額 61 ドル、e3-1230v6/16g/2T ハード ドライブ/10T トラフィック

2009 年に設立された Soladrive は、マネージド VPS、マネージド独立サーバー、マネー...

ウェブページのキーワードを変更するときに検索エンジンを馬鹿にしてはいけない

著者はかつて多くのウェブマスターと同じでした。当初、ウェブサイトのポジショニングが不正確だったため、...

Dotvps - 1g メモリ/50g ハードディスク/500g トラフィック/2IP/年間 28 ドル/アトランタ

今回お勧めするアトランタ拠点の openvz VPS は Dotvps のものです。独立した IPv...

混合シグナルの緩和: ページ分割された URL を効果的に統合する

ページネーションの話題は、SEO コミュニティで常に議論されています。e コマースの製品カテゴリ、ブ...

GO言語のパフォーマンス問題の発見と解決

事件の原因この事件は、社内の同僚が社内メーリンググループに質問を投稿したことから始まりました。 go...

高品質なタイトルと一般的なタイトルのトラフィックの差は10倍

先ほど、a5 フォーラムの投稿を見ました。正直に言うと、この投稿の内容はあまり良くありませんが、タイ...

ロゴ デザインにおける最も一般的な 4 つの落とし穴。LOGO Design Network がオンラインで完璧なロゴをデザインします。

2018年最もホットなプロジェクト:テレマーケティングロボットがあなたの参加を待っています小さなロゴ...

ウェブサイトのおすすめ: オンラインマーケットプレイス Ubokia では、買い手が何を売るかを決めることができます

オンラインで何かを購入したいときは、通常、検索、調査、比較に多くの時間と労力を費やします。オフライン...

医療におけるレガシーの近代化とハイブリッド クラウドに Kafka を使用する

医療におけるレガシーの近代化とハイブリッド マルチクラウドに Kafka を使用する (例: Opt...

避けるべきクラウド コンピューティングの 7 つの致命的な間違い

[[338192]] 【51CTO.com クイック翻訳】ビジネスオペレーションの多くがクラウドで行...

2013 年の貧弱なウェブマスターのウェブサイト運営のアイデア

ウェブサイトの運用は、すべてのウェブマスターが常に考え、探求しているウェブサイト構築の問題です。最適...

推奨: クアドラネット - $5.81/KVM/512m メモリ/15g SSD/1T トラフィック

クアドラネットの価格は常に法外なものでした。非常に高価です。なぜ突然クアドラネットから撤退し、民間の...

トラフィックを実際の売上に変える方法

トラフィックの多いウェブサイトは多くの収益をもたらすことは誰もが知っていますが、トラフィックを収益に...

ウェブサイトの記事を掲載することがますます難しくなってきているのはなぜかご存知ですか?

最近では、インターネット上でウェブサイトを構築するのはとても簡単です。インターネット上には、無料のウ...