Компиляция Heartbleed.C тестер на CentOS 6.икс

Я искал в течение нескольких дней для решения этой проблемы, в основном я пытаюсь проверить свою сеть на ошибку heartbleed, но я не могу скомпилировать тестер на CentOS 6.x, любые идеи или предложения с благодарностью...

ссылка на tester

http://www.exploit-db.com/download/32998

ошибка, которую я получаю

[root@www ~]# gcc heartbleed.c -o heartbleed -lssl -lssl3 -lcrypto
/tmp/cc4cZa2B.o: In function `tls_bind':
heartbleed.c:(.text+0x47d): undefined reference to `SSL_CTX_SRP_CTX_init'
collect2: ld returned 1 exit status
[root@www ~]# 
15
задан Jeffrey L. Roberts
11.12.2022 7:14 Количество просмотров материала 2548
Распечатать страницу

3 ответа

для CentOS предлагается добавить -lss3 флаг для вашей строки компиляции. поддержка ссылка.

вы также можете попробовать статически связать OpenSSL с вашей сборкой по той же ссылке, что и выше. Заменив расположение *.a файлы:

#!/bin/bash
# Emerge openssl with static-libs to obtain all the *.a
mkdir -p heartbleed.d
cd heartbleed.d
ar x /usr/lib/libssl.a
ar x /usr/lib/libcrypto.a
ar x /usr/lib/libgmp.a
ar x /usr/lib/libz.a
cd ..
gcc -o heartbleed heartbleed.d/*.o heartbleed.c -ldl

если вы на Debian (для полноты я знаю, что этот вопрос относится к CentOS 6.x) тогда у вас будет эта проблема. Тогда эта ссылка может помочь вам с вашей проблемой, это обеспечивает ниже Решение:

$ gcc heartbleed.c -o heartbleed -Wl,-Bstatic -lssl -Wl,-Bdynamic -lssl3 -lcrypto
$ uname -a
Linux xxxxx Debian 3.2.54-2 x86_64 GNU/Linux
$ ls -al heartbleed
-rwxr-xr-x 1 x x357603 Apr 11 23:20 heartbleed

эта ссылка сбивает с толку, он представляет точную проблему в 2013 году, но просто говорит, что они обновили заголовок для компиляции. Так что, может быть, тройная проверка файла заголовка для комментариев?

другим решением вашей проблемы может быть ответ на следующий вопрос. Какую версию OpenSSL ли ваша сеть? Вот выдержка изHeartBleed.com

какие версии OpenSSL пострадал?

статус различных версий:

OpenSSL 1.0.1 - 1.0.1 f (включительно) уязвимы OpenSSL 1.0.1 g не уязвимым в OpenSSL 1.0.0 филиал не является уязвимой в OpenSSL 0.9.8 ветка не уязвима

Он был исправлен в OpenSSL версии 1.0.1 g: из В OpenSSL Безопасности:

затронутые пользователи должны обновить OpenSSL до 1.0.1 g. Пользователи не в состоянии немедленно подъем может в качестве альтернативы перекомпилировать OpenSSL с -DOPENSSL_NO_HEARTBEATS.

вы можете перекомпилировать старые версии с этим флагом если вы не можете обновить.

1
отвечен RoraΖ 2022-12-12 15:02

кажется, что пропущенная функция была деактивирована через опции сборки вашей библиотеки OpenSSL. Вы можете попробовать вручную скомпилировать openssl.

в качестве альтернативы, вы могли бы использовать nmap (первый проверить текущие работы Nmap версии, вы, возможно, уже идея неплохая, но сценарий).

0
отвечен 2022-12-12 17:19

gcc heartbleed.c-o heartbleed-lssl-lssl3-lcrypto

это выглядит нормально. -lssl - это процедуры SSL/TLS OpenSSL. -lcrypto - это криптографические процедуры OpenSSL.

но я не уверен, о -lssl3. Что это за библиотека такая?


heartbleed.с.(:text+0x47d): неопределенная ссылка на `SSL_CTX_SRP_CTX_init'

похоже, ваша версия OpenSSL не поддерживает Thomas Wu безопасный удаленный пароль (SRP). Или он был скомпилирован без поддержка.

по словам OpenSSL список изменений, SRP был добавлен в OpenSSL 1.0.1:

  *) Add SRP support.
     [Tom Wu <tjw@cs.stanford.edu> and Ben Laurie]

вы можете проверить библиотеку OpenSSL был построен без ПСП со следующим.

сначала найдите библиотеку OpenSSL SSL/TLS:

$ find /usr/ -iname libssl.*
/usr/lib/libssl.0.9.7.dylib
/usr/lib/libssl.0.9.8.dylib
/usr/lib/libssl.dylib
/usr/local/ssl/android-14/lib/libssl.a
/usr/local/ssl/android-14/lib/libssl.so
/usr/local/ssl/android-14/lib/libssl.so.1.0.0
/usr/local/ssl/android-18/lib/libssl.a
/usr/local/ssl/android-18/lib/libssl.so
/usr/local/ssl/android-18/lib/libssl.so.1.0.0
...

во-вторых, посмотреть, если символ экспортируется:

$ nm /usr/lib/libssl.0.9.7.dylib | grep SSL_CTX_SRP_CTX_init
$

In мой случай, SRP недоступен, потому что библиотека Apple по умолчанию так вниз (версия 0.9.7).

у меня есть еще одна копия библиотеки (версия 1.0.1 i):

$ nm /usr/local/ssl/macosx-x64/lib/libssl.dylib | grep SSL_CTX_SRP_CTX_init
0000000000034920 T _SSL_CTX_SRP_CTX_init

моя версия 1.0.1 i имеет подпрограмму.


иногда, вы можете построить без SRP. Чтобы проверить, настроен ли OpenSSL без SRP:

$ cat /usr/local/ssl/macosx-x64/include/openssl/opensslconf.h | grep -A 1 SRP
$

в случае выше, я настроил для SRP.

вот как это выглядит, когда OpenSSL настроен без функцию (настройки без SSLv2):

$ cat /usr//local/ssl/macosx-x64/include/openssl/opensslconf.h | grep -A 1 SSL2
#ifndef OPENSSL_NO_SSL2
# define OPENSSL_NO_SSL2
#endif
--
# if defined(OPENSSL_NO_SSL2) && !defined(NO_SSL2)
#  define NO_SSL2
# endif

SSL_CTX_SRP_CTX_init используется в двух местах. Чтобы исправить это, просто прокомментируйте его.

первая строка 355:

 /* SSL_CTX_SRP_CTX_init(c->sslContext); */

во-вторых, строка 499:

 /* SSL_CTX_SRP_CTX_init(c->sslContext); */

Related, авторы эксплойта, вероятно, могли бы охранять номер версии OpenSSL. Тот библиотека предоставляет OPENSSL_VERSION_NUMBER (3) как раз для такого рода вещей. Что-то вроде:

#if (OPENSSL_VERSION_NUMBER >= 0x10001000L) && !defined(OPENSSL_NO_SRP)
    SSL_CTX_SRP_CTX_init(c->sslContext);
#endif
0
отвечен jww 2022-12-12 19:36

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх