利用SSL/TLS绕过web应用防火墙

众所周知的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

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容