URL重定向漏洞,python打造URL重定向漏洞检测脚本
前言:
今天学习了重定向漏洞,这个漏洞比较好理解
漏洞名:URL重定向漏洞
威胁:低
漏洞的来源:开发者对head头做好对应的过滤和限制
例子:
有漏洞的网站:http://a.com/x.php?url=http://a.com/login.php
这时我们通过写个url后面的链接让其跳转到指定的页面。例:http;//a.com/x.php?url=http://www.baidu.com
可搭配使用的漏洞:
CSRF 当一个网站存在CSRF漏洞的时候,而你知道了创建后台管理员的链接。修改链接,运用URL重定向漏洞。在进行短链生成
储存型XSS 当一个网站存在储存型XSS漏洞的时候,你插入了一个盗取cookie的js。配合URL重定向漏洞,让受害者直接跳转到该页面
正文:
这里我们使用BWAPP这个漏洞网站来进行URL重定向测试。
http://192.168.3.41/bWAPP/unvalidated_redir_fwd_1.php
未过滤的重定向与转发

点击Beam按钮跳转到

打开Burpsuite抓包一看
发现参数是这样的url=xxxx&form=submit

发送到repeater
修改url=http://www.baidu.com
产生302跳转。跳转页面为http://www.baidu.com

回到刚刚的位置放包一看,跳转

中级尝试

一样抓包
直接进行改链,发现跳回到登录页面。仔细对比发现,中级防御通过cookie的设置来判断

将其改为0在改其url后面的参数,直接跳转


高级尝试
高级和中级防御没区别。只是将cookie后面的值改为2。直接改0,将其链接设置跳转成博客园的链接
博客园这里要经过两次跳转



验证URl重定向的漏洞脚的本代码:
import requests,time
def poc():
user=input('Please enter the web site to be tested:')
user2=input('Please enter the parameters you want to bring in:')
values=user2.strip().split('?')[-1]
params={}
for line in values.split('&'):
key,value=line.split('=',1)
params[key]=value
print('URL:',user)
print('The parameters you have taken are:',params)
time.sleep(0.2)
print('If you want to change the parameters, please enter y')
print('Do not need to change to enter n')
user3=input('Do you want to change your parameters[y/n]:')
if user3 == 'y':
while True:
print('Please enter the name of the parameter you want to change{name: value}')
print(params)
user4=input('Please fill in the name:')
user5=input('Please enter the value you want to change:')
params['{}'.format(user4)]='{}'.format(user5)
print('The change is done, and your current parameter is',params)
user6=input('Do you want to continue to love the parameters more[y/n]?:')
if user6 == 'y':
continue
elif user6 == 'n':
break
elif user6 == '':
break url=user.strip()
headers={'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.71 Safari/537.36'}
rest=requests.get(url=url,headers=headers,timeout=6,params=params, allow_redirects=False)
print('Http_code:',rest.status_code)
print(rest.headers)
try:
print(rest.headers['Location'])
if rest.headers['Location'] == 'http://www.baidu.com':
print('[*]There is a URL redirection vulnerability in this link')
else:
print('[+]There is no URL redirection vulnerability in this link')
except:
print('[-]not Location head')
poc()
运行结果如下:

总结:
虽然漏洞威胁不高但还是要防御。防御方法有以下几种:
可利用state参数进行防跨站攻击,验证302跳转回来带code参数的这个请求是否是攻击者伪造的,防止攻击者伪造请求。
对于外链攻击,可在支持HTML5浏览器的环境下给所有外部链接加上rel=noreferrer属性;对于老版本IE的处理方案是利用一个HTTPS进行跳转达到抹去referer的效果
PHP获取retferer判断来路防止非法访问:http://www.90tec.com/iwork/20.html
第二种我不喜欢,其他都还好
URL重定向漏洞,python打造URL重定向漏洞检测脚本的更多相关文章
- python打造文件包含漏洞检测工具
0x00前言: 做Hack the box的题.感觉那个平台得开个VIp 不然得凉.一天只能重置一次...mmp 做的那题毒药是文件包含漏洞的题,涉及到了某个工具 看的不错就开发了一个. 0x01代码 ...
- python MySQL-Slave从服务器状态检测脚本
#!/bin/bash mysql -e "show slave status\G" > mysql_status.txt array=($(egrep 'Slave_IO_ ...
- 目标URL存在跨站漏洞和目标URL存在http host头攻击漏洞处理方案
若需要学习技术文档共享(请关注群公告的内容)/讨论问题 请入QQ群:668345923 :若无法入群,请在您浏览文章下方留言,至于答复,这个看情况了 目录 HTTP协议详解 引言 一.HTTP协议详解 ...
- Java 获取网络重定向文件的真实URL
其实Java 使用HttpURLConnection下载的的时候,会自动下载重定向后的文件,但是我们无法获知目标文件的真实文件名,文件类型,用下面的方法可以得到真实的URL,下面是一个YOUKU视频的 ...
- 点击劫持漏洞之理解 python打造一个挖掘点击劫持漏洞的脚本
前言: 放假了,上个星期刚刚学习完点击劫持漏洞.没来的及写笔记,今天放学总结了一下 并写了一个检测点击劫持的脚本.点击劫持脚本说一下哈.= =原本是打算把网站源码 中的js也爬出来将一些防御的代码匹配 ...
- 微博获取原图时重定向到图片的url
微博获取原图时重定向到图片的url,所以获取的是乱码 jsoup默认是执行重定向的. //根据Url获取页面对应的Document public static Document getDoc1(Str ...
- python打造漏洞数据导出工具
功能 [x] 支持导出的数据:IP地址.漏洞名称.风险等级.整改建议.漏洞描述.漏洞CVE编号.漏洞对应端口.漏洞对应协议.漏洞对应服务等. [x] 导出不同端口的同一个漏洞,也就是一个端口对应一个漏 ...
- python接口自动化-重定向(Location)
一.重定向 1.重定向(redirect)就是通过各种方法将各种网络请求重新定个方向转到其它位置,从地址A跳转到地址B了. 2.重定向状态码: --301 redirect: 301 代表永久性转移( ...
- 【PyHacker编写指南】打造URL批量采集器
这节课是巡安似海PyHacker编写指南的<打造URL批量采集器> 喜欢用Python写脚本的小伙伴可以跟着一起写一写呀. 编写环境:Python2.x 00x1: 需要用到的模块如下: ...
随机推荐
- Java基础语法<六> 数组 Arrays
笔记整理 来源于<Java核心技术卷 I > <Java编程思想> 允许数组长度为0 new element[0] 数组长度为0与null不同 1. 数组拷贝 允许将一 ...
- 04、NetCore2.0下Web应用之Startup源码解析
04.NetCore2.0Web应用之Startup源码解析 通过分析Asp.Net Core 2.0的Startup部分源码,来理解插件框架的运行机制,以及掌握Startup注册的最优姿势. - ...
- [Micropython]TPYBoard v10x拼插编程实验 点亮心形点阵
一.什么是TPYBoard开发板 TPYBoard是以遵照MIT许可的MicroPython为基础,由TurnipSmart公司制作的一款MicroPython开发板,它基于STM32F405单片机, ...
- Git -> Can't start Git: git.exe
问题描述 导入别人的PyCharm项目后提示:Can't start Git:git.exe 解决办法 Git就是个类似插件,在Git的官网上注册个账号然后每次编译就会自动把程序上传到网上备份.可以方 ...
- Python模块 - configparser
configparser模块用来对配置文件进行操作 1.获取所有块 import configparser config = configparser.ConfigParser() config.re ...
- 【Swift】swift定义全局变量
swift定义全局变量非常简单哈,只要在类class上面直接定义,就是全局变量了 当需要在类里面定义一个类函数访问的变量的时候,直接在var或者let 前面加一个 static
- 直接插入排序算法:ArrayList实现和数组实现
直接插入排序算法思想: 排序区间R[1..n]: 在排序的过程中,整个排序区间被分为两个子区间: 有序区R[ 1 ... i-1 ]和无序区R[ i ... n ]: 共进行n-1趟排序,每趟排序都是 ...
- Event 发布与订阅(一)
前言 主要讲的是发布与订阅在Event中的一个简单实现用来加深理解. C #中的事件(Event)的理解: 事件具有以下属性:(From Events) 发行者确定何时引发事件:订户确定对事件作出何种 ...
- 洛谷P1397 [NOI2013]矩阵游戏
矩阵快速幂+费马小定理 矩阵也是可以跑费马小定理的,但是要注意这个: (图是盗来的QAQ) 就是说如果矩阵a[i][i]都是相等的,那么就是mod p 而不是mod p-1了 #include< ...
- 【BZOJ2241】【Sdoi2011R1D1】打地鼠
原题传送门 Description 打地鼠是这样的一个游戏:地面上有一些地鼠洞,地鼠们会不时从洞里探出头来很短时间后又缩回洞中.玩家的目标是在地鼠伸出头时,用锤子砸其头部,砸到的地鼠越多分数也就越高. ...