SSRF漏洞复习总结

一.SSRF简介

SSRF(Server-Side Request Forgery),服务器端请求伪造,利用漏洞伪造服务器端发起请求,从而突破客户端获取不到数据限制。

二.漏洞的利用

1.端口扫描

2.攻击运行在内网或本地的有漏洞程序(比如溢出);

3.可以对内网Web应用进行指纹识别,原理是通过请求默认的文件得到特定的指纹

4.使用网络协议读取本地文件

5.DoS攻击(请求大文件,始终保持连接keep-alive always)

附常见攻击协议

1)Gopher 协议(主力军)

对目标发起攻击的主要协议 gopher://xxxxxx:port/主体 主体部分需要进行url编码

2).Dict协议

探测端口操作,以及版本信息 diet: //xxxx:port/info

3).ftp协议

只能探测是否存在ftp,不能进行暴力破解

4).http协议

用来探测是否存在ssrf

三.漏洞的寻找

1.社交分享功能:获取超链接的标题等内容进行显示

2.转码服务:通过URL地址把原地址的网页内容调优

3.在线翻译:给网址翻译对应网页的内容

4.图片加载/下载:例如富文本编辑器中的点击下载图片到本地;通过URL地址加载或下载图片

5.图片/文章收藏功能:主要其会取URL地址中title以及文本的内容作为显示以求一个好的用具体验

6.云服务厂商:它会远程执行一些命令来判断网站是否存活等,所以如果可以捕获相应的信息,就可以进行ssrf测试

7.网站采集,网站抓取的地方:一些网站会针对你输入的url进行一些信息采集工作

8.数据库内置功能:数据库的比如mongodb的copyDatabase函数

9.邮件系统:比如接收邮件服务器地址

10.编码处理, 属性信息处理,文件处理:比如ffpmg,ImageMagick,docx,pdf,xml处理器等

11.未公开的api实现以及其他扩展调用URL的功能:可以利用google 语法加上这些关键字去寻找SSRF漏洞

一些的url中的关键字:share、wap、url、link、src、source、target、u、3g、display、sourceURl、imageURL、domain……

12.从远程服务器请求资源(upload from url 如discuz!;import & expost rss feed 如web blog;使用了xml引擎对象的地方 如wordpress xmlrpc.php)

四.验证

1.因为SSRF漏洞是让服务器发送请求的安全漏洞,所以我们就可以通过抓包分析发送的请求是否是由服务器的发送的,从而来判断是否存在SSRF漏洞

2.在页面源码中查找访问的资源地址 ,如果该资源地址类型为 www.baidu.com/xxx.php?image=(地址)的就可能存在SSRF漏洞

五.绕过方法

1、@

http://abc@127.0.0.1

2、添加端口号

http://127.0.0.1:8080

3、短地址

http://dwz.cn/11SMa

4、可以指向任意ip的域名:xip.io

5、ip地址转换成进制来访问

115.239.210.26 = 16373751032

六.漏洞修复

1.禁止跳转

2.过滤返回信息,验证远程服务器对请求的响应是比较容易的方法。如果web应用是去获取某一种类型的文件。那么在把返回结果展示给用户之前先验证返回的信息是否符合标准。

3.禁用不需要的协议,仅仅允许http和https请求。可以防止类似于file://, gopher://, ftp:// 等引起的问题

4.设置URL白名单或者限制内网IP(使用gethostbyname()判断是否为内网IP)

5.限制请求的端口为http常用的端口,比如 80、443、8080、8090

6.统一错误信息,避免用户可以根据错误信息来判断远端服务器的端口状态。

七.小技巧

1.crontab -l 显示当前计划任务

2.crontab -r 清除当前计划任务

3.端口转发工具 socat

4.在Apache配置文件中写入下面的内容,就可以将jpg文件当做PHP文件来执行

AddType application/x-httpd-php .jpg

 

参考

https://xz.aliyun.com/t/2115

https://www.youtube.com/watch?v=PapOEUF0YWI

https://www.freebuf.com/column/194040.html

https://www.cnblogs.com/dggsec/p/8894170.html

为您推荐

发表评论

电子邮件地址不会被公开。 必填项已用*标注