Hello there, ('ω')ノ
同じエンドポイントでのXSS、RCE、およびHTMLファイルのアップロードを。
脆弱性:
XSS
RCE
無制限のファイルアップロード
記事:
https://sa1tama0.medium.com/xss-rce-html-file-upload-in-same-endpoint-4a03348445f4
ツール:
Burp Suite
今回のターゲットは、民間企業で。
パートナーのコミュニケーションに使用されるサブドメインの。
partners.site.comを見つけて。
名前の文字長が64文字に設定されていたため、名前を100文字以上に設定すると。
情報が開示されて。
206 An exception occurred while executing ‘INSERT INTO partners.user (id, site_id, name, email, avatar) VALUES (?, ?, ?, ?, ?)’ with params [283, 411571, “\”aaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbccccccccccccdddddddddd…”, “sa1tama0@wearehackerone.com”, “https:\/\/secure.gravatar.com\/avatar\/e5fbf987aa8c9f4b1ee0f05ad.jpg?d=mm”]: SQLSTATE[22001]: String data, right truncated: 7 ERROR: value too long for type character varying(64)
このエラーを使用してXSS(Self XSS)を実行する可能性があって。
さらには、名前フィールドでCSRFを見つけたので。
SelfXSSをStoredXSSにアップグレードしようとしたところ失敗して。
その後、partners.site.com/adminに非表示のユーザパネルが表示されるので。
詳細を変更できて。
さらには、ロゴをアップロードするオプションもあったので。
頭に浮かんだのは、SVGファイルをアップロードすることで。
SVGが正常にアップロードされたので。
SVGファイルをアップロードしてXSS(誰に対しても非特権ユーザ)を取得して。
その後、ブラインドXSS用のSVGを作成して、重大度をアップグレードできて。
下記がPHPファイルのアップロードによるRCEで。
さらにその後、サイトを再チェックして。
SVGファイルをもう一度アップロードしようとしてバイパスも試したものの。
うまくいかなかったので、拡張子なしで画像をアップロードすると。
画像は正常にアップロードされて、フロントエンドに通常の画像が表示されて。
画像を開くと、生のコードがcontent-type:text/htmlとして表示されたので。
PHP拡張子のファイルをアップロードしみると失敗したので。
JPG Shell Uploading(Ninja Method)を試すことに。
1.画像(PHPコードとバインド)を選択し、クリックしてアップロードして。
2.Burp Suiteを使用してリクエストをキャプチャして。
3.ファイル名をrce.phpに変更して。
Best regards, (^^ゞ