Попытка воссоздать Heatbleed с помощью AFL-FUZZ с использованием OpenSSL 1.0.1f

Я здесь пытаюсь воссоздать ошибку Heartbleed в версиях openssl до 1.0.1g, поэтому я выбрал openssl 1.0.1f. Я установил AFL-FUZZ, а затем openssl. С помощью этот и это ссылка Я думаю, что установил openssl, но в итоге это выдало мне странную ошибку

../libcrypto.a(x86_64cpuid.o): In function `OPENSSL_cleanse':
(.text+0x1a0): multiple definition of `OPENSSL_cleanse'
../libcrypto.a(mem_clr.o):mem_clr.c:(.text+0x0): first defined here
../libcrypto.a(cmll-x86_64.o): In function `Camellia_cbc_encrypt':
(.text+0x1f00): multiple definition of `Camellia_cbc_encrypt'
../libcrypto.a(cmll_cbc.o):cmll_cbc.c:(.text+0x0): first defined here
../libcrypto.a(aes-x86_64.o): In function `AES_encrypt':
(.text+0x460): multiple definition of `AES_encrypt'
../libcrypto.a(aes_core.o):aes_core.c:(.text+0x62e): first defined here
../libcrypto.a(aes-x86_64.o): In function `AES_decrypt':
(.text+0x9f0): multiple definition of `AES_decrypt'
../libcrypto.a(aes_core.o):aes_core.c:(.text+0xad1): first defined here
../libcrypto.a(aes-x86_64.o): In function `private_AES_set_encrypt_key':
(.text+0xab0): multiple definition of `private_AES_set_encrypt_key'
../libcrypto.a(aes_core.o):aes_core.c:(.text+0x0): first defined here
../libcrypto.a(aes-x86_64.o): In function `private_AES_set_decrypt_key':
(.text+0xd80): multiple definition of `private_AES_set_decrypt_key'
../libcrypto.a(aes_core.o):aes_core.c:(.text+0x403): first defined here
../libcrypto.a(aes-x86_64.o): In function `AES_cbc_encrypt':
(.text+0xfa0): multiple definition of `AES_cbc_encrypt'
../libcrypto.a(aes_cbc.o):aes_cbc.c:(.text+0x0): first defined here
collect2: error: ld returned 1 exit status
make[2]: *** [link_app.] Error 1

Я запустил команду openssl version, и она успешно запустилась, выдав мне вывод OpenSSL 1.0.1f 6 Jan 2014, поэтому я решил, что она установлена ​​правильно (не знаю, что делать с ошибками).

Теперь следующий шаг — просто найти код для использования openssl, который я нашел здесь файл handshake.c. Однако он не компилируется успешно. afl-gcc handshake.c libssl.a libcrypto.a -o handshake -I ssl/include -ldl и ошибка

afl-cc 2.52b by <[email protected]>
afl-as 2.52b by <[email protected]>
[+] Instrumented 15 locations (64-bit, non-hardened mode, ratio 100%).
libcrypto.a(x86_64cpuid.o): In function `OPENSSL_cleanse':
(.text+0x1a0): multiple definition of `OPENSSL_cleanse'
libcrypto.a(mem_clr.o):mem_clr.c:(.text+0x0): first defined here
/tmp/ccJeYtnW.o: In function `Init':
path/openssl-1.0.1/handshake.c:22: undefined reference to `SSL_CTX_set_security_level'
libcrypto.a(c_zlib.o): In function `zlib_stateful_expand_block':
c_zlib.c:(.text+0x59): undefined reference to `inflate'
libcrypto.a(c_zlib.o): In function `zlib_stateful_compress_block':
c_zlib.c:(.text+0xea): undefined reference to `deflate'
libcrypto.a(c_zlib.o): In function `bio_zlib_free':
c_zlib.c:(.text+0x13d): undefined reference to `inflateEnd'
c_zlib.c:(.text+0x15b): undefined reference to `deflateEnd'
libcrypto.a(c_zlib.o): In function `zlib_stateful_finish':
c_zlib.c:(.text+0x1d0): undefined reference to `inflateEnd'
c_zlib.c:(.text+0x1d9): undefined reference to `deflateEnd'
libcrypto.a(c_zlib.o): In function `zlib_stateful_init':
c_zlib.c:(.text+0x268): undefined reference to `inflateInit_'
c_zlib.c:(.text+0x2d9): undefined reference to `deflateInit_'
libcrypto.a(c_zlib.o): In function `bio_zlib_ctrl':
c_zlib.c:(.text+0x54c): undefined reference to `deflate'
c_zlib.c:(.text+0x5f0): undefined reference to `zError'
libcrypto.a(c_zlib.o): In function `bio_zlib_write':
c_zlib.c:(.text+0x809): undefined reference to `deflate'
c_zlib.c:(.text+0x89a): undefined reference to `zError'
c_zlib.c:(.text+0x933): undefined reference to `deflateInit_'
libcrypto.a(c_zlib.o): In function `bio_zlib_read':
c_zlib.c:(.text+0xa13): undefined reference to `inflate'
c_zlib.c:(.text+0xa8d): undefined reference to `zError'
c_zlib.c:(.text+0xafc): undefined reference to `inflateInit_'
collect2: error: ld returned 1 exit status

Пожалуйста, предложите, как я могу исправить эти ошибки.

Заранее спасибо.

РЕДАКТИРОВАТЬ:

Итак, что я сделал до сих пор, так это установил openssl с привилегиями root. Я работал, но выдал очень много ошибок относительно ручной установки, т.е. в основном ошибки выглядели как item= expecting something other than a integer. Я вручную изменил эти строки на символы =item 1 -> =item '1'. После изменений в приложениях и папке ssl в корневом каталоге я наконец заработал. Окончательная установка выглядит после make и make install

installing openssl
installing CA.sh
installing CA.pl
installing tsget
make[1]: Leaving directory `/openssl-1.0.1f/apps'
making install in test...
make[1]: Entering directory `/openssl-1.0.1f/test'
make[1]: Nothing to be done for `install'.
make[1]: Leaving directory `/openssl-1.0.1f/test'
making install in tools...
make[1]: Entering directory `/openssl-1.0.1f/tools'
make[1]: Leaving directory `/openssl-1.0.1f/tools'
installing libcrypto.a
installing libssl.a
cp libcrypto.pc /usr/local/ssl/lib/pkgconfig
chmod 644 /usr/local/ssl/lib/pkgconfig/libcrypto.pc
cp libssl.pc /usr/local/ssl/lib/pkgconfig
chmod 644 /usr/local/ssl/lib/pkgconfig/libssl.pc
cp openssl.pc /usr/local/ssl/lib/pkgconfig
chmod 644 /usr/local/ssl/lib/pkgconfig/openssl.pc
root@ubuntu:/openssl-1.0.1f# openssl
The program 'openssl' is currently not installed. You can install it by   typing:
apt-get install openssl

Теперь я думаю, что установка прошла без ошибок, но у меня еще не установлен openssl, так как он говорит, что такой пакет еще не установлен.

Пожалуйста помоги.


person aneela    schedule 21.12.2018    source источник


Ответы (1)


Как я добавил в отредактированном посте, ошибки в установке openssl исчезли, когда я запустил установку с правами root. Я использовал последовательность следующих команд;

make clean
./config no-shared no-idea no-mdc2 no-rc5 zlib enable-tlsext
make depend
make && make install

Как обсуждалось выше в отредактированной версии вопроса, это дало мне ошибки в файлах .pod, которые я разрешил один за другим (хотелось бы знать, есть ли у кого-нибудь более разумный подход).

После компиляции теперь ошибка осталась, как и в отредактированной части, которая была мгновенно устранена после добавления пути установки openssl в переменную окружения $PATH. Я добавил строку ниже в файлы .basrc и .profile.

export PATH="$PATH:/usr/local/ssl/bin" 

Теперь openssl работает нормально.

Однако компиляция handshake.c с openssl идет с этой командой

AFL_USE_ASAN=1 afl-gcc handshake.c -lcrypto -lz libssl.a  -o handshake -ldl

Наконец

afl-fuzz -i testcases -o findings -m none -- ./handshake

Надеюсь, это поможет будущим пользователям Google.

Спасибо.

person aneela    schedule 26.12.2018