[10期]浅谈SSRF安全漏洞

引子: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,防御此问题就要做请求的地址白名单) 

实例验证

防御:

 

绕过

 

 

 

猜你喜欢

转载自www.cnblogs.com/sec875/p/10805601.html