原创 | 一文看懂服务器请求伪造漏洞

admin 2024年11月17日22:31:19评论26 views字数 1940阅读6分28秒阅读模式

什么是请求伪造攻击?

如果Web系统中存在服务器请求伪造漏洞,不仅会影响系统本身,而且会影响到与其相关的其他系统服务。一个被忽视的服务器请求伪造漏洞,很容易引起蝴蝶效应,可能给整个系统带来长期的巨大危害。

什么是服务器请求伪造?
服务器请求伪造(Server-Side Request Forgery,SSRF)漏洞是一种由攻击者利用某服务器请求来获取内网或外网系统资源,从服务器发起请求的一个安全漏洞。正因为它是由服务器发起的,所以它能够请求到与它相连而与外网隔离的内部系统。一般情况下,SSRF攻击的目标是企业的内网系统。
SSRF可以对外网、服务器所在内网、本地进行端口扫描,获取一些服务的banner信息。攻击运行于内网或本地的应用程序(比如攻击内部数据库系统),并通过扫描默认Web文件对内网Web应用进行指纹识别,同时可以利用file协议读取本地文件。
SSRF形成的原因大多是由于服务器提供了其他服务器应用中获取数据的功能且没有对目标地址进行过滤与限制,比如从指定URF地址中获取网页文本内容、加载指定地址的图片、下载等

SSRF漏洞流程如图所示,即:

(1)攻击者构造请求;

(2)服务器根据攻击者构造的请求对内网服务器进行请求;

(3)内网服务器将请求反馈给服务器;

(4)服务器将获取到的内网资源返回给攻击者。

原创 | 一文看懂服务器请求伪造漏洞

SSRF漏洞的危害
SSRF漏洞的主要危害是使服务器资源泄露,内网服务任意扫描泄露内网信息。很多网站提供了通过用户指定的URL上传图片和文件的功能,可以将第三方的图片和文件直接保存在当前的Web系统上,如果用户输入的URL是无效的,大部分的Web应用会返回错误信息。
攻击者可以输入一些不常见但有效的URL,比如以下URL。
http://127.0.0.1:8080/dir/images/http://127.0.0.1:22/dir/public/images.jpghttp://127.0.0.1:3306/dir/images/
然后根据服务器的返回信息来判断端口是否开放。大部分应用并不会去判断端口,只要是有效的URL,就会发出请求。而大部分的TCP服务,在建立socket连接时就会发送banner信息。banner信息是使用ASCII编码的,能够作为原始的HTML数据展示。当然,服务端在处理返回信息的时候一般不会直接展示,但是不同的错误码,返回信息的长度以及返回时间都可以作为依据来判断远程服务器的端口状态。
以下是一段未经过安全编码的代码,有很大概率被攻击者利用进行端口扫描。
<?php    if(isset($_GET['url'])){        $url = $_GET['url'];        $filename = '/tmp/'.rand().'txt';        $ch = curl_init();        $timeout = 5;        curl_setopt($ch,CURLOPT_URL,$url);        curl_setopt($ch,CURLOPT_FOLLOWLOCATION,1);        curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);        curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,$timeout);        $content = curl_exec($ch);        $fp_in = fopen($filename,'w');        fwrite($fp_in,$content);        fclose($fp_in);        $fp_out = fopen($filename,"r");        $result = fread($fp_out,filesize($filename));        fclose($fp_out);        echo $result;    }else{        echo "请输入资源地址";    }
由于上面不安全编码的代码,容易被攻击者利用对内网Web应用进行指纹识别,识别内网应用所使用的框架、平台、模块以及cms,这实际上为潜在的攻击提供了很多“便利”。大多数Web应用框架有一些独特的文件和目录,通过这些文件可以识别出应用的类型,甚至是详细的版本。根据这些信息就可以有针对性地搜集漏洞进行攻击。比如可以通过访问下列文件来判断phpMyAdmin是否安装。
http://127.0.0.1:8080/phpMyAdmin/themes/original/img/b_tblimport.pnghttp://127.0.0.1:8081/wp-content/themes/default/images/audio.jpghttp://127.0.0.1:8082/profiles/minimal/translations/README.txt

原文始发于微信公众号(船山信安):原创 | 一文看懂服务器请求伪造漏洞

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年11月17日22:31:19
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   原创 | 一文看懂服务器请求伪造漏洞https://cn-sec.com/archives/3402800.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息