透过F5获取服务器真实内网IP

渗透测试过程中,经常会遇到目标服务器使用F5 LTM做负载均衡。如果能获取到目标服务器的真实IP地址,会给后续渗透带来一定便利。

本文既是最近渗透遇到的一点点经验分享。

F5修改cookie机制

F5 LTM做负载均衡时,有多种机制实现会话保持。其中用到很多的一种是通过修改cookie来实现的。

具体说来,F5在获取到客户端第一次请求时,会使用set cookie头,给客户端埋入一个特定的cookie。

比如:Set-Cookie: BIGipServerpool_8.29_8030=487098378.24095.0000

后续再接到客户端请求时,F5会查看cookie里面的字段,判断应该交给后续哪台服务器。

作为传统大厂,F5当然不会傻到直接把服务器IP address写入到cookie里面。F5很巧妙的把server的真实IP address做了两次编码,然后再插入cookie。

所以,只要依据解码流畅,解开487098378.24095.0000的内容,就拿到了server的真实IP address。

解码思路

首先,把第一小节的十进制数取出来,也即,487098378第二,将其转为十六进制数1d08880a第三,从后至前,以此取四位数出来,也即,0a;88;08;1d;第四,依次把他们转为十进制数:10;136;8;29最后,得到真实内网IP:10.136.8.29

总结

严格意义上说,只有内网的私有IP,对正面突破目标防线的帮助并不明显。但是,当需要做内网渗透和漫游的时候,这一点信息还是有价值的。再不济,写report的时候,如果实在没的可写的时候,还可以拿这点作为一个issue作为丰富report的素材。

12 回复

师傅威武,感谢支持

首先贴一下一个类似老文 https://penturalabs.wordpress.com/2011/03/29/how-to-decode-big-ip-f5-persistence-cookie-values/另外可以就这个场景的意义来讨论下,F5通常后面对接的是什么,一般都是业务机器吧,那么业务机器获取了内网IP之后,能在哪些渗透场景下给接下来的工作提供便利呢?

原文链接:https://penturalabs.wordpress.com/2011/03/29/how-to-decode-big-ip-f5-persistence-cookie-values/

@darkray雷雷大师,我拿了内网ip后要是找得到ssrf可以配合来用啊。另外有时遇到传shell上去之后有负载,其实可以通过设置cookie来只访问内网某台负载服务器,这就不用传多个文件了,特别适合弄于regeorg遇到负载的时候。

@00theway 这么说也不对啊,万一是大家都想到了呢。

一般来说负载均衡的实现方式无非以下几种:1.基于cookie的会话保持,也就是文章提到的这种方式2.基于session的会话保持,这种也是现在比较常用的,weblogic的session复制机制,想apache这种可以通过插件来实现,不过在现在的分布式环境中都是用数据库或者内存数据库(redis、mongo、Memcached等),早期有一部分是用文件系统来实现,性能原因被抛弃了3.还有一种就是基于四层的负载,基于IP+端口,这个现在貌似没人用,优点是性能好

@darksnake 学习了,总结下:

  1. SSRF配合攻击内网的同段IP
  2. 通过设置COOKIES来指定负载会话

后面的朋友,还有吗?~

@darksnake 基友你好,regeorg如何设置cookie呢,刚刚有搜到一篇文章,https://www.imbeee.com/2016/01/06/reGeorgSocksProxy-with-single-session-mode/,但是里面的文件无法下载了。

@jumbo 请联系博客的作者 在社区 @imbeee

1

@jumbo抱歉,博客资源链接出问题了一直没去搞。临时传了一个七牛的链接:reGeorg

@imbeee 谢了基友

@iswin 师傅总结的很好。赞一个。其实除了用F5做负载均衡,有些小企业也会拿waf做负载均衡。毕竟解析http内容、基于http内容作路由转发也是waf的拿手好戏。前提是业务的流量不会太大,waf能撑得住。F5如果配置其他的负载均衡方法,文中的方法就无效了。

你可能感兴趣的:(设备安全)