CSRF和SSRF
CSRF和SSRF
一、CSRF
CSRF(Cross-Site Request Forgery)也叫做跨站请求伪造。当用户登录某个网站,并且点击了该网站上面含义恶意代码的链接,就会跳转到第三方网站,这个网站冒用已登录用户的身份,直接对服务器接口发起请求,获得敏感信息等操作。
1. CSRF漏洞的危害
1.修改账户信息
2.利用管理管账号,上传木马文件
3.传播蠕虫病毒(点击、扩散、点击......)
4.和其他攻击手段配合,实现攻击,比如XSS、SQL注入
2. 判断CSRF是否存在
1.怎么确定一个接口地址是否有CSRF漏洞呢?(如果从第三方网站直接调用接口成功)
2.具体怎么对一个接口进行检测,确定是否存在CSRF漏洞?(抓取正常通信请求的数据包,再请求一次)
3.自动检测CSRF漏洞的工具有哪些?(BurpSuite 、CSRFTester、https://github.com/s0md3v/Bolt、https://cloud.tencent.com/product/vss)
3. 防御方案
1.当用户发送重要的请求时需要输入原始密码
2.设置随机Token
3.检验referer来源,请求时判断链接是否为当前管理员正在使用的页面(管理员正在编辑文章,黑客发来恶意的修改密码链接,因为修改密码页面管理员并没有在操作,所以攻击失败)
4.设置验证码
5.限制请求方式只能为POST
二、 SSRF
SSRF(Server-Side Request Forgery)也叫做服务器端请求伪造。通过该漏洞可以入侵从外网无法访问的内部系统,因为服务器端提供了从其他服务器应用获取数据的功能并且没有对目标地址做过滤与限制。
1. 容易出现SSRF的地方
从web功能上寻找
- 分享:通过URL地址分享网页内容
- 转码服务:通过URL地址把源地址的内容调优使其适合手机屏幕流量
- 在线翻译:通过URL地址翻译对应文本的内容。提供此功能的国内公司有百度、有道等
- 图片加载与下载:通过URL地址加载或下载图片
- 图片、文章收藏功能
- 未公开的api实现以及其他调用URL功能。
从URL关键字中寻找
使用谷歌语法搜索关键字:share/wap/url/link/src/source/target/u/3g/display/sourceURI/imagrURL/domain
验证
1.基本判断法(排除法):burp suite抓包,右键打开图片
容易引起SSRF的漏洞
协议 | 作用 | payload |
---|---|---|
file | 查看文件 | curl -v 'file:///etc/passwd' |
dict | 探测端口 | http://localhost/ssrf/ssrf1.php?url=dict://127.0.0.1:3306 |
gopher | 反弹shell | curl -v |
curl_exec() | 执行cURL会话 | |
file_get_contents() | 将整个文件读入一个字符串 | |
fsockopen() | 打开一个网络连接或者一个Unix套接字连接 |
各种编程语言支持的协议
PHP | Java | curl | Perl | ASP.NET | |
---|---|---|---|---|---|
http | √ | √ | √ | √ | √ |
https | √ | √ | √ | √ | √ |
gopher | with curlwrappers | before JDK 1.7 | before7.49.0不支持 | √ | before version 3 |
tftp | with curlwrappers | × | before7.49.0不支持 | × | × |
dict | with curlwrappers | × | √ | × | × |
file | √ | √ | √ | √ | √ |
ftp | √ | √ | √ | √ | √ |
pop3 | with curlwrappers | × | √ | √ | × |
rstp | with curlwrappers | √ | √ | √ | √ |
smb | with curlwrappers | √ | √ | √ | √ |
smtp | with curlwrappers | × | √ | × | × |
telnet | with curlwrappers | × | √ | × | × |
imap | with curlwrappers | × | √ | √ | × |
ssh2 | 受限于allow_url_fopen | × | × | 受限于Net-SSH2 | × |
2. SSRF的危害
1.扫描资产
2.获取敏感信息
3.攻击内网服务器
4.访问大文件,造成溢出
5.通过Redis写入WebShell或建立反弹连接
3. 预防SSRF
1.禁用协议
2.限制请求端口
3.设置URL白名单
4.过滤返回信息
5.统一错误信息