Heartbleed心臟出血漏洞靶場搭建

1. 簡介

   OpenSSL心臟出血漏洞原理是OpenSSL引入心跳(heartbeat)機制來維持TLS鏈接的長期存在,心跳機制作爲TLS的擴展實現,但在代碼中包括TLS(TCP)和DTLS(UDP)都沒有做邊界檢測,所以導致攻擊者可以利用這個漏洞來獲得TLS鏈接對端(可以是服務器也可以是客戶端)內存中的一些數據。
   所以針對本次漏洞的檢測,我需要在虛擬機中搭建一個通過https安全協議的數據交互網站,同時虛擬機中的OpenSSL版本爲含有心臟出血漏洞的版本。通過客戶端即物理機命令行中運行心臟出血漏洞檢測POC代碼和Wireshark進行抓取數據包來分析心血漏洞。

2. 服務器環境搭建

2.1 安裝VMware

   去官網中下載或在內網共享中下載VMware虛擬機軟件並安裝VMware,安裝VMware沒有什麼困難選擇路徑點擊安裝即可。

2.2 安裝Ubuntu系統

   在官網中下載Ubuntu14.04系統,在VMware中點擊創建虛擬機然後導入下載的Ubuntu的iso路徑進行安裝,安裝完成後Ctrl+Alt+T打開命令行,輸入命令openssl version查看OpenSSL版本,理論上Ubuntu14.04版本爲OpenSSL 1.0.1f是具有心臟出血漏洞的,但是由於心臟出血漏洞爆出的時間爲2014-04-07,所以時間上處於一個邊界,怕漏洞被修復,所以我自己把OpenSSL 1.0.1f版本的OpenSSL版本卸載,重新安裝上OpenSSL 1.0.1e的版本,以確保一定含有OpenSSL心臟出血漏洞。

2.3 安裝OpenSSL

進入Ubuntu虛擬機中Ctrl+Alt+T打開命令行。

  1. 卸載原來版本的OpenSSL,輸入命令:sudo apt-get purge openssl,通過命令openssl version查看openssl有沒有被卸載,卸載完成後,下載openssl 1.0.1e版本的壓縮包通過ssh傳輸到虛擬機中。
  2. 安裝openssl:解壓安裝包,tar xf openssl-1.0.1e.tar.gz 進入openssl目錄執行命令:
    ./config –prefix=usr/local –openssldir=/usr/local/ssl
    make
    sudo make install
    ./config shared –prefix=/usr/local –openssldir=/usr/local/ssl
    make
    make install
    這裏寫圖片描述

2.4  安裝Apache+配置https

  1. 安裝Apache服務器:輸入命令:sudo apt-get install apache2 對Apache2進行安裝。安裝結束後:
    產生的啓動和停止文件是:/etc/init.d/apache2
    啓動:sudo apache2 start
    停止:sudo apache2 stop
    重新啓動:sudo apache2 restart
    配置文件保存在/etc/apache2目錄下,ubuntu發行版本的主配置文件是apache2.conf。
    瀏覽器中輸入網址localhost查看是否爲Apache it works的展示頁面。
    這裏寫圖片描述
  2. 開啓SSL模塊:
    sudo a2enmod ssl
  3. 創建證書:由於我們搭建環境主要爲我們檢測漏洞使用,所以我們只需要創建自簽名證書即可。使用Apache內置的工具創建默認的自簽名證書,通過-days參數制定有效期
    sudo apache2-ssl-certificate -days ×××
    這裏寫圖片描述
    要求輸入Common Name(eg,YOUR name)時,輸入你的主機名。創建完成後當前目錄下會生成一個apache.pem文件,包含祕鑰和證書。可以把這個證書copy到/etc/apache2/下創建一個ssl目錄然後copy到:
    /etc/apache2/ssl/apache.pem

2.5  編輯https配置

  1. 添加監聽端口:
    編輯Apache端口配置(/etc/apache2/ports.conf)如果SSL缺省時加入443端口Listen 443。
  2. 設置site-enabled:
    安裝完後,會在/etc/apache2/sites-available目錄下生成一個缺省的default-ssl.conf文件。創建一個鏈接到sites-enabled目錄:
    ln -s /etc/apache2/sites-available/default-ssl.conf /etc/apache2/sites-enabled/001-ssl
  3. 修改配置文件:
    確認HTTP監聽端口是否爲80:gedit /etc/apache2/sites-enabled/000-default.conf
    這裏寫圖片描述
    HTTPS監聽端口缺省443:把端口改爲443,在下加入SSL認證配置,其他的根據自己需要自己定製
    gedit /etc/apache2/sites-enabled/001-ssl
    這裏寫圖片描述

2.6  重啓Apache服務

   service apache2 stop
   service apache2 start

3. 網站環境搭建

3.1  安裝MySQL數據庫+PHP5

  1. 安裝MySQL數據庫:輸入sudo apt-get update 進行更新,防止直接安裝MySQL有的軟件包無法下載。
    輸入:sudo apt-get install mysql-server mysql-client進行安裝,軟件安裝中會讓你輸入root用戶的密碼,輸入密碼確認密碼之後完成安裝。
    判斷MySQL數據庫是否安裝成功:sudo service mysql restart查看是否處於運行狀態。
  2. 讓Apache支持MySQL:sudo apt-get install libapache2-mod-auth-mysql 安裝模塊
  3. 讓php支持MySQL:sudo apt-get install php5-mysql 安裝模塊
  4. 登錄MySQL數據庫:mysql -u root -p 輸入mysql的root用戶密碼
  5. 安裝php5:sudo apt-get install php5
  6. 讓Apache支持php5:sudo apt-get install libapache2-mod-php5
  7. 安裝php5-gd模塊:sudo apt-get install php5-gd
  8. 使用gedit在“/var/www”下創建info.php文件:sudo gedit /var/www/info.php
    在文本編輯器中輸入

3.2  簡單網頁代碼編寫

   搭建簡單的具有數據交互的網站:利用Apache服務器,mysql數據庫和php5進行網站搭建。通過php編寫一個簡單的用戶登錄程序,後臺連接mysql數據庫進行數據校驗,如果數據匹配返回成功頁面。

4. 環境搭建注意事項

  1. 安裝OpenSSL時,解壓縮openssl後進行./config make make install 這三步時在配置./config時一定要注意openssl的安裝路徑,因爲有時候你直接按照默認的編譯安裝路徑可能安裝完成後輸入openssl version找不到安裝的版本。
  2. 配置https時生成的證書文件的目錄和你在sites-enabled文件夾下的default-ssl.conf的SSLCertificateFile的路徑一致。
  3. 由於心臟出血漏洞主要由於心跳機制的邊界檢測問題,所以我們要查看自己安裝的openssl有沒有開啓心跳擴展機制:
    /usr/bin/openssl s_client -connect 192.168.197.128/login.php:443 -tlsextdebug 2>&1| grep ‘TLS’

5. 檢測方法

  1. 通過網上的POC的python腳本代碼進行檢測:
    通過物理機打開在虛擬機中編寫的網站,同時在物理機中安裝python並配置環境變量,通過命令行運行心血漏洞檢測的POC,輸入服務器的ip地址,查看有沒有數據返回。命令行指令:python ssltest.py 192.168.197.128
  2. 通過nmap進行心臟出血漏洞檢測,nmap -sV -p 443 –script=ssl-heartbleed 192.168.197.128
    這裏寫圖片描述
  3. 通過網上檢測工具hearbleed scanner直接進行檢測
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章