WebGoat全通关:A10-Server-side-Request-Forgery

Server-side Request Forgery #

服务端请求伪造的本质是利用客户端的请求去控制服务端向哪里获取资源,从而控制服务端发送请求达到

  • 泄漏服务端信息
  • 利用服务端鉴权

远程文件包含也算是一种 SSRF、XXE 也会发起 SSRF

第一个实验:将 tom 图片换成 jerry 图片 #

抓包可以看到 HTTP 请求

POST /WebGoat/SSRF/task1 HTTP/1.1
Host: 127.0.0.1:8080
Content-Length: 20
sec-ch-ua: 
Accept: */*
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
X-Requested-With: XMLHttpRequest
sec-ch-ua-mobile: ?0
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.5845.111 Safari/537.36
sec-ch-ua-platform: ""
Origin: http://127.0.0.1:8080
Sec-Fetch-Site: same-origin
Sec-Fetch-Mode: cors
Sec-Fetch-Dest: empty
Referer: http://127.0.0.1:8080/WebGoat/start.mvc?username=webgoat
Accept-Encoding: gzip, deflate
Accept-Language: en-US,en;q=0.9
Cookie: JSESSIONID=585E98137A17206DDDD1F30876629FE3
Connection: close

url=images%2Ftom.png

可以看到后端读取前端请求的 url 字段并请求 url 字段中的内容加载到页面

tom.png 换成 jerry.png 即可

第二个实验:将 http://ifconfig.pro 的内容包括到页面上 #

只要不那么循规蹈矩,让 url 请求远程的资源而不是本地资源即可

url=http%3A%2F%2Fifconfig.pro

其他 SSRF 应用:

  • 使用 dnslog 做 PoC
  • Net NTLM relay