众所周知的SSL/TLS握手过程:
图1 SSL/TLS握手
如上图1所示,server和client之间需要协商加密套件,如果client支持的加密套件不在server支持的范围内就无法正常工作。那么,如果client<--->server支持的加密套件超出waf支持的范围,waf能拒绝吗?
根据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服务端的SSL套件可以使用sslcan扫描获得。
通过对比waf和web server的SSL套件,发现如下的套件web server支持但waf不支持:
Accepted TLSv1 256 bits ECDHE-RSA-AES256-SHA
web server增加一个测试页面/ssl-cipher-test,且在waf上配置block URL路径/ssl-cipher-test。
直接访问会成功拦截:
用制定的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:~$
来源:
https://0x09al.github.io/waf/bypass/ssl/2018/07/02/web-application-firewall-bypass.html













网友评论