渗透测试过程中,经常会遇到目标服务器使用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的时候,如果实在没的可写的时候,还可以拿这点

透过F5获取服务器真实内网IP的更多相关文章

  1. php获取代理服务器真实内网IP方法

     功能:获取用户真实IP地址,代理服务器内网IP,防HTTP_CDN_FORWARDED_FOR注入 function getIP() { if (isset($_SERVER["HTTP_ ...

  2. JAVA获取访问者的内网IP地址

    /** * 获取访问者内网IP * @return the server ip */ public static String getIntranetIp() { // 本地IP,如果没有配置外网IP ...

  3. C++获取当前机器内网IP地址

    /*头文件*/ #include "winsock2.h" #pragma comment(lib,"ws2_32.lib") /*Hui 获取当前服务器IP* ...

  4. Python获取内网IP

    Python 获取本机内网IP 本文记录使用Python获取本机IP的两种方法. 通过hostname来获取本机IP import socket print(socket.gethostbyname( ...

  5. 获取本机外网ip和内网ip

    获取本机外网ip //获取本机的公网IP public static string GetIP() { string tempip = ""; try { WebRequest r ...

  6. python 判断内网IP方法及实例应用

    一.初衷: 一般在CMDB里会存储一台服务器的内网IP.管理IP.电信IP.联通IP,我们在使用的时候只需要拿到其中一个外网IP地址即可.那么我们就需要判断内网IP.管理IP并剔除掉,获取第一个外网I ...

  7. 根据Request获取客户端IP 内网IP及外网IP

    在JSP里,获取客户端的IP地址的方法是:request.getRemoteAddr() ,这种方法在大部分情况下都是有效的.但是在通过了Apache,Squid等反向代理软件就不能获取到客户端的真实 ...

  8. xss实现获取内网ip

    前提得浏览器支持webRTC,测试的时候google浏览器测试成功,火狐浏览器不支持webRTC, 再在xss平台直接复制如下js代码: function form_ip(ip,port){ var ...

  9. 获取本机内网、外网ip(C++)<转>

    基础知识 电脑在局域网内,通过网关/路由器连接到Internet则ip分为内网ip.外网ip.通过ipconfig得到的为局域网ip. 电脑直接拨号连接等,则本机通过ipconfig得到的就是外网ip ...

随机推荐

  1. GTK入门

    环境准备 官网下载 GTK 源码包,因为本机 GLib 版本不够,下载一个非最新版的 GTK3.8.0 先学习用 直接阅读 "/gtk+-3.8.0/docs/reference/gtk/h ...

  2. SpringBoot+Shiro+DB (二)

    之前我们完成了Spring+Shiro的最基本配置搭建,现在我们再增加上DB,毕竟没有哪个系统会将用户.角色.权限等信息硬编码到代码里.DB选用myslq. 数据库准备 脚本如下.依然是两个用户:ad ...

  3. C++逐行读取txt

    C++读取txt文件的时候可以使用std::ifstream来实现,如果打开文件失败的话,其变量会是空的,所以可以用来判断是否打开成功.  #include <stdlib.h>  #in ...

  4. rabbitmq安装及简单demo练习

    参考:https://my.oschina.net/loveorange/blog/3026473 安装参考链接: 1. 下载自己需要的rabbitmq_server(http://www.rabbi ...

  5. Python语言基础与应用 (P16)上机练习:基本数据类型

    本文是笔者在学习MOOC课程<Python语言基础与应用> (北京大学-陈斌)中根据上机课时的要求写下在代码 课程总链接: 中国大学MOOC B站 本节课链接 数值基本运算: 33和7+, ...

  6. mysql中各种复杂的增删改查

    1.mysql查出数据表中连续出现三次或三次以上的数据 建一张表如下:表名为 number 1.1 要求找出num列连续出现三次或三次以上的数据: select * from number where ...

  7. POJ 1789:Truck History

    Truck History Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 21376   Accepted: 8311 De ...

  8. 小结spring给项目开发的好处

    1.spring 抽象了许多开发中遇到的共性问题:支持pojo和javaBean开发使应用面向接口开发.如各种Template 2.Ioc 容器使得对象间的耦合关系文本化.外部化,即通过xml的配置就 ...

  9. Linux(CENTOS7) Tomcat服务成功发布但局域网浏览器无法访问

    问题 : 我在linux搭建了一个tomcat服务器,tomcat开启后,发现在局域网浏览器上无法访问该tomcat,浏览器报无法访问服务器错误,我查看了tomcat的日志,路径..../tomcat ...

  10. 深入浅出 java.String

    深入浅出 java.String Java 处理字符串常用的一些方法 Java定义一个字符串 直接定字符串 直接定义字符串表示直接使用""来表示字符串中的内容 String str ...