Hello there, ('ω')ノ
論理を破る: ショッピング サイトの商品評価で遊ぶを。
脆弱性:
ロジックの欠陥
パラメータの改ざん
記事:
今回は、主な用途は特定の飲料ショッピングサイトで。
いつものように、サイトのすべての機能と仕組みを学ぶのに時間をかけ。
すべてのユーザのメンバーシップ、パッケージ、およびプロファイルがあり。
最も重要なことは、プログラムを諦めないことで。
ほとんどの人は、そこに脆弱性が見つからないと感じているため、
頻繁にプログラムを切り替えて。
しかし、そうではなく、時間をかけてサイトの仕組みを学習する必要があり。
だから、時間をかけてウェブサイトのすべての機能を学び、
特定のページと機能をテストし始めて。
製品ページをさまよいながら、実際に購入しなくても
飲料を評価できることに気付き。
そのリクエストは次のとおりで。
POST /customer/product/product-rating.json HTTP/2
Host: www.xxxx.com
Cookie: xxx
Content-Length: 81
Sec-Ch-Ua: " Not A;Brand";v="99", "Chromium";v="102", "Google Chrome";v="102"
Content-Type: application/json
X-Csrf-Token: xxxxx
Sec-Ch-Ua-Mobile: ?0
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.0.0 Safari/537.36
Sec-Ch-Ua-Platform: "Windows"
Accept: */*
Origin: xxx
Sec-Fetch-Site: same-origin
Sec-Fetch-Mode: cors
Sec-Fetch-Dest: empty
Referer: https://www.xxx.com/products/xxx
Accept-Encoding: gzip, deflate
Accept-Language: en-US,en;q=0.9,tr;q=0.8
{
"comment":"",
"productId":27044,
"yesOrNo":5,
"sliderRating":5,
"favourite":false
}
評価には 2 つのタイプがあり、そのうちの 1 つは
「これをもう一度購入しますか?」という単純な質問で。
はいを選択すると、「yesOrNo:5」が返され、
そうでない場合は、「yesOrNo:1」が返され。
したがって、競合状態を試して、YesOrNo の質問に 1 の値を与えることで、
評価を操作できると考え。
しかし、それはうまくいかず。
その他の評価はこちら これは単純な星の評価で、5 つのうち何個の
ハートを付けたいかを選択すると、それがスライダーの評価に返され。
いくつか試してみましたが、そのうちの 1 つは、sliderRating を
150 に変更することで。
フロントエンドとAPIの両方で「150」と表示されて。
応答は次のとおりで。
HTTP/2 200 OK
Date: Sat, 25 Jun 2022 19:54:16 GMT
Content-Type: application/json;charset=UTF-8
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Content-Security-Policy:
Expires: 0
Pragma: no-cache
Strict-Transport-Security: max-age=31536000
X-Content-Type-Options: nosniff
X-Content-Type-Options: nosniff
X-Frame-Options: SAMEORIGIN
X-Xss-Protection: 1; mode=block
Expect-Ct: max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"
{"rating":{"id":113062722,"rating":150.0,"sliderRating":600.0,........}
ご覧のとおり、星の評価と「はい」または「いいえ」の質問の両方を操作でき。
これはセキュリティ上の問題ではありませんでしたが、
ビジネス ロジックのエラーとして受け入れられて。
Best regards, (^^ゞ