0x0 プロジェクトの紹介
プロジェクト アドレス: https://github.com/Piwigo/Piwigo
プロジェクトの紹介: piwigo は、インターネット ソフトウェア。組織、チーム、個人が写真ライブラリを管理できるように設計されています。
公式 Web サイトのアドレス: piwigo.org
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
起動インターフェイスが表示されます
##admin/group_perm.php への選択パラメータと親パラメータの挿入:
選択値は検証なしで move_categories 関数に入力されますmove_categories 関数をトレースすると、この関数が値を分解し、それを SQL ステートメントに直接接続していることがわかります 脆弱性はテスト後に発見できます
admin/group_list.php 内の group_selection パラメータの 2 番目の SQL インジェクション:
図で、group_selection が値は $groups に入れられます。 コードでは、selectAction の値は $action に入れられます。 コード内の $action は複数のアクションに対応しますが、複数のアクションでは $group がSQL に直接結合 ステートメント内で、ここでは delete メソッドを見ていきます: これが SQL ステートメントに組み込まれていることが非常に直感的にわかります。
cat_false パラメータが admin/user_perm.php に存在する場所での 3 つの SQL インジェクション:
図でわかるように、 この関数を追跡し、admin/include/functions.php で関数を見つけます。$cat_false の値は $category に変更されます。配列かどうか、個数を判断して get_uppercat_ids 関数に入れて処理します、 get_uppercat_ids 関数を追跡し続けます。 $cat_ids. 図を見ると、単純な判断の後に $cat_ids が SQL ステートメントに入れられ、クエリが開始されることがわかります。 , この種の脆弱な関数には多くのジャンプがあります、エコーを確認できる明確な場所がありません。この状況は、時間注入に特に適しています。1 と if(ascii(substr(database(),1,1))> を使用します;97,1,sleep(5)) 検証では、Web ページを開く際の遅延を検出し、脆弱性が存在することを証明できます。SQLmap を使用して
# のウェーブを実行します
##admin/group_perm.php の 4 つの SQL 脆弱性:この脆弱性は、上記の 3 つの admin/user_perm.php 脆弱性と同じです。同じ関数が呼び出されます。唯一の違いは、ユーザーとグループです。理解するには、エントリの図を見てください:
sqlmap run での filter_category パラメータの挿入を見てみましょう。 admin/batch_manager.php:
具体的なコードを見てみましょう: 投稿パッケージに「filter_category_use」キーが存在する場合、「filter_category」の値を xx['category']に設定します。
下に進み、xx[' Where category'] が呼び出されている部分を見つけます。値がフィルタリングされずに SQL ステートメントに直接配置されていることがわかります。
このリクエスト リンクは Web ページには見つからないため、投稿パッケージに手動で追加する必要があることに注意してください filter_category_use=on&filter_category=1
以上がpiwigo v2.9.5 の 5 つの SQL インジェクションとは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。