点击劫持漏洞之理解 python打造一个挖掘点击劫持漏洞的脚本
前言:
放假了,上个星期刚刚学习完点击劫持漏洞。没来的及写笔记,今天放学总结了一下
并写了一个检测点击劫持的脚本。点击劫持脚本说一下哈。= =原本是打算把网站源码
中的js也爬出来将一些防御的代码匹配一下。可惜,爬出来的js链接乱的一匹。弄了很久
也很乱。所以就没有匹配js文件了。
漏洞介绍:
漏洞名称:点击劫持漏洞(Clicking hijacking)
级别:中级
漏洞用于场景:钓鱼,欺骗。
《黑客攻防之浏览器篇》里有详细的利用教程。
里面所介绍的工具做出来的payload能以假乱真
攻击手法:在一个页面的中嵌入一个iframe标签,放入诱惑信息,引诱用户点击
漏洞复现:
index.html
<html>
<head>
<title>后台管理员添加</title>
<style>
body{ background-repeat: no-repeat;background-size: 100% 100%;background-attachment: fixed;}
h2{ color:blue;text-align: center;}
</style>
</head>
<body background="bei.jpg">
<h2>管理员添加</h2>
<div style="text-align:center;">
<form action="x.php" method="POST">
<input type="text" required><br><br>
<input type="password" required><br>
<input type="submit" value="提交">
</div>
</body>
</html>
payload
将opacity设置为0.3可以看见你所填的
<html>
<head>
<title>点击劫持</title>
<style>
iframe{ position: absolute;z-index: 2;top: 0px;left: 0px;width: 1800px;height: 900px;opacity: 0;filter: alpha(opacity=0);}
button{ position: absolute;z-index: 1;top: 125px;left: 878px;}
input{ position: absolute;z-index: 1;top: 65px;left: 820px;}
body{ background-repeat:no-repeat;}
</style>
</head>
<body>
<div style="text-align:center">
<h2>靓丽美女账号注册</h2>
</div>
<input type="text">
<div style="position: absolute;z-index: 1;top: 43px;left: 5px;">
<input type="text">
</div>
<button>注册</button>
<iframe src="http://127.0.0.1/jiechi/index.html"></iframe>
</body>
</html>
加上背景
漏洞防御:
1.加入js脚本防御
目前最好的js的防御方案为:
<head>
<style>
body { display : none;}
</style>
</head>
<body>
<script>
if (self == top) {
var theBody = document.getElementsByTagName('body')[0];
theBody.style.display = "block";
}
else
{
top.location = self.location;
}
</script>
2.添加X-FRAME-OPTIONS头进行防御
X-FRAME-OPTIONS头是微软开发的,使用该头后禁止页面被iframe嵌套
防御结果
将index.html改为index.php,代码改为
X-FRAME-OPTIONS头使用说明:
1.DENY 拒绝任何域加载
2.SAMEORIHIN 同源下可以加载
3.ALLOW-FROM 可以定义允许frame加载的页面
<?php
header ( "X-FRAME-OPTIONS:DENY");
?>
<html>
<head>
<title>后台管理员添加</title>
<style>
body{ background-repeat: no-repeat;background-size: 100% 100%;background-attachment: fixed;}
h2{ color:blue;text-align: center;}
</style>
</head>
<body background="bei.jpg">
<h2>管理员添加</h2>
<div style="text-align:center;">
<form action="x.php" method="POST">
<input type="text" required><br><br>
<input type="password" required><br>
<input type="submit" value="提交">
</div>
</body>
</html>
将payload.html的opacity设置为0.3
可以看到已经嵌套不了了。
检测是否有点击劫持漏洞的脚本
原理直接判断是否有X-FROM-OPTIONS头。如果没有就有点击劫持漏洞
并提醒使用者可能有js脚本防御请自行测试。
代码:
import requests,tqdm,time,optparse
def main():
usage='dianjijieci.py [-u url]'
parser=optparse.OptionParser(usage)
parser.add_option('-u',dest='url',help='The web site to be tested URL')
(options,args)=parser.parse_args()
if options.url:
url=options.url
jiechi(url)
else:
parser.print_help()
def jiechi(url):
urls="{}".format(url)
headers={'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36'}
reqst=requests.get(url=urls,headers=headers,timeout=6)
if reqst.status_code == 200:
print('[+]Target stability')
try:
hea=reqst.headers
print(hea['X-FRAME-OPTIONS'])
print('[n]X-FRAME-OPTIONS header, no click hijacking vulnerability can be used')
except:
print('[+]There is no X-FRAME-OPTIONS header. There is a clicking hijacking vulnerability')
print('[!]Remind:It may be a defense against JS. Please test it yourself')
else:
print('[n]bjective instability') if __name__ == '__main__':
main()
测试结果
点击劫持漏洞之理解 python打造一个挖掘点击劫持漏洞的脚本的更多相关文章
- python打造一个分析网站SQL注入的脚本
前言: 昨天晚上其实就已经写完代码.只不过向FB投稿了,打算延迟一晚上在写博客 所有才到今天早上写.好了,接下来进入正题. 思路: 1.从网站源码中爬取那些类适于:http://xxx.com/xx. ...
- phantomjs + python 打造一个微信机器人
phantomjs + python 打造一个微信机器人 1.前奏 媳妇公司不能上网,但经常需要在公众号上找一些文章做一些参考,需要的时候就把文章链接分享给我,然后我在浏览器打开网页,一点点复制过 ...
- python 打造一个sql注入脚本 (一)
0x00前言: 昨天刚刚看完小迪老师的sql注入篇的第一章 所以有了新的笔记. 0x01笔记: sql注入原理: 网站数据传输中,接受变量传递的值未进行过滤,导致直接带入数据库查询执行的操作. sql ...
- python打造一个Mysql数字类型注入脚本(1)
前言: 总是想写一个sql注入脚本,但是之前的那些都不行. 这次做好了准备,然后嘿嘿嘿. 准备: sql注入的基础知识 熟悉怎么判断 正文: 思路概念图: 这里我没有限制用户输入,不限制的话可能会 @ ...
- Python打造一个目录扫描工具
目标:用Python3写一款小型的web目录扫描工具 功能:1.扫描指定站点 2.指定网站脚本类型来扫描 3.可控线程 4.可保存扫描结果 首先定义一个命令参数的函数 def parse_option ...
- python写一个信息收集四大件的脚本
0x0前言: 带来一首小歌: 之前看了小迪老师讲的课,仔细做了些笔记 然后打算将其写成一个脚本. 0x01准备: requests模块 socket模块 optparser模块 time模块 0x02 ...
- 10分钟教你用Python打造微信天气预报机器人
01 前言 最近武汉的天气越来越恶劣了.动不动就下雨,所以,拥有一款好的天气预报工具,对于我们大学生来说,还真是挺重要的了.好了,自己动手,丰衣足食,我们来用Python打造一个天气预报的微信机器人吧 ...
- 第11章:使用Python打造MySQL专家系统
1.Python语言高级特性 1).深入浅出Python生成器 1).生成器函数:与普通函数定义类似,使用yield语句而不是return语句返回结果.yield语句一次返回一个结果,在每个结果中间挂 ...
- URL重定向漏洞,python打造URL重定向漏洞检测脚本
前言: 今天学习了重定向漏洞,这个漏洞比较好理解 漏洞名:URL重定向漏洞 威胁:低 漏洞的来源:开发者对head头做好对应的过滤和限制 例子: 有漏洞的网站:http://a.com/x.php?u ...
随机推荐
- android布局##TableLayout和FrameLayout-android学习之旅(十五)
TableLayout 表格布局 tablelayout简介 表格布局有TableLayout代表,但是它的本质定义仍然是线性管理器.表格布局采用行和列来管理UI,但是不需要明确的定义多少行,多少列, ...
- Oracle中使用游标转换数据表中指定字段内容格式(拼音转数字)
应用场景:将数据表TB_USER中字段NNDP的内容中为[sannanyinv]转换为[3男1女] 主要脚本:一个游标脚本+分割字符串函数+拼音转数字脚本 操作步骤如下: 1.创建类型 create ...
- [java面试]javascript中dom取值问题radio名字一样归属于同一个组,求点击的是哪一个
题目描述: 看如下的html文件,里面定义了一些radio类型的元素,请完成parse()函数的内容,要求能够弹出对话框提示当前选中的是第几个单选框. </pre><pre code ...
- python使用h5py读取mat文件数据,并保存图像
1 安装h5py sudo apt-get install libhdf5-dev sudo pip install h5py 假设你已经安装好python和numpy模块 2 读取mat文件数据 i ...
- [Mac] mac linux 多线程下载利器 axel
> 之前做过一些文件下载的统计,发现谷歌浏览器chrome和火狐firefox, 一般都是单线程的下载文件,360浏览器却是多线程的下载. 现在切换到了mac上,发现没有360哪个浏览器,就像 ...
- Andoird Crash的跟踪方法,使用腾讯Bugly来捕捉一些疑难杂症,让我们APP稳定上线
Andoird Crash的跟踪方法,使用腾讯Bugly来捕捉一些疑难杂症,让我们APP稳定上线 我们在开发中常常会注意到一些Crash,这正是很头疼的,而且Crash会带来很多意想不到的状态,很恶心 ...
- Gradle 1.12 翻译——第十五章. 任务详述
有关其他已翻译的章节请关注Github上的项目:https://github.com/msdx/gradledoc/tree/1.12,或访问:http://gradledoc.qiniudn.com ...
- ROS_Kinetic_08 ROS的集成开发环境(IDEs)之使用Eclipse
ROS_Kinetic_08 ROS的集成开发环境(IDEs)之使用Eclipse ROS支持的IDEs比较丰富,这里以Eclipse为例介绍一下. 具体内容参考:http://wiki.ros.or ...
- OJ题:成绩排序
题目描述 查找和排序 题目:输入任意(用户,成绩)序列,可以获得成绩从高到低或从低到高的排列,相同成绩 都按先录入排列在前的规则处理. 例示: jack 70 peter 96 Tom 70 smit ...
- H5学习之旅-H5的基本标签(2)
H5的标签和html的标签没什么区别,主要介绍H5的基本标签 1.基础标签header和body,header的<title>元素主要是显示在标签页面里面,以及设置使用的语言和编码格式.b ...