引子:SSRF 服务端请求伪造攻击
很多web应用都提供从其他服务器上获取数据的功能。使用用户指定的URL,web应用可以从其他服务器获取图片,下载文件,读取文件内容等。
这个功能被恶意使用的话,可以利用存在此缺陷功能的web应用作为代理(读取其他服务器攻击载荷),攻击远程和本地服务器。这种形式的攻击叫SSRF。 以上攻击载荷都是客户端编写URL让服务端完成加载,最后由服务端执行与发起。
剧透,本文所有知识,方式均借鉴于www.wooyun.org 该网站未被弹劾时,是国内白帽子的学习天堂,有点国内哈佛的环境,无所不言,无所不思。乌云没了,就感觉你最重要的人走了的这种心痛。良药苦口,以后遇到说你的东西存在严重问题时,你可以不理睬,但一定要克制住自己,不要利用关系痛下杀手,排挤别人出局。 还是附带一个参考源吧:https://www.shentoushi.top/knowledge
分析知识源:得到各程序的代码功能性知识,利用功能性做验证,检查是否存在缺陷。要掌握这种挖洞能力需要具备以下几点:
1.需要阅读源代码(从软件工程的角度)学习软件功能而不是从每一句话,每一个函数,从一整块功能性的代码入手。
2.需要引子,功能性代码别人是如果发现与测试出来的?有一个例子先行,然后模仿它,举一反三(你改了这里做测试,那我明白了,改一下其他地方做做实验)。
师傅不教你踩离合器挂上一档,或者你没看过教学视频,你是不会举一反三挂上二三四五档和倒挡的,就是这个学习心理。
防御也是一样:攻击步骤你都不清楚,你知道在哪里做防御吗?下载安全狗,搞好防火墙。最后发现一样被莫名其妙的攻击了。
学语言是为了看懂功能性的代码,知道功能性是为了发现漏洞,学安全是为了得到实际的经验然后开窍自己FQ上YouTube找到一手教学信息。
因为,国内大部分的开源教学都是从国外网站,YouTube搬运过来的。有的甚至拿这个信息差割韭菜收你的费用。
可以利用该漏洞实现的攻击方式:
信息收集:对外网、服务器所在内网、本地进行端口扫描,获取一些服务的bannar信息。对内网web应用进行指纹识别,访问默认文件实现。
在下图方式入手: 可以发现其实就是在GET方式或者POST方式上面尝试提交URL
这里可以用python写一个脚本,判断端口返回的信息是否为空,来完成信息收集 【本地进行端口扫描】
提交得到的URL看是否可以识别,如果可以就说明用的tomcat
执行指令:主要是使用GET参数(比如struts2,sqli等)
执行指令(溢出):攻击运行在内网或本地的应用程序(比如溢出)
信息收集:利用file协议读取本地文件等
以下业务场景容易出现这种漏洞:
1.应用从用户指定的URL获取图片。然后把它用一个随机文件名保存在硬盘上,并展示给用户
2.应用获取用户指定URL的数据(文件或HTML)。这个函数会使用socket跟服务器建立tcp连接,传输原始数据
3.应用根据用户提供的URL,抓取用户的web站点,并自动生成移动wap站
4.应用提供测速功能,根据用户提供的URL,访问目标站点,以获取其在对应经纬度的访问速度
1)分享:通过URL地址分享网页内容
2)转码服务:通过URL地址把原地址的网页内容调优使其适合手机屏幕浏览
3)在线翻译:通过URL地址翻译对应文本的内容
4)图片加载与下载:通过URL地址加载或下载图片
5)图片、文章收藏功能
6)未公开的API实现以及其他调用URL的功能
7)URL关键词寻找 在对功能上存在SSRF漏洞中URL地址特征的观察,大致有以下关键字:
share wap url image link src source target u 3g display sourceURL domain
SSRF漏洞验证 以下在客户端都看见了发起请求了,那就不是服务端发起的,所以不是SSRF漏洞
现在大多数修复SSRF的方法基本都是区分内外网来做限制(暂不考虑利用此问题来发起请求,攻击其他网站,从而隐蔽攻击者IP,防御此问题就要做请求的地址白名单)
实例验证
防御:
绕过
原文地址:https://www.cnblogs.com/sec875/p/10805601.html