CSRF(跨站/客户端请求伪造)
浏览器因为JS偷偷发送数据包
SSRF(服务器端请求伪造)
服务器因为你的传参偷偷发送数据包
C or S: C 客户端(client) S 服务端(sever)
我们遇到不懂的英文或者其他语言的时候,我们就会打开一个翻译网站,但是翻译网站不仅能翻译单词,还可以翻译网页,那这个翻译网页的功能是如何实现的呢
第一种情况:你访问了目标站点,然后翻译网站通过JS去获取你页面显示的信息,然后传递给翻译网站去查
第二种情况:翻译网站直接替代我们去访问目标站点,然后获得内容后查询英文对应,处理完之后返回给我们
当然,一般情况下是第二种,那么我们如何检验到底是我们访问了目标网站还是翻译网站访问了目标网站呢,我们可以去查看外网IP,如果需要身份验证,那么就是我们访问了目标网站,反之就是翻译网站
我们直接百度IP,然后复制链接,看IP地址是不是刚才我们所搜的IP地址就行了
其实这就是典型的SSRF,我们传参,然后服务器去访问
SSRF原理:
服务端为了从其他服务器应用获取数据的功能,且没有对目标地址做过滤和限制
SSRF危害:
1、访问内网
2、当做跳板机来躲避追踪
3、攻击目标本机
SSRF常用协议:
Dict:// 查看端口、版本信息、向服务器端口请求curl命令、File:// 读取文件、http/https:// 探测内网主机存活
gopher:// 用于发起GET/POST请求,可以发起TCP数据流
SSRF挖掘:
从URL传参里面寻找url、link、target、sourceURL、imageURL等
如果哪个传参带了协议名或者是带了文件后缀,都有可能存在SSRF,一般而言有协议名传参的基本都有,如果是带了文件后缀的,很有可能存在SSRF漏洞或者任意文件下载或者任意文件读取
SSRF防御:
1、统一错误信息
2、限制请求的端口
3、过滤返回的信息
4、黑名单内网ip
5、禁用其他协议,允许http,https
6、禁用函数( file_get_contents()、fsockopen()、curl_exec()三个函数防止SSRF)
7、限制内网Ip传参
8、开启内部访问也需要身份认证
SSRF绕过:
1、http://[email protected]
2、ip地址八进制、十进制、十六进制绕过
SSRF核心:
1、进入了内网,绕过了很多防火墙机制,因为防御大部分对外不对内
2、可以去访问存在漏洞机器上面的内部开放端口。可以触发漏洞(redis之类的)
3、可以通过file协议读取敏感信息
我们靶场实践一下:
我们可以看到URL传参上面有url=xxx这样的信息,我们尝试使用其他协议来访问一下
我们可以利用dict协议来探测端口,如图所示就是开放了80端口,没开放就是啥也不显示
也可以使用file协议来读取文件内容,想要读取的文件内容可以通过目录扫描或者目录爆破来指导路径