个人理解
- 博主在学习SSRF时总有一些奇怪的既视感,经过亿秒的反应后,得出了CSRF是借助用户之手发送请求,SSRF是借助服务器之手发送请求的结论。博主新手上路,如有理解错误,欢迎各位指正。
场景
- 外网无法直接访问的内部系统,攻击者通过伪造服务端的请求发起攻击,借由服务端为跳板来攻击目标系统。
渗透目的
- 内外网的端口和服务探测
- 主机本地敏感数据的读取
- 内外网主机应用程序漏洞的利用
漏洞发现
- 根据第一条的说法,其实只要存在能够对外发起网络请求的地方,就可能存在SSRF漏洞。
- 以下是一些实例:
- 社交分享功能:获取超链接的标题等内容进行显示;
- 转码服务:通过URL地址把原地址的网页内容调优使其适合手机屏幕浏览;
- 网页内容翻译:给网址翻译对应网页的内容;
- 图片加载/下载:例如富文本编辑器中的点击下载图片到本地;通过URL地址加载或下载图片;
- 图片/文章收藏功能:主要网站会取URL地址中title以及文本的内容作为显示以求一个好的用户体验;
- etc.
验证漏洞
-
因为SSRF漏洞是构造服务器发送请求的安全漏洞,所以我们可以通过抓包分析发送的请求是否是由服务器端发送的来判断是否存在SSRF漏洞;
-
在页面源码中查找访问的资源地址,如果该资源地址类型为http://www.xxx.com/a.php?image=(地址)的可能存在SSRF漏洞。
利用漏洞
- 首先尝试是否通过服务器可以访问外网,如果服务器有其他服务只能本地访问,比如phpmyadmin,则可以构造ssrf.php?url=127.0.0.1、phpmyadmin并使用burp进行爆破,查找开放端口。
防御
-
过滤返回信息,验证远程服务器对请求的响应是比较容易的方法。如果web应用是去获取某一种类型的文件。那么在把返回结果展示给用户之前先验证返回的信息是否符合标准;
-
统一错误信息,避免用户可以根据错误信息来判断远程服务器的端口状态;
-
限制请求的端口为http常用的端口,比如80,443,8080,8090;
-
黑名单内网ip。避免应用被用来获取内网数据,攻击内网;
-
禁用不需要的协议。仅仅允许http和https请求。可以防止类似于file:///,gopher://,ftp:// 等引起的问题。
文章介绍了SSRF(Server-SideRequestForgery)的概念,它是攻击者利用服务器发起请求的一种方式,常用于攻击内部系统。常见场景包括社交分享、转码服务等。检测SSRF漏洞可通过分析请求来源,防御措施包括验证响应、限制端口、黑名单内网IP及禁用非必要协议。
168

被折叠的 条评论
为什么被折叠?



