Shikata Ga Nai

Private? There is no such things.

DOM XSS in AngularJS expression with angle brackets and double quotes HTML-encodedをやってみた

Hello there, ('ω')ノ

 

HTMLでエンコードされた山括弧と二重引用符を使用したAngularJSのDOM XSSを。
まずは、サイトにアクセスして。

データを入力して、検索して。

 abc123

 

f:id:ThisIsOne:20210311150746p:plain

 

ソースコードを見ると。

入力して表示された文字列は、ng-appディレクティブで囲まれていて。

ディレクティブがHTMLコードに追加されると。

二重中括弧内でJavaScript式が実行できて。

 なので、山括弧がエンコードされている場合に役立って。

 

f:id:ThisIsOne:20210311151024p:plain

 

ただ、下記のデータを入力するとブロックされて。

 {{'-alert-'()}}

 

f:id:ThisIsOne:20210311154748p:plain

 

下記のような入力については、完全にブロックされて。
 {{alert('Rob')}}

 

f:id:ThisIsOne:20210311154857p:plain

 

下記のAngularJS式を入力して検索すると。

 {{$on.constructor('alert(1)')()}}

 

f:id:ThisIsOne:20210311153048p:plain

 

alert()が呼び出され。

 

f:id:ThisIsOne:20210311152758p:plain

 

クリアできた。

 

f:id:ThisIsOne:20210311152824p:plain

 

Best regards, (^^ゞ