SSRF漏洞
SSRF漏洞
xxshh原理
SSRF (Server-Side Request Forgery: 服务器端请求伪造) 一种由攻击者构造形成由服务端发起请求的一个安全漏洞;
一般情况下,SSRF 攻击的目标是从外网无法访问的内部系统。(正是因为它是由服务端发起的,所以它能够请求到与它相连而与外网隔离的内部系统)
SSRF 形成的原因大都是由于服务端提供了从其他服务器应用获取数据的功能且没有对目标地址做过滤与限制。
协议利用
|
漏洞防御
- 过滤返回信息,验证远程服务器对请求的响应。
- 统一错误信息,避免用户可以根据错误信息来判断远端服务器的端口状态。
- 限制请求的端口为 http 常用的端口,比如,80,443,8080,8090。
- 黑名单内网 ip。避免应用被用来获取获取内网数据,攻击内网。
- 禁用不需要的协议。仅仅允许 http 和 https 请求。可以防止类似于 file://, gopher://, ftp:// 等引起的问题。
白盒绕过
- 无过滤直接获取
payload:
|
- IP地址进制绕过
正则过滤规则 /localhost|127.0.|。/i
payload:
|
- 域名解析IP绕过
将自己拥有的域名添加一个记录解析为127.0.0.1。
如:test.xxx.com -> 127.0.0.1
payload:
|
- 利用重定向解析绕过
在自己服务器上写一个跳转页面代码如下:
|
payload:
|
- 匹配且不影响写法解析
正则匹配规则 (url 中必须包含) /http://ctf.. * show$/i
payload:
|
- 利用gopher协议打服务
有一些前提条件,比如redis未授权、mysql无密码等。
利用工具:https://github.com/tarunkant/Gopherus
注意工具生成的url,要进行一次url编码,因为服务器会自动解一次码。
执行payload后就生成了x.php。
无回显的解决办法
- dnslog 外带
浅析DNSlog在渗透测试中的实战技巧_xml +dnslog-CSDN博客
- 反向连接
- 正向连接
一般RCE执行可以用这个方式,SSRF得用第一种方式,因为SSRF无法写文件。
写个文件在对方网站目录下,然后再去访问网站目录是否存在这个文件就能判断目标是否执行了RCE命令。