首页 > 其他分享 >web基础漏洞-ssrf

web基础漏洞-ssrf

时间:2023-05-29 15:46:25浏览次数:43  
标签:web ssrf url 漏洞 服务器 服务端

1、介绍

ssrf,server-server request forgery服务端对服务端的请求伪造,有时也理解为server side request forgery服务端侧的请求伪造。

指服务端借助用户请求中的参数,向服务器内部或者其他服务器发起请求,而这个过程对发起方是信任的,导致出现危害。

攻击者发送链接,由服务端去请求。这种方式常常可以用来绕过网络的限制,攻击我们无法直接访问的网络。

2、原理

服务端提供了从其他服务器获取数据的功能,但没有对内网目标地址做过滤和限制。

一般,服务器与内网资源通过参数进行操作,该参数可以被前端用户修改影响。

参数一般是url形式。

主要方式:

  • 对外网、服务器所在内网、本地进行端口扫描,获取Banner信息
  • 测试运行在内网或本地的应用程序
  • 利用file协议读取本地文件等

学习参考:新浪微博某处SSRF漏洞 | wooyun-2016-0214334| WooYun.org (2xss.cc)

3、场景

  • 1)分享:通过URL地址分享网页内容
  • 2)在线翻译
  • 3)图片的加载与下载:通过URL地址加载或下载图片,要注意区分是客户端发送的请求还是服务端发送的请求
  • 4)图片,文章收藏功能
  • 5)未公开的api实现以及其他调用URL的功能

4、漏洞代码分析

php可能借用curl库

ssrf读取文件

http://192.168.1.10/ssrf_test.php?url=file:///c:/widnows/win.ini

5、测试

在前端选择路径参数或者看起来是url一部分的参数,比如&=结构。然后分析其作用方向,分析影响结果。

6、防范

严格限制路径和参数范围

7、产生ssrf漏洞的php函数

很多web应用都提供了从其他的服务器上获取数据的功能。使用用户指定的url,web应用可以获取图片,下载文件,读取文件内容等。这个功能如果被恶意使用,可以利用存在缺陷的web应用作为代理攻击远程和本地的服务器。这种形式的攻击称为ssrf。

ssrf可能存在任何语言编写的应用。

  • file_get_content():从用户指定的url获取图片,然后把它用一个随机文件名保存在硬盘上,并展示给用户
  • fsockopen():该函数实现获取用户指定的url(文件或html)。该函数使用socket跟服务器建立tcp连接,传输原始数据。
  • curl_exec():用于发送请求获取数据

8、漏洞利用

SSRF利用 – 内网资源访问_哔哩哔哩_bilibili

参考ssrf代码

<?php
if(isset($_GET['url'])){
$link = $_GET['url'];
$curlobj = curl_init($link);
curl_setopt($curlobj, CURLOPT_HEADER, 0);
curl_setopt($curlobj, CURLOPT_RETURNTRANSFER, 1);
$result = curl_exec($curlobj);
echo $result;
curl_close($curlobj);
}
?>

一般情况下将web应用程序暴露在互联网可以通过web浏览器进行访问。但是会将内网资源封闭起来,避免与外部交互。如果存在ssrf漏洞,可以进行内网资源访问。

提交对应参数url包含ip地址:端口号 测试端口状态。

http://127.0.0.1/ssrf/ssrf.php?url=http://127.0.0.1:3306

标签:web,ssrf,url,漏洞,服务器,服务端
From: https://www.cnblogs.com/wd404/p/17440623.html

相关文章

  • web基础漏洞-界面操作劫持
    1、介绍界面操作劫持攻击是一种基于视觉欺骗的web会话劫持攻击,它通过在网页的可见输入控件上覆盖一个不可见的框iframe,使得用户误以为在操作可见控件,而实际上用户的操作行为被不可见的框所劫持,执行不可见框中的恶意劫持代码,从而完成在用户不知情的情况下窃取敏感信息、篡改数据等......
  • javaWeb中的编码解码
    在上篇博客中LZ介绍了前面两种场景(IO、内存)中的Java编码解码操作,其实在这两种场景中我们只需要在编码解码过程中设置正确的编码解码方式一般而言是不会出现乱码的。对于我们从事java开发的人而言,其实最容易也是产生乱码最多的地方就是web部分。首先我们来看在javaWeb中有哪些地方存......
  • WEB漏洞—SQL注入之查询方式及报错盲注
     前言:当进行SQL注入时,有很多注入会出现无回显的情况,其中不回显的原因可能是SQL语句查询方式的问题导致,这个时候我们需要用到相关的报错或盲注进行后续操作,同时作为手工注入时,提前了解或预知其SQL语句大概写法也能更好的选择对应的注入语句。 #补充:上课的Access暴力猜......
  • Struct2系列漏洞POC整理
    Struct2-001%{#a=(newjava.lang.ProcessBuilder(newjava.lang.String[]{"pwd"})).redirectErrorStream(true).start(),#b=#a.getInputStream(),#c=newjava.io.InputStreamReader(#b),#d=newjava.io.BufferedReader(#c),#e=newchar[50000],#d.read(#e),#f=#co......
  • Qt+QtWebApp开发笔记(四):http服务器使用Session和Cookie实现用户密码登录和注销功能
    前言  前面实现了基础的跳转,那么动态交互中登录是常用功能。  本篇实现一个动态交互的简单登录和注销功能,在Qt中使用Session和Cookie技术。 Demo  下载地址  链接:https://pan.baidu.com/s/1nkmsHgr-11Khe9k6Ntyf_g?pwd=1234 Html处理用户输入Sessi......
  • 让Web站点崩溃最常见的七大原因
       磁盘已满导致系统无法正常运行的最可能的原因是磁盘已满。一个好的网络管理员会密切关注磁盘的使用情况,隔一定的时间,就需要将磁盘上的一些负载转存到备份存储介质中(例如磁带)。日志文件会很快用光所有的磁盘空间。Web服务器的日志文件、SQL*Net的日志文件、......
  • webpack的工作流程(附带部分源码分析)
    @目录webpack的工作流程webpack的准备阶段本阶段流程和钩子modules和chunks的生成阶段module解析解析流程chunks生成文件生成阶段模板hash更新模板渲染chunk生成文件总结webpack的工作流程说明工作流程之前,先抛出两个结论:webpack的核心功能,是抽离成很多个内部插件来实现......
  • WebService的简单使用
    1.创建服务端-java项目@WebServicepublicclassMyFirstWebService{/***定义webservice服务器中的方法*@paramcontent*@return*/publicStringtestWebService(Stringcontent){System.out.println("我收到了你发的信息:"+conte......
  • Rust Web 全栈开发之连接数据库
    RustWeb全栈开发之连接数据库需要使用的crate和数据库sqlx,v0.5.10PostgreSQL创建项目~/rustvia......
  • 在linux上搭建web服务(静态网站)
    目录在linux上搭建web服务(静态网站)一、简介1.1.什么是web服务器1.2.web服务器的工作原理1.3.web服务软件有哪些1.4.http/https协议1.5.URL/URI1.6.apache1.7.nginx二、搭建apache服务,部署静态网站1.1.安装apache服务程序1.2.配置服务器文件参数1.2.1.配置文件/etc/httpd/conf/ht......