一、基础概念
Server-side request forgery (SSRF),服务端请求伪造,简单来说,就是你可以访问A站点,A站点可以访问内网的B站点,你不可以直接访问B站点,但是由于A站点的防护措施或者校验不足,你可以通过控制请求,访问到B站点上的资源,然后A站点将内部网络返回的结果传递给你,你就完成了对内网的攻击。SSRF可能可以实现扫描内网,向内部任意主机的任意端口发送构造的攻击请求,攻击内网WEB应用,读取文件等等。
二、BP实验
实验一、Lab: Basic SSRF against the local server
针对本地服务器的SSRF
说的是这个系统里面有一个从内部系统获取库存数量的功能。进去:
在商品详情(view detail)里面,可以看到:
这里有一个接口可以请求查询商品的库存。
抓取这个接口:
其中:
stockApi=http%3A%2F%2Fstock.weliketoshop.net%3A8080%2Fproduct%2Fstock%2Fcheck%3FproductId%3D1%26storeId%3D1
解析就是:
http://stock.weliketoshop.net:8080/product/stock/check?productId=1&storeId=1
根据题目信息去访问本地的admin页面:
可以看到是访问到了在本地的admin页面,那就可以进行删除用户的操作:
如此便可以解决这个LAB。
主要是由于对外的WEB页面和运行在本地的admin服务器之间没有做好校验和防护,导致用户可以直接通过页面访问到本地的服务,产生SSRF攻击,产生服务端请求伪造。