Shikata Ga Nai

Private? There is no such things.

Reflected XSS in a JavaScript URL with some characters blockedをやってみた

Hello there, ('ω')ノ

 

一部の文字がブロックされたJavaScriptURLに反映されたXSSを。

このラボでは、入力内容をJavaScript URLに反映していて。

ただ、アプリケーションはXSS攻撃を防ぐために一部の文字をブロックしていると。

ラボを解決するには、アラートメッセージのどこかに含まれている。

文字列1337を使用してアラート関数を呼び出すXSS攻撃を実行せよと。

 

f:id:ThisIsOne:20210324155106p:plain

 

下記を実行するとクリアできた。

 

https://ac741fcf1e4eef80807d013000c400a9.web-security-academy.net/post?postId=5&%27},x=x=%3E{throw/**/onerror=alert,1337},toString=x,window%2b%27%27,{x:%27

 

f:id:ThisIsOne:20210324155206p:plain

 

Back to Blogをクリックすると、alertが呼び出されて。

 

f:id:ThisIsOne:20210324155247p:plain

 

まずは、このコードをデコードしてみると。

 

 '},x=x=>{throw/**/onerror=alert,1337},toString=x,window+'',{x:'

 

f:id:ThisIsOne:20210324155359p:plain

 

このエクスプロイトは、入力タイプがないので。

例外処理を使用して、引数を使用してアラート関数を呼び出して。

スペースなしの制限を回避するために、throwステートメントが使用されて。

空白のコメントで区切って。

アラート機能は、onerrorで例外がステートメントとしてスローとして処理されて。

 これをWindowsのtoStringプロパティに割り当てて。

 

throwはステートメントであるため、式として使用することはできなくて。

通常のfunction関数でなく、arrow関数を使用してブロックを作成して。

throwステートメントを使用できるようにする必要があって。

 x=x=>

 

下記だとブロックされるので

 ,toString=alert(1337),window+'',

 

下記のようにして、toStringを上書きして。

 ,toString=x,window+'',

 

下記は、JavaScriptを壊さないために追加して。

 {x:'

 

Best regards, (^^ゞ