导语:F5LTM做负载均衡时,有多种机制实现会话保持,其中常用的是通过修改cookie来实现。具体说来,F5在获取到客户端第一次请求时,会使用set cookie头给客户端埋入一个特定的cookie。
F5LTM做负载均衡时,有多种机制实现会话保持,其中常用的是通过修改cookie来实现。具体说来,F5在获取到客户端第一次请求时,会使用set cookie头给客户端埋入一个特定的cookie。
这些cookie在响应中带来了编码值,并且在这方面有官方文档:https://support.f5.com/csp/article/K6917?sr = 19342610。
比如:Set-Cookie: BIGipServerpool_8.29_8030=487098378.24095.0000。后续再接到客户端请求时,F5会查看cookie里面的字段,判断应该交给后续哪台服务器。
演示请求:
GET / app HTTP / 1.1
主持人:f4c3300k.com
回应:
获取真实ip
看到上面的图,你应该就能明白负载均衡的流程。既然做负载均衡,肯定是要交给后端的服务器,交给的信息顾名思义就是IP address,所以Set-Cookie中存在IP address,但真实IP address并不是以明文的形式存在cookie中,而是做了两次编码,然后再插入cookie。
只要解开487098378.24095.0000的内容,就拿到了server的真实IP address。
解码思路:首先,把第一小节的十进制数取出来,也就是487098378;第二,将其转为十六进制数1d08880a;第三,从后至前,以此取四位数出来,也就是0a;88;08;1d;第四,依次把他们转为十进制数:10;136;8;29;最后,得到真实内网IP:10.136.8.29。
影响列表
· 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
请求
响应1
响应2
响应3
自动化
[email protected]:〜$ git clone https://github.com/ezelf/f5_cookieLeaks.git [email protected]:~/$ python quickCook_v0.2.py --help usage: quickCook.py [-h] [-v] --host HOST [--ssl] --cookie-name COOK [--port PORT] [--req REQ] [--uri URI] [ F5 BIG-IP ] PERSISTENCE COOKIE INFORMATION LEAKAGE optional arguments: -h, --help show this help message and exit -v, --version show program's version number and exit --host HOST Host --ssl use ssl --cookie-name COOK Cookie Name --port PORT Port --req REQ Total Request --uri URI URI path [+] Demo: quickCook.py --host 192.168.1.1 --cookie-name "BIGipServerPool_X" --req 50
poc 1:
poc 2:
poc 3:
poc 4