ホームページ >運用・保守 >安全性 >piwigo v2.9.5 の 5 つの SQL インジェクションとは何ですか?

piwigo v2.9.5 の 5 つの SQL インジェクションとは何ですか?

PHPz
PHPz転載
2023-05-15 20:55:10992ブラウズ

0x0 プロジェクトの紹介

プロジェクト アドレス: https://github.com/Piwigo/Piwigo

プロジェクトの紹介: piwigo は、インターネット ソフトウェア。組織、チーム、個人が写真ライブラリを管理できるように設計されています。

公式 Web サイトのアドレス: piwigo.org

0x1 準備

Linux でダウンロード https://github.com/Piwigo/Piwigo/archive/ 2.9.5.zip を解凍し、権限を与え、ディレクトリに入り、docker を使用してインストールします。

docker run -d --name piwigo_mysql -e MYSQL_DATABASE=piwigo -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7
docker run -d -p 3000:80 -v $(pwd)/:/var/www/html/ --link piwigo_mysql:mysql --name piwigo nimmis/apache-php5

起動インターフェイスが表示されます

0x2 Audit

##admin/group_perm.php への選択パラメータと親パラメータの挿入:

選択値は検証なしで move_categories 関数に入力されます

piwigo v2.9.5的5个sql注入分别是怎样的

move_categories 関数をトレースすると、この関数が値を分解し、それを SQL ステートメントに直接接続していることがわかります

piwigo v2.9.5的5个sql注入分别是怎样的

脆弱性はテスト後に発見できます

piwigo v2.9.5的5个sql注入分别是怎样的piwigo v2.9.5的5个sql注入分别是怎样的

admin/group_list.php 内の group_selection パラメータの 2 番目の SQL インジェクション:

図で、group_selection が値は $groups に入れられます。 コードでは、selectAction の値は $action に入れられます。 コード内の

piwigo v2.9.5的5个sql注入分别是怎样的

$action は複数のアクションに対応しますが、複数のアクションでは $group がSQL に直接結合 ステートメント内で、ここでは delete メソッドを見ていきます:

piwigo v2.9.5的5个sql注入分别是怎样的

これが SQL ステートメントに組み込まれていることが非常に直感的にわかります。

piwigo v2.9.5的5个sql注入分别是怎样的

cat_false パラメータが admin/user_perm.php に存在する場所での 3 つの SQL インジェクション:

図でわかるように、

piwigo v2.9.5的5个sql注入分别是怎样的

この関数を追跡し、admin/include/functions.php で関数を見つけます。$cat_false の値は $category に変更されます。配列かどうか、個数を判断して get_uppercat_ids 関数に入れて処理します、

piwigo v2.9.5的5个sql注入分别是怎样的

get_uppercat_ids 関数を追跡し続けます。 $cat_ids. 図を見ると、単純な判断の後に $cat_ids が SQL ステートメントに入れられ、クエリが開始されることがわかります。 ,

piwigo v2.9.5的5个sql注入分别是怎样的

この種の脆弱な関数には多くのジャンプがあります、エコーを確認できる明確な場所がありません。この状況は、時間注入に特に適しています。

1 と if(ascii(substr(database(),1,1))> を使用します;97,1,sleep(5)) 検証では、Web ページを開く際の遅延を検出し、脆弱性が存在することを証明できます。SQLmap を使用して

piwigo v2.9.5的5个sql注入分别是怎样的# のウェーブを実行します

piwigo v2.9.5的5个sql注入分别是怎样的

##admin/group_perm.php の 4 つの SQL 脆弱性:

この脆弱性は、上記の 3 つの admin/user_perm.php 脆弱性と同じです。同じ関数が呼び出されます。唯一の違いは、ユーザーとグループです。理解するには、エントリの図を見てください:

piwigo v2.9.5的5个sql注入分别是怎样的sqlmap run での filter_category パラメータの挿入を見てみましょう。 admin/batch_manager.php:

具体的なコードを見てみましょう:

投稿パッケージに「filter_category_use」キーが存在する場合、「filter_category」の値を xx['category']

に設定します。 piwigo v2.9.5的5个sql注入分别是怎样的

piwigo v2.9.5的5个sql注入分别是怎样的下に進み、xx[' Where category'] が呼び出されている部分を見つけます。値がフィルタリングされずに SQL ステートメントに直接配置されていることがわかります。

このリクエスト リンクは Web ページには見つからないため、投稿パッケージに手動で追加する必要があることに注意してください filter_category_use=on&filter_category=1

piwigo v2.9.5的5个sql注入分别是怎样的

##sqlmap 実行

piwigo v2.9.5的5个sql注入分别是怎样的

piwigo v2.9.5的5个sql注入分别是怎样的

以上がpiwigo v2.9.5 の 5 つの SQL インジェクションとは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はyisu.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。