Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   Реверсинг (https://forum.antichat.xyz/forumdisplay.php?f=94)
-   -   SSS exploit (https://forum.antichat.xyz/showthread.php?t=30401)

Zadoxlik 01.01.2007 23:31

SSS exploit
 
Satanic Socks Server DoS exploit

Кто скажет в чем бага ? :)


P.S. http://www.ibbs.ru/ftpdrmist/sources/sss.c сервер

zl0ba 01.01.2007 23:46

енто проверка?

D=P=CH= MOD= 01.01.2007 23:46

Я конечно ламер в этой теме...

Могу предположить ...

Нулевой байт?

зы Прозьба без хаха =)

guest3297 01.01.2007 23:51

Перелолнение буфера?

Go0o$E 02.01.2007 00:03

Бага в gethostbyname.
Или переполнение буфера здесь:
char* _ConnectStruct;
int From;
int To;
char Buff[BUFF_SIZE];
char* Error;

Zadoxlik 02.01.2007 01:04

НЕТ! =)

Zadoxlik 02.01.2007 01:06

Это гусю, все остальные не считаются, Ваши ответы не могут быть приняты или не принты, т.к. они не содержат полезной информации =Р

pogant 02.01.2007 01:25

||(bytes == -1)

Zadoxlik 02.01.2007 01:28

НЕТ!

Кто победит получит от всех участников репутации, а кто не выставит из учавствующих репутацию победителю получит минус =)

pogant 02.01.2007 01:38

while(buff_size > 0)
{
bytes = send(s, Buff, buff_size, 0);

или

while(buff_size > 0)
{
bytes = recv(s, Buff, buff_size, 0);

больше не знаю=)

Zadoxlik 02.01.2007 01:44

Чего ты не знаешь? Что ты сюда код бросил? я тебя в чем уязвимостьс пррашиваю =) Ненадо сюда код бросать и говорить вот там уязвимость :d Это нечестно неинтересно и не засчитывается =)

pogant 02.01.2007 01:48

оки..думаю что ошибка в том что функция while зацикливается из-за этого получается переполнене и происходит падение

Zadoxlik 02.01.2007 01:49

НЕТ! Надо по-лучше подумать =)

Zadoxlik 02.01.2007 01:51

http://zadoxlik.antichat.ru/mnogovas.gif

Я вас запомнил, кто не проставит репу победителю получит минусы =))

Zadoxlik 02.01.2007 02:18

ТАк, сегодня все сдались =d Будем ждать греата, протеуса, нерезуса, таху =) ну и остальных :d

gemaglabin 02.01.2007 02:58

Решил глянуть над чемже парится весь ачат,и почему это должны сделать только тоха протеус и грейт - увидел код на си и разочаровался.Ну чтож глянем внутрь

Код:

if(!connect_to_sss(&s, argv[1], atoi(argv[2]))){
                statfinish(FALSE);
                return 0;
              }
              statfinish(TRUE);
       
        statadd("Exploiting the target");
        sss_exploit_packet(s)l

Кусок,отвечающий за коннект и посылку эксплоита,дальше поидее мы по спецификации протокола SOCKS отправить специально сформированный пакет с айпи и портом куда мы собствено захотим законекиться

Аналог на дельфи для пятых носков
Код:

FProxyBuf:=FProxyBuf+ char(FHostAddr.sin_addr.S_addr)+char(FHostAddr.sin_addr.S_addr shr 8)+
                        char(FHostAddr.sin_addr.S_addr shr 16)+char(FHostAddr.sin_addr.S_addr shr 24)+#0;

Смотрим код сервера,после того как к нам законектились мы создаем поток вызовом AcceptThread(int s),далее вызывается Socks5GetCmd , в котором мы передаем айпи.Ага,смотрим char ip[4] это я так понимаю ограничитель?Значит задохлик посылает пакет с айпишником больше заданной длины,тем самым вызывая стринг буффер оверлоу.Так,да?

/* какая же гадость эта ваша си */

KSURi 02.01.2007 03:09

Странно, что в шеллкоде 4ый байт - 0x05 (AddrType), а в коде сервера в Socks5GetCmd() в switch'e для AddrType прописаны случаи только на 0x01..0x04... Дальше хендшейк должен сорваться

2гема
Код:

if(!sread(s, ip, 4))
По ходу он полюбому читает тока 4 байта, так что даже если послать больше ничего не выйдет...

Не ругаццо, если что) Си уже совсем не помню =\

Zadoxlik 02.01.2007 05:13

Цитата:

Сообщение от gemaglabin
Так,да?

Нет конечно =) Гадость это ваш делфи фи. =)

Zadoxlik 02.01.2007 05:14

Никто не подкрался к истине! Думаем, товарищи, стыдно! =d

P.S. В теме отметился гема =) Значит у победителя сильно прибавится репутации :D

hidden 02.01.2007 08:11

C в топку, Delphi в топку, Ассемблер рулит ;)

А если серьёзно, то ты вроде запретил сокету разрывать соединение(SO_LINGER), пока не получина вся переданная информация, сам то передаёшь только заголовок, сервер отвечает, и переходит в режим ожидания и будет ждать пока соединение не оборвётся, так как таймаута нам не придусмотрено.

Смущает только одно, ведь если ты выключишь свой комп, соединение ведь придётся закрыть, разьве нет?

TaNkist 02.01.2007 10:14

Цитата:

Сообщение от KSURi
Странно, что в шеллкоде 4ый байт - 0x05 (AddrType), а в коде сервера в Socks5GetCmd() в switch'e для AddrType прописаны случаи только на 0x01..0x04... Дальше хендшейк должен сорваться

2гема
Код:

if(!sread(s, ip, 4))
По ходу он полюбому читает тока 4 байта, так что даже если послать больше ничего не выйдет...

Не ругаццо, если что) Си уже совсем не помню =\

Код:

AddrType = TempBuff[3];
Поэтому AddrType будет равен 0x01.

Gorn 02.01.2007 12:11

Для работы с сокетами нужно подключить библиотеку ws2_32.lib
Нужно добавить после #include <winsock2.h>
Код:

#pragma comment (lib,"ws2_32.lib")

TaNkist 02.01.2007 15:28

По моему ИП-шник преобразованный функцией inet_addr не может равняться $CC09B112, может бага в этом?

_Great_ 02.01.2007 15:43

Gorn, бред, это можно задать в настройках проекта

Гем, фигня это все.
Вот запрос:
\x05\x01\x00\x05\x01\x00\x01\xCC\x09\xB1\x12\x00\x 51
В нем:
\x05\x01\x00 - это приветствие серверу
\x05\x01\x00\x01\xCC\x09\xB1\x12\x00\x51 - запрос на коннект к IPv4 адресу CC.09.B1.12 на порт 0x51, что в 10-чной системе будет:
204.9.177.18, порт 81

Инфа об этом айпи

Цитата:

А если серьёзно, то ты вроде запретил сокету разрывать соединение(SO_LINGER), пока не получина вся переданная информация, сам то передаёшь только заголовок, сервер отвечает, и переходит в режим ожидания и будет ждать пока соединение не оборвётся, так как таймаута нам не придусмотрено.
SSS - многопоточный. этим его в даун не отправишь

Zadoxlik 02.01.2007 16:04

hidden, НЕТ! Хотя мыслишь =) Хм, вообщем норм мыслишь, развивай! =)

_Great_ все верно, ЗаКо до до этого добежал в первую минуту своего исследования, но только это пока ничего не дает :D Думайте!

Zadoxlik 02.01.2007 16:08

И обратите наконец внимание на шапку комментария =) может она вас натолкнет на путь истинный =)

_Great_ 02.01.2007 16:13

У меня, кстати, эксплоит не работает =)

$ gcc sss.c -o sss -lpthread
sss.c: In function `Socks5Accept':
sss.c:423: warning: comparison is always true due to limited range of data type
$ ./sss


(gcc ругнулся на то, что переменная типа char никогда не будет равна 0xFF.. ну и хрен с ним).

сокс сервер запустился нормально.

Ваш сплоент пишет:

Цитата:

Statanic Socks Server (SSS) <= 0.66 remote DoS exploit
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~

by Zadoxlik[antichat.ru]

Usage:
#./sssploent.exe host port


[+] Connecting to the server... Success!
[+] Exploiting the target... Success!
[-] Test connection... Failed!
The target is alive. May be it is not Satanic Socks Server, or SSS of newer version

Zadoxlik 02.01.2007 16:14

Могу записать видео где он работает =) Ну вообще здесь вся загвоздка в ОСи

Zadoxlik 02.01.2007 16:16

Тут важно не столько что он где-то не работает, а то, что он где-то работает и вопрос - почему так. Ведь практической пользы от DoS эксплоита против сокс сервера маловато =)

_Great_ 02.01.2007 16:18

Тогда пара вопросов:
- при каких условиях он работает?
- отрубается сокс-сервер или вся тачка?

_Great_ 02.01.2007 16:21

И на каких системах он работает?
Я тестил на:

$ uname -a
Linux ****** 2.4.29-grsec+w+fhs6b+gr0501+nfs+a32+++p4+sata+c4+gr2b-v6.189 #1 SMP Mon Feb 7 13:23:30 PST 2005 i686 GNU/Linux

Zadoxlik 02.01.2007 16:33

Так вот тут видео совсем небольшое. В видео учавстивуют две программы (сплоит и ССС), исходные коды которых представлены в первом посте этого топика:
http://zadoxlik.info/vo.rar (500 KB)
Задача - понять - почему так =)
Кстати щас вошел в асю - ЗаКо ответил ВЕРНО! Но однако здесь постить он не будет, так что у вас все шансы получить много репутации =)

_Great_ 02.01.2007 16:39

Хм.. у тебя фряха, у меня линь.
будем думать
кстати, может быть из-за особенностей создания потоков в FreeBSD?

Zadoxlik 02.01.2007 17:59

Все сдалсиь? =)

_Great_ 02.01.2007 18:17

ппц )
неееет, я еще посижу, подумаю )

_Great_ 02.01.2007 19:39

подсказочка будет?)

Zadoxlik 02.01.2007 19:53

Ну нет, теперь тут любая подсказочка сразу выбьет на правильное решение =d Вот ПротеуС пришел. Подождем немного еще =)

guest3297 02.01.2007 20:05

Щас я тоже код поковыряю...

ProTeuS 02.01.2007 20:10

>>ПротеуС пришел. Подождем немного еще =)
мммм, немного время неправильно подобрано. голова 2 января совсем не варит по понятным при4инам )))

ЗЫ: жаль 4то я щас на ден4ик иду. подождите до ве4ера плиз, я приду - присоеденюсь...

Zadoxlik 02.01.2007 20:17

Без проблем!


Время: 22:11