Web应用程序漏洞-URL跳转
第一步,打开网络拓扑,启动实验虚拟机,分别查看虚拟机IP地址:
Kali Linux
Windows2003
Windows 7
第二步,使用Kali Linux中的浏览器访问Windows2003靶机:

http://172.16.1.200/admin(靶机IP地址)
第三步,打开终端,启动BurpSuite:
burpsuite &
第四步,进入Proxy标签,在Options中可以看到默认正在监听8080端口
第五步,在浏览器设置中配置代理
第六步,在管理员登录界面输入任意用户名和密码,BurpSuite拦截到一个数据包,该请求指向/admin/index.php,直接点击“Forward”放行
第七步,三秒后拦截到第二个数据包,数据包指向re-direct.php,通过GET方法发送了变量where值为/,点击“Forward”放行,并迅速观察浏览器变化
第八步,在放行该数据包后,浏览器显示内容如下
第九步,推测where的值为延迟跳转的地址,构造新的URL:
/re-direct.php?where=/admin
证实re-direct.php存在URL跳转漏洞。它可以用于用户欺骗。
第十步,我们可以使用Kali Linux仿写一个后台登录的假页面,通过靶机的re-direct.php指向Kali Linux的地址。
例:
http://172.16.1.200/re-direct.php?where=http://172.16.1.100/admin
浏览Kali Linux中的/var/www/html/admin目录
/var/www/html是默认的网站目录;
index.php:
在admin目录下,index.php为提前准备好的钓鱼页面,当在index.php中填写用户名密码并点击登录按钮后,会触发save.php,将用户名和密码信息自动保存到data.txt当中
第十一步,开启Apache网站服务:
service apache2 restart
第十二步,使用Windows 7测试访问Kali Linux的admin页面
第十三步,利用靶机中的re-direct.php组成一个新的钓鱼URL,该URL来自172.16.1.200,但它会跳转至钓鱼网站。并模拟受害者访问:
http://172.16.1.200/re-direct.php?where=http://172.16.1.100/admin
第十四步,save.php被调用
第十五步,查看/var/www/html/admin/data.txt文件,用户名密码已被恶意获取并保存
实验结束,关闭虚拟机。
【总结思考】
理论上讲,URL跳转属于CSRF的一种,我们需要对传入的URL做有效性的认证,保证该URL来自于正确的地方。