---
# System prepended metadata

title: 2020 程安 Web筆記3 (SSRF. 反序列化)
tags: [程式安全]

---

# 2020 程安 Web筆記3 (SSRF. 反序列化)
###### tags: `程式安全`

## SSRF(Server side request forgery)
- 攻擊者在無須獲得系統權限的情況下,利用Server端主動發起請求,已獲得特定資源
    > 請求的目標通常是client無法碰到的內網資源

### 發生場景
- 各種user給網址,server再去抓網址的狀況 (ex.上傳圖片網址, 連結預覽, etc)

### 如何判別有無SSRF
- 會回傳user給的網址的內容
- 自己架一個server,給目標server自己server的IP,看自己server的log
    - 但目標server可能會擋對外的http
- 看目標server是否有進行DNS query
    - 因為比起http,通常比較不會擋DNS

### 攻擊甚麼
- 可以讀本地檔案
    - `file:///etc/passwd`
    - `file://127.0.0.1/etc/passwd`
    - Python:
        - 較舊的版本
        `local_file:///etc/passwd`
    - Java:
        - 可以列目錄
        `file:///etc/`
        `netdoc:///etc/`
    - php:
        `php://filter...`
        `php://fd`
        
- 內部web service
    - `http(s)://` : 只能送GET
    - `gopher://` : 可以構造任意TCP封包
        - http get request
        ![](https://i.imgur.com/05oxqqa.png)

        ```python
        gopher://127.0.0.1:80/_GET%2520/%2520HTTP/1.1%250d%250aHOST:127.0.0.1%250d%250a%250d%250a
        ```
        
        - `%25 = %` : 因為總共會經過兩次url decode
            | input        | %0d%0a | %250d%250a |
            | ------------ | ------ | ---------- |
            | browser      | \r\n   | %0d%0a     |
            | server(curl) |        | \r\n       |
            |              | (X)    | (0)        |


## 反序列化(Deserialization)
