SSRF简单复现
SSRF(服务器端请求伪造)
0x01. 相似原理:
翻译: 提供需要翻译的文字 -> 翻译软件 -> 返回翻译后的数据
A 控制 B 去访问 C
网页翻译原理:
方案A:
1.请求目标站点
2.获取浏览器上面的目标站点数据
3.翻译软件把数据返回
方案B:
1.提供目标网址给翻译网站
2.翻译网站代访问,得到目标网站数据
3.翻译网站返回翻译后的数据
SSRF:指攻击者能够从易受攻击的Web应用程序发送设计的请求对其他网站进行攻击(利用一个可发起网络请求的服务当做跳板来攻击其他目标)
0x02. SSRF的核心是攻击内网
通过SSRF可以做到如下:
- 扫描内部网络
- 向内部任意主机和任意端口发送数据包
- DOS
- 暴力穷举:网络请求
有些时候厂商为什么会用已知漏洞组件
-
使用的时候没有漏洞
-
爆发漏洞管理员没关注
-
漏洞修复有风险
-
内网不会被黑客访问到。
防御SSRF方法:
1.正则匹配法
内网ip:http://内网IP地址 禁止url写内网ip
http://[email protected]:8003 @绕过
当@被禁止时可以用DNS方法:
dnslog中的所有url都是访问127.0.0.1访问网站的协议有很多:
使用file协议读取本地文件
用法:file:/// 读取文件
使用dict(可探测端口)
用法:dict://地址+端口 dict://127.0.0.1:81Redis:缓存数据库(默认情况没有密码) 但是只有本机能够访问
SSRF -> 1.可作为跳板
2.可以攻击内网网站
3.可以攻击内网的服务
0x03. 如何发现ssrf:
传参出现协议头: http:// http://www.baidu.com/s?wd=ip
协议:http:// 任意其他协议都可以试试SSRF
传参出现文件名: a.txt => b.php (x.后缀) http://www.baidu.com/?id=1.php
(1)文件读取
(2)文件包含
(3)任意文件下载
0x04. SSRF、CSRF、XSS的区别:
CSRF: 利用cookie,让浏览器偷偷发包
CSRF(客户端请求伪造、跨站请求伪造) -> 控制受害者的浏览器发起网络请求
核心:浏览器在用户不知情的情况下偷偷发送数据包
XSS: 窃取cookie,在浏览器上执行
SSRF:在服务器上执行,让服务器偷偷发包 (跟后端有关,与前端无关)
SSRF(服务端请求伪造) -> 控制目标服务器发起网络请求
如何防御SSRF |
测试
打开靶场,让输入想访问的地址 |
可以发起网络请求,存在SSRF,但SSRF的核心就是攻击内网,试试访问127.0.0.1:80能不能够访问到
成功访问到127.0.0.1:80,所以页面有相同
既然能够访问到,那就用burp跑一下,用dict探测端口开放了哪些
这时候还没跑完,但是有看到开放了80 81端口,先让他跑着,手动访问一下81端口看有没有什么内容。 |
发现页面是没有任何东西,但是打开页面源代码,发现了flag。
进阶内容(利用gopher、redis getshell)
0.01. 安装Redis
在kali中安装redis,安装版本命令下载压缩包 :
wget http://download.redis.io/releases/redis-2.8.17.tar.gz
解压:tar xzf redis-2.8.17.tar.gz
进入到redis目录:cd redis-2.8.17
make
然后进入到src文件夹,./redis-server
启动redis服务
然后再./redis-cli
启动redis 输入ping 如果返回pong就正常正常启动了
0x02. 创建根目录并配置redis
首先需要用到root权限,进入home文件夹后创建一个wwwroot文件夹,在wwwroot中创建一个default文件夹,以便存放后续的一句话木马。
/home/wwwroot/default
是网站的根目录.
这里我保存失败了,需要用ROOT权限来启动Redis,又重新来过,用root权限开启redis服务器以及运行redis
0x03. 开启Wireshark监听网卡
打开Wireshark,选择kali网卡进行监听,然后在redis中,刚刚创建好的根目录下写入一个一句话木马。
在Wireshark中右键 -> 追踪TCP流 -> 复制所有内容进行url编码
由于事先没有开启wireshark监听网卡,所以这里我开启wireshark之后,又重新创建了一个一句话木马
在wireshark中,直接右键追踪-TCP流
将数据复制下来,进行url编码
url编码之后加上gopher
的前缀,然后放到搜索框内,点击执行,上面这张图因为没有将?进行url编码导致失败,一定要将问号也进行url编码.
总结一下遇到的问题: |