什么是SSRF
含义
- 服务器端请求伪造(SSRF)是指攻击者能够从易受攻击的Web应用程序发送精心设计的请求的对其他网站进行攻击。(利用一个可发起网络请求的服务当作跳板来攻击其他服务)
- 攻击者能够利用目标帮助攻击者访问其他想要攻击的目标
- 攻击者要求服务器为他访问URL
有道翻译就曾经出现过ssrf
导致内网地址被访问到
翻译网站发生SSRF原理
如何让翻译网站翻译某一个网站的页面
输入需要翻译的网址,则翻译该网站内容
翻译网站翻译过程
翻译网站替我们访问需要翻译的站点,然后进行翻译,所以当翻译网站没有对输入的地址做任何过滤时,内网就可能被访问到
将ip查询网址放入翻译网站进行翻译
查询外网ip的网址
https://ip.cn/
将https://ip.cn/输入到翻译口
可以看到地址发生改变,是翻译网站ip所在地,因为翻译网站替我们访问了http://ip.cn
当渗透测试过程中本机ip被禁时
可以挂一个代理
去网页搜索免费代理,添加到SwichySharp
访问http://ip.cn时ip发生变化
SSRF作用
隐藏自己
进入内网渗透
主流防御 -> 外网防护强,内网防护弱
更好地对存在SSRF漏洞进行攻击
mysql默认不允许外部访问,但对于本地没有防护
扫描内部网络
向内部任意主机的任意端口发送精心构造的数据包(payload)
DOS(请求大文件,始终保持连接Keep-Alive Always)
暴力穷举(users、files等)
虚拟机模拟
将index.php放入网站根目录下的SSRF文件夹,并放入读取ip的1.php
<?php $ip = $_SERVER['REMOTE_ADDR'];echo "Your ip is ".$ip;
?>
直接访问1.php
访问
http://192.168.139.132/SSRF/index.php?url=http://www.baidu.com
访问
http://192.168.139.132/SSRF/index.php?url=http://192.168.139.132/SSRF/1.php
访问
http://192.168.139.132/SSRF/index.php?url=http://127.0.0.1/SSRF/1.php
协议
字典协议(既能探测本机,又能探测外网)
dict://
可以探测端口
80端口
http://192.168.139.132/SSRF/index.php?url=dict://127.0.0.1:80
3306端口
ftp协议
文件传输协议
在C盘放入一个txt文件
不能直接读取
file协议
专门读取本机文件的协议
wuyun实例
http://www.anquan.us/static/bugs/wooyun-2016-0198176.html
http://www.anquan.us/static/bugs/wooyun-2016-0187550.html
漏洞编号
wooyun-2016-0198176
wooyun-2016-0187550
漏洞存在的地方
传参里面存在文件后缀或者协议的地方等
出现协议
很可能可以发起请求
出现文件后缀
有可能存在任意文件读取
Download=xxxx/xxx/xx