通过F5 BIG-IP LTM的会话Cookie获取Facebook服务器内网IP
作者:admin | 时间:2018-4-16 21:45:50 | 分类:黑客技术 隐藏侧边栏展开侧边栏
早前有技术社区发布了文章《解码F5负载均衡产品持久性Cookie探测内网IP》,其中讲解了通过解码F5 BIG-IP LTM的Cookie来发现目标服务器真实内网IP。简单来说就是,F5负载均衡产品( BIG-IP LTM)在做网络负载均衡时,会利用持久性cookie来实现会话保持,所以,在一些渗透测试中,如果遇到F5的负载均衡产品环境,可以使用这种技巧,获取目标服务器的真实IP地址,为后续深入渗透带来一定便利。本篇文章,我们就来讲述利用这种技巧,发现Facebook服务器内部IP信息。
F5 BIG-IP LTM 官方名称为本地流量管理器,也叫网络负载均衡器,是F5公司的新一代网络管理产品。BIG-IP LTM 可做4-7层负载均衡,具有负载均衡、应用交换、会话交换、包过滤等多种高级网络功能。
F5 BIG-IP LTM Cookie保持机制
当客户端向目标服务器发起请求时,会用到HTTP Cookie Insert或HTTP Cookie Rewrite方法,这些Cookie方法会让客户端与服务器端保持有效,样式为BIGipServer<pool_name>,其中包含了客户端请求的,经过编码处理的目标服务器IP和端口信息。
BIG-IP LTM 系统Cookie编码规则
IP编码
将IP地址的每个八位字节值转换为等效的1字节十六进制值
将十六进制字节的顺序反向,然后连接成一个4字节的十六进制值
将生成的4字节十六进制值转换为其十进制等效值
例如,如果服务器IP为10.1.1.100,按照上述规则来编码就是:
10.1.1.100 = 0x0A . 0×01 . 0×01 . 0×64
Reverse byte order, concatenated = 0x6401010A
0x6401010A = 1677787402
当然,如果服务器IP为a.b.c.d,也能用公式a + b*256 + c*(256^2) + d*(256^3)来代入实现最终编码。
端口编码
把十进制的端口值转换为等效的两字节十六进制值
反向两字节的十六进制顺序
将生成的两字节十六进制值转换为十进制等效值
如8080端口,最终编码为:
8080 = 0x1F90
Reverse byte order = 0x901F
0x901F = 36895
比如,在对服务器2001:0112::0030:80请求时,F5会把Cookie编码为:
BIGipServer<pool_name>=vi20010112000000000000000000000030.20480
具体可参考support.f5.com和owasp.org的说明。
测试Facebook
如测试者通过互联网对Facebook内部服务器发起了一次请求,请求经过Facebook内网的F5 BIG-IP时,它会在Cookie中加入源请求IP信息,然后根据请求判断发往服务器;服务器响应时,就在Set-Cookie:BIGipServer<pool_name>中编码了服务器IP和端口信息,回传到客户端。
客户端请求:
GET /app HTTP/1.1
Host: f4c3300k.com
服务端响应:
最终,只要客户端能解码这个Set-Cookie:BIGipServer<pool_name>信息,就能成功获取到Facebook内部服务器的IP地址。当然,要发现这种Cookie,除了查看 “<pool_name>” 字段外,我们还能检索类似于 “Desa”、”pre”、”prod”、”Exchange_2010_External”等其它管理员会设置的内部架构信息。
存在该漏洞的FACEBOOK相关网站:
maileast.thefacebook.com
autodiscover.instagram.com
mail-ext.thefacebook.com
mail.hack.tfbnw.net
mail.thefacebook.com
autodiscover.thefacebook.com
autodiscover.fb.com
autodiscover.internet.org
autodiscover.oculus.com
autodiscover.whatsapp.com
esbmbltest.thefacebook.com
测试FACEBOOK服务器PoC
请求:
得到的响应1:
得到的响应2:
得到的响应3:
如果持续大量发起请求,就可能得到所有FACEBOOK内部服务器IP地址。
BIG-IP Cookie解码自动化工具
手工测试太过麻烦,为此,我专门做了一个BIG-IP Cookie的请求解码工具:f5_cookieLeaks,完全能做到最终目标服务器信息的自动化请求解码,非常方便。
安装:
usr@pwn:~$ git clone https://github.com/ezelf/f5_cookieLeaks.git
usr@pwn:~$ cd f5_cookieLeaks
usr@pwn:~$ pip install -r requirements.txt
用f5_cookieLeaks对Facebook的测试证明:
通过上述自动化工具,我们发送大量请求,在这些每个请求的响应中,都会包含FACEBOOK内部主机IP和端口信息,并且这些Cookie都会保持有效,这样一来,所有可能的内部主机架构信息都可被探测到。
漏洞上报
当我把这个问题报送给FACEBOOK安全团队时,他们告知我,在此之前,已经有研究人员上报过这个漏洞($500),他们也正在修复,所以,我只能呵呵了….,就仅当练手吧。
*参考来源:misteralfa-hack,FreeBuf小编clouds编译