python漏洞检测脚本_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重定向的漏洞脚的本代码:

importrequests,timedefpoc():

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]=valueprint('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':whileTrue: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 == '':breakurl=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

第二种我不喜欢,其他都还好

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/350204.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Pytorch cifar100离线加载二进制文件

说明:直接加载cifar100二进制文件到Pytorch 直接加载文件到pytorchmetatesttrain import os import cv2 import pickle import time import numpy as np import matplotlib.pyplot as pltimport torchvision from torch.autograd import Variable import torch.uti…

为单个Web应用程序配置多个上下文根– JBoss

有时&#xff0c;我们通过在jboss-web.xm l中定义一个来对应用程序进行更改&#xff0c;以支持利用JBoss功能的多个上下文根&#xff0c;如下所示&#xff1a; webapp / WEB-INF / jboss-web.xml&#xff1a; <?xml version"1.0" encoding"UTF-8"?&…

手动升级ubuntu 18.04内核从4.15.0-45-generic到4.15.0-52-generic

1 从下面官网下载相应的包&#xff0c;共3个。 https://kernel.ubuntu.com/~kernel-ppa/mainline/v4.15-rc9/ linux-headers-4.15.0-041500rc9-generic_4.15.0-041500rc9.201801212130_amd64.deb linux-headers-4.15.0-041500rc9_4.15.0-041500rc9.201801212130_all.deb linux-…

cmd52命令发送 mmc_乾坤合一~Linux SD/MMC/SDIO驱动分析(上)

一、SD/MMC/SDIO概念区分SD(SecureDigital)与 MMC(MultimediaCard)SD 是一种 flash memory card 的标准&#xff0c;也就是一般常见的 SD 记忆卡&#xff0c;而 MMC 则是较早的一种记忆卡标准&#xff0c;目前已经被 SD 标准所取代。在维基百科上有相当详细的 SD/MMC 规格说明&…

Pytorch MNIST直接离线加载二进制文件到pytorch

说明&#xff1a;MNIST直接离线加载二进制文件到pytorch 直接以下4个文件读入数据到pytorch中t10k-images-idx3-ubyte.gzt10k-labels-idx1-ubyte.gztrain-images-idx3-ubyte.gztrain-labels-idx1-ubyte.gz import os import numpy as np import gzipimport torch.utils.data a…

爱与愁的心痛

爱与愁的心痛 题目链接 题意 这道题的题意是&#xff0c;给定一个整数数组&#xff0c;数组中的每个元素代表一个不爽的事情的刺痛值。现在需要找出连续m个刺痛值的和的最小值。 思路 读取输入和初始化遍历数组并计算窗口和输出最小和 坑点 数组越界重复计算窗口和 算法一&am…

begintrans返回值_SQL事务回滚 ADO BeginTrans, CommitTran 以及 RollbackTrans 方法

定义和用法这三个方法与 Connection 对象使用&#xff0c;来保存或取消对数据源所做的更改。注释&#xff1a;并非所有提供者都支持事务。注释&#xff1a;BeginTrans、CommitTrans 和 RollbackTrans 方法在客户端 Connection 对象上无效。那客户端不能支持事务? 这是什么意思…

Pytorch Fashion_MNIST直接离线加载二进制文件到pytorch

说明&#xff1a;Fashion_MNIST直接离线加载二进制文件到pytorch 将4个gz直接加载到pytoch用来训练t10k-images-idx3-ubyte.gzt10k-labels-idx1-ubyte.gztrain-images-idx3-ubyte.gztrain-labels-idx1-ubyte.gz import os import numpy as np import gzip import matplotlib.p…

jQuery选择器种类整理

选择器概念 jQuery选择器是通过标签、属性或者内容对HTML内容进行选择&#xff0c;选择器运行对HTML元素组或者单个元素进行操作。 jQuery选择器使用$符号&#xff0c;等同于jquery&#xff0c;例如&#xff1a; $(“li”) jquery(“li”) 同样等同于javascript中的&#xff1…

jee过滤器应用场景_将涡轮增压器添加到JEE Apps

jee过滤器应用场景我扮演的关键角色之一是在本地社区中传播Akka。 作为讨论的一部分&#xff0c;人们通常会想到的问题/疑问是Akka如何针对编写良好的Java / JEE应用程序提供更好的可伸缩性和并发性。 由于底层硬件/ JVM保持不变&#xff0c;因此参与者模型如何比传统的JEE应用…

mysql 列 随机数_mysql mmp 某字段插入随机数!(说不定那天就忘记了,存下来再说)...

UPDATE 表名 SET 字段名ceiling(rand()*500000500000) WHERE (条件);原文链接&#xff1a;http://blog.csdn.net/bobay/article/details/24797525MMP 上面的只能更新一条UPDATE 表名 SET 字段名cast(rand(checksum(newid()))*(24)1 as int) WHERE (条件);上面的就是每条都更新的…

适用于Java开发人员的Elasticsearch:Elasticsearch生态系统

本文是我们学院课程的一部分&#xff0c;该课程的标题为Java开发人员的Elasticsearch教程 。 在本课程中&#xff0c;我们提供了一系列教程&#xff0c;以便您可以开发自己的基于Elasticsearch的应用程序。 我们涵盖了从安装和操作到Java API集成和报告的广泛主题。 通过我们简…

matplotlib markers的类型

https://matplotlib.org/api/markers_api.html matplotlib markers 所有可能的markers定义如下: marker symbol description "." point "," pixel "o" circle "v" triangle_down "^" triangle_up &…

android实时声音信号波形_Android输出正弦波音频信号(左右声道对称)-阿里云开发者社区...

转载请说明出处&#xff01;作者&#xff1a;kqw攻城狮出处&#xff1a;个人站 | CSDN需求&#xff1a;左右声道分别输出不同的音频数据&#xff0c;波形要是一个正弦波&#xff0c;左右声道还要对称&#xff01;对硬件不是很了解&#xff0c;说是要通过音波避障。效果图之前已…

matplotlib color可选

matplotlib color matplotlib中color可用的颜色&#xff1a; cnames { aliceblue: #F0F8FF, antiquewhite: #FAEBD7, aqua: #00FFFF, aquamarine: #7FFFD4, azure: #F0FFFF, beige: #F5F5…

python之scrapy爬取jd和qq招聘信息

1、settings.py文件 # -*- coding: utf-8 -*-# Scrapy settings for jd project # # For simplicity, this file contains only settings considered important or # commonly used. You can find more settings consulting the documentation: # # https://doc.scrapy.org…

opencl 加速 c语言程序_Win10应用获得面向OpenCL和OpenGL的兼容层

今年早些时候&#xff0c;微软宣布正在努力在Windows 10的Direct3D 12(D3D12)中启用对OpenCL和OpenGL映射层的支持。为了启用映射层&#xff0c;解决设备上没有OpenCL和OpenGL硬件驱动时的兼容性问题&#xff0c;公司目前已经在微软商店中发布了兼容性包。该兼容性包的标题为 &…

matplotlib plt.subplot

matplotlib plt.subplot 用于在一个Figure对象里画多个子图(Axes)。 其调用格式&#xff1a;subplot(numRows, numCols, plotNum)&#xff0c;即&#xff08;行、列、序号&#xff09;。 图表的整个绘图区域被分成numRows行和numCols列&#xff0c;plotNum参数指定创建的Axes…

javaee和javaee_JavaEE概念简介

javaee和javaee这篇文章旨在阐明J2EE范例中使用的首字母缩写词和概念。 J2EE代表Java to Platform&#xff0c;Entreprise Edition。 它使创建模块化Java应用程序得以部署在应用程序服务器上。 它依赖于Java SE&#xff0c;Java SE是一组Java库的核心&#xff0c;所有Java应用程…

卷boot仅剩余XX空间

参见&#xff1a; https://blog.csdn.net/hnzcdy/article/details/52381844 转载于:https://www.cnblogs.com/lxc1910/p/11102528.html