1. 前言 寫這篇的原因是因為筆者經過OWASP ZAP修正弱點努力後,客戶後續實際請資安廠商進行掃描。客戶聯絡我需要進行弱點修正,以下記錄一些學習資訊。
2. 環境說明
Windows Server 2016
IIS10
網站架構(無後端程式碼)
HTML
JS
SCSS
CSS
3. 科普名詞 3.1. TLS - (Transport Layer Security,傳輸層安全性)
TSL (Transport Layer Security,傳輸層安全性) 是更新、更安全的 SSL 版本。我們仍將安全性憑證稱為 SSL,因為這是較常用的詞彙,不過當您透過DigiCert購買 SSL 時,您所購買的其實是最新的 TLS 憑證及 ECC、RSA 或 DSA 的加密選項 。
簡單來說,TLS
是更安全的版本,從WIKI資料 ,也可以看到棄用的狀況:
3.2. Cipher - 密碼
在密碼學中,密碼 (英語:cipher,或cypher),是一種用於執行加密 或解密 的演算法 ——一系列可以作為一個過程來遵循的定義明確的步驟
比較好聯想的就是我們常說的對稱加密AES
、DES
,非對稱加密RSA
。
3.3. Hash - 雜湊
雜湊演算法也被用來加密存在資料庫中的密碼 (password)字串,由於雜湊演算法所計算出來的雜湊值(Hash Value) 具有不可逆 (無法逆向演算回原本的數值)的性質,因此可有效的保護密碼。
用在於檔案校驗碼(Checksum),比如:
用來快速判斷檔案是否和原本相同。
有在論壇下載過檔案的人應該都很常見到一長串 MD5 或 SHA-1 驗證碼,就是用來讓你快速檢查你下載的檔案裡頭的內容,是不是跟上傳者上傳的檔案一樣。
3.3.1. 為什麼雜湊不是加密?
今天如果我拿到一串密文,我是有辦法透過解密,得到原始的明文的,而且如果使用非對稱式加密的話,我甚至還可以驗證傳送方是不是本人(是否有被進行中間人攻擊)。
雜湊演算法在這裡也會被使用,通常會被拿來檢驗傳送的訊息是否有被更改過。
傳送方附上原始訊息經過某個雜湊演算法得出的雜湊值,接收方在解開這個訊息之後,會透過相同的雜湊演算法來驗證。
但如果是拿到一串雜湊值的話,理論上是無法逆向得到原始的明文的,根本無法拿來做資料的傳遞。
對於雜湊在網路傳輸上的應用有了更進一步的了解,確認傳送的訊息是否有被更改過
!
引用:加密和雜湊有什麼不一樣?
4. 廠商檢測使用之軟體 引用報告書內容:
本服務所使用之弱點掃描檢測工具的廠牌為 HCL AppScan
,作為網頁弱點掃描檢測工具,可全面搜尋受測單位的漏洞。
經查詢這套軟體看起來是付費軟體哦。
5. 檢測結果
5.1. 低強度密碼組合 - ROBOT 攻擊:伺服器支援有漏洞的密碼組合 網路搜尋找到來自HCL AppScan文件說明 :
依預設,IIS 安裝時會啟用 2 個低強度 SSL 2.0 密碼組合:SSL2_RC4_128_WITH_MD5 和 SSL2_DES_192_EDE3_CBC_WITH_MD5 。這會影響 AppScan Enterprise 的安全,應該停用這些密碼組合。
從文件內容中,了解到原來設定都藏在登錄檔之中,試圖理解SSL2_RC4_128_WITH_MD5
這個是代表什麼意思,意外發現可以用這張圖片來解釋:
Server Protocols
+ _
+ Ciphers
+ _
+ WITH
+ Hashes
實際去探訪登錄檔
,截圖增加印象:
5.2. 偵測到 RC4 密碼組合 經過第一項弱點的認識後,這一項的說明其實就變得更好理解了。也就是不要包含RC4
就對了!
5.3. 偵測到低強度密碼:並非所有密碼組合都支援完全秘密轉遞 經過第一項弱點的認識後,這一項的說明其實就變得更好理解了。比如不能有SSL
、RC4
、MD5
,並且在組合上避免低安全的組合!
6. 工具推薦 6.1. SSLScan 是一套open source,在github公開,可以自行下載。
可以看到SSL/TLS Protocols
的enable狀況
可以看到Supported Server Cipher
的支援狀況
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 PS C:\Users\kite\Downloads\sslscan-2.0.15> .\sslscan.exe tw.yahoo.com Version: 2.0.15 Windows 64-bit (Mingw) OpenSSL 1.1.1e-dev xx XXX xxxx Connected to 119.161.15.251 Testing SSL server tw.yahoo.com on port 443 using SNI name tw.yahoo.com SSL/TLS Protocols: SSLv2 disabled SSLv3 disabled TLSv1.0 enabled TLSv1.1 enabled TLSv1.2 enabled TLSv1.3 enabled TLS Fallback SCSV: Server supports TLS Fallback SCSV TLS renegotiation: Secure session renegotiation supported TLS Compression: Compression disabled Heartbleed: TLSv1.3 not vulnerable to heartbleed TLSv1.2 not vulnerable to heartbleed TLSv1.1 not vulnerable to heartbleed TLSv1.0 not vulnerable to heartbleed Supported Server Cipher(s): Preferred TLSv1.3 128 bits TLS_AES_128_GCM_SHA256 Curve 25519 DHE 253 Accepted TLSv1.3 256 bits TLS_AES_256_GCM_SHA384 Curve 25519 DHE 253 Accepted TLSv1.3 256 bits TLS_CHACHA20_POLY1305_SHA256 Curve 25519 DHE 253 Preferred TLSv1.2 128 bits ECDHE-ECDSA-AES128-GCM-SHA256 Curve 25519 DHE 253 Accepted TLSv1.2 256 bits ECDHE-ECDSA-AES256-GCM-SHA384 Curve 25519 DHE 253 Accepted TLSv1.2 256 bits ECDHE-ECDSA-CHACHA20-POLY1305 Curve 25519 DHE 253 Accepted TLSv1.2 256 bits ECDHE-RSA-CHACHA20-POLY1305 Curve 25519 DHE 253 Accepted TLSv1.2 128 bits ECDHE-RSA-AES128-GCM-SHA256 Curve 25519 DHE 253 Accepted TLSv1.2 256 bits ECDHE-RSA-AES256-GCM-SHA384 Curve 25519 DHE 253 Accepted TLSv1.2 128 bits ECDHE-ECDSA-AES128-SHA256 Curve 25519 DHE 253 Accepted TLSv1.2 256 bits ECDHE-ECDSA-AES256-SHA384 Curve 25519 DHE 253 Accepted TLSv1.2 128 bits ECDHE-ECDSA-AES128-SHA Curve 25519 DHE 253 Accepted TLSv1.2 256 bits ECDHE-ECDSA-AES256-SHA Curve 25519 DHE 253 Accepted TLSv1.2 128 bits ECDHE-RSA-AES128-SHA256 Curve 25519 DHE 253 Accepted TLSv1.2 256 bits ECDHE-RSA-AES256-SHA384 Curve 25519 DHE 253 Accepted TLSv1.2 128 bits ECDHE-RSA-AES128-SHA Curve 25519 DHE 253 Accepted TLSv1.2 256 bits ECDHE-RSA-AES256-SHA Curve 25519 DHE 253 Accepted TLSv1.2 128 bits AES128-GCM-SHA256 Accepted TLSv1.2 256 bits AES256-GCM-SHA384 Accepted TLSv1.2 128 bits AES128-SHA256 Accepted TLSv1.2 256 bits AES256-SHA256 Accepted TLSv1.2 256 bits AES256-SHA Preferred TLSv1.1 128 bits ECDHE-ECDSA-AES128-SHA Curve 25519 DHE 253 Accepted TLSv1.1 256 bits ECDHE-ECDSA-AES256-SHA Curve 25519 DHE 253 Accepted TLSv1.1 128 bits ECDHE-RSA-AES128-SHA Curve 25519 DHE 253 Accepted TLSv1.1 256 bits ECDHE-RSA-AES256-SHA Curve 25519 DHE 253 Accepted TLSv1.1 256 bits AES256-SHA Preferred TLSv1.0 128 bits ECDHE-ECDSA-AES128-SHA Curve 25519 DHE 253 Accepted TLSv1.0 256 bits ECDHE-ECDSA-AES256-SHA Curve 25519 DHE 253 Accepted TLSv1.0 128 bits ECDHE-RSA-AES128-SHA Curve 25519 DHE 253 Accepted TLSv1.0 256 bits ECDHE-RSA-AES256-SHA Curve 25519 DHE 253 Accepted TLSv1.0 256 bits AES256-SHA Server Key Exchange Group(s): TLSv1.3 128 bits secp256r1 (NIST P-256) TLSv1.3 192 bits secp384r1 (NIST P-384) TLSv1.3 260 bits secp521r1 (NIST P-521) TLSv1.3 128 bits x25519 TLSv1.3 224 bits x448 TLSv1.2 128 bits secp256r1 (NIST P-256) TLSv1.2 192 bits secp384r1 (NIST P-384) TLSv1.2 260 bits secp521r1 (NIST P-521) TLSv1.2 128 bits x25519 TLSv1.2 224 bits x448 SSL Certificate: Signature Algorithm: sha256WithRSAEncryption ECC Curve Name: prime256v1 ECC Key Strength: 128
6.2. IIS Crypto 7. 參考網站