一、SSRF
服务端请求伪造
用户对A网站传参,访问B网页
用户可以控制A网站发起网络请求
eg:翻译网页
1、通过JS把整个页面需要翻译的东西给翻译网站,翻译后还给用户。
两个得到的ip都是一样的
2、翻译网站直接帮你翻译,得到结果后给你。
得到的ip不同
3、作用
操作服务器发起网络请求
1、可以做攻击其他人的跳板
2、可以杀入内网 192.168.1.1
3、可以杀入本机 127.0.0.1
4、扫描内部网络
5、向内部人已主机任意端口发送精心构造的数据包
6、DOS,请求大文件,始终保持连接
7、暴力穷举(users/dirs/files)
4、SSRF支持的协议
Dict:// file:// sftp:// ldap:// gopher:// ftp:// http:// 等;
可以用dict://来探测开放端口
测试方法:传参http://www.baidu.com/s?wd=ip,如果出来的IP不是自己的IP,高概率则这个地方存在ssrf
怎么找?
传参出现协议头(http:/)
传参出现文件名(a=index.php)
传参出现后缀
案例:
https://www.uedbox.com/post/10801/
https://www.uedbox.com/post/12328/
5、SSRF,CSRF,XSS区别?
CSRF:利用Cookie让浏览器偷偷发包
XSS:窃取Cookie,在浏览器上执行
SSRF:让服务器偷偷发包,在服务器上执行
二、靶场
1、进入靶场,我们输入访问地址https://www.baidu.com/s?wd=ip,然后点击进入链接。可以发现url传参栏目有协议头和传参后缀出现,大概率有ssrf漏洞。
我们可以试着访问一下本地,发现是可以访问的
于是我们用dict协议探测开启了哪些端口,这里实验发现是开启了80端口的。
我们直接用burp跑包,显示开启的端口是22,80,81
进入81端口,在源代码中就可以发现被注释的flag