在一次Web渗透测试中,目标是M国的一个Win+Apache+PHP+MYSQL的网站,独立服务器,对外仅开80端口,网站前端的业务系统比较简单,经过几天的测试也没有找到漏洞,甚至连XSS都没有发现,也未找到网站后台,在收集信息的时候已经排除了C段入侵的可行性(选择C段入侵的时候,需要对目标、网络、路由和国家区域进行分析和判断,如果不经思考和判断地去入侵C段服务器,当你费尽心思拿到某台服务器权限时,往往发现毫无半点用处,特别又是在国外,ARP基本上都没什么希望,当然内网渗透中又是另一回事。)

  也许在渗透测试遇到这种情况时大多会选择放弃,在绝望的时候,我将目标临时转移到该网站域名注册商,因为拥有域名注册商网站权限,至少可以修改目标网站的域名解析。一般情况入侵域名注册网站难度比较大,但并不是没有希望,在09年的时候,国内很多域名注册商的网站都存在漏洞。渗透那个域名注册商网站,过程比较繁杂,也没有新的技术点,靠的就是细心和耐心,但最终还是获取到目标网站域名的管理账号和密码,那么此时我们已知和已有的条件如下:

  目标域名:www.007hack.com(当然不是真的,文章来源007安全)
  网站IP:1.1.1.1

  环境:Win+Apache+PHP+MYSQL

  已有权限:域名解析权限,可以将www.007hack.com解析到任何一个IP上

  特别说明下,目标网站使用的服务器,并不是在域名注册商租用的,而是放置在公司机房中,所以通过域名注册商网站,是不能管理到Web源码的,只能进行域名解析。

  当拥有域名解析权限后,如何才获取目标网站的权限呢?

  A:构造一个和目标非常相似的网站?然后将域名解析到构造的网站?

  B:使用iis重定向?

这些方法都非常容易被发现,并且也无法获取到权限,所以遇到这种场景的时候我们可以使用反向代理,也是本文的重点。了解反向代理之前,我做一个关于HTTP 代理的简单介绍, 代理常用的是普通代理和反向代理:

普通代理:为用户(客户端)提供代理,需要在客户端设置,比如在客户端浏览器中设置代理服务器IP和端口,完成配置后,用户可以通过代理服务器访问互联网,代理服务器相当于中间人的作用。根据代理服务器配置不同,又可以将普通代理分为,几种不同安全级别的代理,代理软件比较多,不同的厂商有不同的称谓和分级,一般情况都包括以下三个级别,透明代理、普通匿名代理和高匿名代理。

透明代理:

REMOTE_ADDR = 代理服务器 IP
HTTP_VIA = 代理服务器 IP
HTTP_X_FORWARDED_FOR = 真实 IP

说明:使用透明代理,可以进行信息交互,但不能隐藏自己真实IP,安全性越差,所以黑客一般不会使用此类代理。

普通匿名代理:

REMOTE_ADDR = 代理服务器 IP
HTTP_VIA = 代理服务器 IP
HTTP_X_FORWARDED_FOR = 代理服务器 IP

说明:隐藏了真实的IP,但通过HTTP_VIA可以判断出你使用了代理。

高匿名代理:

REMOTE_ADDR = 代理服务器 IP
HTTP_VIA = 没数值

HTTP_X_FORWARDED_FOR = 没数值

说明:可以隐藏真实IP,同时不会泄露你是否使用了代理,这类代理黑客往往比较喜欢。

用户通过普通代理访问Web,实际上用户并没有直接访问Web服务器,而是通过代理服务器作为中转,的示意图如下:

反向代理:是为服务器提供代理和缓存,不需要在客户端。用户访问网站,实际上并不是直接访问Web服务器,而是首先访问反向代理服务器,如果请求的是html/htm/gif/jpg等这些静态文件时,反向代理服务器直接返回结果,如果用户请求是脚本如asp/php/jsp等内容时,反向代理服务器会将请求转发给Web服务器处理,再把结果返回给用户,从而通过缓存实现加速的效果。示意图如下:

  Squid和Nginx是非常优秀的反向代理软件,本文主要介绍Squid,它支持Windows和Linux,由于目标网站环境是win,我这里使用Win下的squid(使用Linux也可以),配置方法如下:

Squid版本:2.7 For Win

1、配置squid/etc目录
cachemgr.conf.default
mime.conf.default
squid.conf.default
squid_radius_auth.conf.default(可能低版本这个文件不存在,如果没有就不用修改)

复制并改名为:

cachemgr.conf
mime.conf
squid.conf
squid_radius_auth.conf

2.用文本编辑器打开squid.conf,需要修改的地方:

查找http_port 3128在后面增加一行
http_port 80 vhost

查找#cache_peer sib2.foo.net sibling 3128 3130 [proxy-only]在后面增加一行
cache_peer 1.1.1.1         parent    80      0   no-query   originserver

1.1.1.1为目标网站真实IP,80为端口

查找# TAG: visible_hostname在后面增加一行

visible_hostname volcano(任意命名)

查找http_access deny all 在其前面加#将这一行注释掉,然后增加一行

http_access allow all

3.使用squid/sbin/squid.exe执行以下命令

squid -i -n web_squid  #命名squid服务的新名称
squid -i  #将squid服务加入到服务里面
squid -r -n web_squid  #删除指定名称的服务
squid -z  #创建缓存目录
squid -k parse  #检测配置是否有效
net start web_squid #启动
squid -dx #当服务不能启动时,进行调试

  测试squid是否正常:
  访问http://squid服务器ip
  实际指向http://web服务器IP

  完成测试后,将目标域名解析到squid服务器IP,网站以及功能完全正常,唯一差别就是ping返回的IP是squid服务器的IP,并不是真正的Web服务器IP,只要网站正常访问,管理员也不会时时去ping。

  经过几个小时等待后,目标网站管理员登陆后台,在日志squid\var\logs\access.log就可以找到后台地址,后台目录文件名非常地长,同时收获了很多敏感的URL,准备研究如何截取Cookie或者后台账号密码时,后台xx_adduser.php存在本地验证漏洞,直接添加管理员成功,管理员和后台地址都有了,登陆后顺利拿到WebShell。

  当然,如果后台不存在这个漏洞,应该还是有办法可以弄到权限的,毕竟用户/管理员访问的数据包都会经过这台squid服务器,只不过会麻烦许多……

反向代理在Web渗透测试中的运用的更多相关文章

  1. 2. Web渗透测试中常见逻辑漏洞解析与实战

    注:以下漏洞示例已由相关厂商修复,切勿非法测试! 0x01 漏洞挖掘 01  注册 注册中最常见的有两个,一个是恶意注册,另一个是账户遍历.一个好的注册界面应该是这样 或者这样的 而不是这样的 要么使 ...

  2. Kali Linux Web 渗透测试视频教程— 第二课 google hack 实战

    Kali Linux Web 渗透测试— 第二课 代理简介 文/玄魂 课程地址: http://edu.51cto.com/course/course_id-1887.html 目录 shellKal ...

  3. KALI LINUX WEB 渗透测试视频教程—第十九课-METASPLOIT基础

    原文链接:Kali Linux Web渗透测试视频教程—第十九课-metasploit基础 文/玄魂 目录 Kali Linux Web 渗透测试视频教程—第十九课-metasploit基础..... ...

  4. Kali Linux Web渗透测试手册(第二版) - 1.0 - 渗透测试环境搭建

    一.配置KALI Linux和渗透测试环境 在这一章,我们将覆盖以下内容: 在Windows和Linux上安装VirtualBox 创建一个Kali Linux虚拟机 更新和升级Kali Linux ...

  5. Kali Linux Web渗透测试手册(第二版) - 1.1 - Firefox浏览器下安装一些常用的插件

    一.配置KALI Linux和渗透测试环境 在这一章,我们将覆盖以下内容: l  在Windows和Linux上安装VirtualBox l  创建一个Kali Linux虚拟机 l  更新和升级Ka ...

  6. Kali Linux Web 渗透测试视频教—第二十课-利用kali linux光盘或者usb启动盘破解windows密码

    Kali Linux Web 渗透测试视频教—第二十课-利用kali linux光盘或者usb启动盘破解windows密码 文/玄魂 目录 Kali Linux Web 渗透测试视频教—第二十课-利用 ...

  7. Kali Linux Web 渗透测试— 第二十课-metasploit.meterpreter

    Kali Linux Web 渗透测试— 第二十课-metasploit.meterpreter 原文链接:http://www.xuanhun521.com/Blog/7fc11b7a-b6cb-4 ...

  8. Kali Linux Web 渗透测试视频教程— 第十六课-拒绝服务攻击

    Kali Linux Web 渗透测试视频教程— 第十六课-拒绝服务攻击 文/玄魂 目录 Kali Linux Web 渗透测试视频教程— 第十六课-拒绝服务攻击................... ...

  9. Kali Linux Web 渗透测试视频教程—第十四课-arp欺骗、嗅探、dns欺骗、session劫持

    Kali Linux Web 渗透测试视频教程—第十四课-arp欺骗.嗅探.dns欺骗.session劫持 文/玄魂 目录 Kali Linux Web 渗透测试—第十四课-arp欺骗.嗅探.dns欺 ...

随机推荐

  1. 【oracle】解锁oracle用户,unlock

    解除oracle用户的锁定状态,例如oracle数据库建立测试实例时默认建立的scott用户,一开始是处于locked状态的,现在我们需要将其解锁,步骤如下: (1)在cmd中登录sqlplus,例如 ...

  2. hive0.12 rcfile gzip 测试

    创建test_rc; 让后从老数据中插入test_rc中, select test_rc 中插入的数据,报如下错误: Failed with exception java.io.IOException ...

  3. [转]maven安装以及eclipse配置maven

    转自:http://jingyan.baidu.com/article/295430f136e8e00c7e0050b9.html 方法/步骤 下载maven的bin,在apache官方网站可以下载. ...

  4. POJ 2407 (欧拉函数)

    题目链接: http://poj.org/problem?id=2407 题目大意:求小于n且与n互质的正整数个数. 解题思路: 欧拉函数=小于n且与n互质的正整数个数. 公式=n*(1-1/P1)* ...

  5. 封装一个通用递归算法,使用TreeIterator和TreeMap来简化你的开发工作。

    在实际工作中,你肯定会经常的对树进行遍历,并在树和集合之间相互转换,你会频繁的使用递归. 事实上,这些算法在逻辑上都是一样的,因此可以抽象出一个通用的算法来简化工作. 在这篇文章里,我向你介绍,我封装 ...

  6. 关于VSS上的项目源码管理的注意问题

    1.将项目添加到vss上面去 如果项目取的名字没有问题,则不需要去vss上面去新建项目,直接在解决方案那里右击“添加到vss”中,把第一个输入框中的名字(xxxx.root)全部清除掉.确定即可. 2 ...

  7. GX转账站点无法访问的问题

    1.先检查200路由器上的端口<8099,8098> 没有则加上 2.检查站点是否能在200服务器上打开 不能打开,重启站点

  8. Mybatis一级、二级缓存

      Mybatis一级.二级缓存   一级缓存 首先做一个测试,创建一个mapper配置文件和mapper接口,我这里用了最简单的查询来演示. <mapper namespace="c ...

  9. Button,CheckBox,Lable,RadioButton,ComboBox,TextBox六个简单控件的使用

    所有文字的更改全部在Text属性中更改! ComboBox:点击右上方小箭头,选择编辑项弹出: RadioButton:,Checked属性选择True,表示已被选中: Button:在设计中双击按钮 ...

  10. Jquery广告浮动效果小案例

    导入<script src="<%=path%>/html5/js/jquery.js"></script>文件 <SCRIPT type ...