ITPub博客

首页 > IT职业 > IT职场 > 点击劫持漏洞之理解 python打造一个挖掘点击劫持漏洞的脚本

点击劫持漏洞之理解 python打造一个挖掘点击劫持漏洞的脚本

IT职场 作者:ahcow 时间:2021-09-09 09:16:41 0 删除 编辑

前言:

放假了,上个星期刚刚学习完点击劫持漏洞。没来的及写笔记,今天放学总结了一下

并写了一个检测点击劫持的脚本。点击劫持脚本说一下哈。= =原本是打算把网站源码

中的js也爬出来将一些防御的代码匹配一下。可惜,爬出来的js链接乱的一匹。弄了很久

也很乱。所以就没有匹配js文件了。

 

漏洞介绍:

漏洞名称:点击劫持漏洞(Clicking hijacking)

级别:中级

漏洞用于场景:钓鱼,欺骗。

《黑客攻防之浏览器篇》里有详细的利用教程。

里面所介绍的工具做出来的payload能以假乱真

攻击手法:在一个页面的中嵌入一个iframe标签,放入诱惑信息,引诱用户点击

 

漏洞复现:

index.html

图片描述


  后台管理员添加
  
  

管理员添加

  
    
      

      
         

图片描述

 

图片描述

 

payload

将opacity设置为0.3可以看见你所填的

图片描述


  点击劫持
  
  
    

靓丽美女账号注册

  
        
     
     

图片描述

图片描述

加上背景

图片描述

 

漏洞防御:

1.加入js脚本防御

目前最好的js的防御方案为:

图片描述

图片描述

2.添加X-FRAME-OPTIONS头进行防御

X-FRAME-OPTIONS头是微软开发的,使用该头后禁止页面被iframe嵌套

 

防御结果

将index.html改为index.php,代码改为

X-FRAME-OPTIONS头使用说明:1.DENY  拒绝任何域加载2.SAMEORIHIN  同源下可以加载3.ALLOW-FROM 可以定义允许frame加载的页面

 

图片描述


  后台管理员添加
  
  

管理员添加

  
    
      

      
         

图片描述

将payload.html的opacity设置为0.3

图片描述

图片描述

 

 可以看到已经嵌套不了了。

 

检测是否有点击劫持漏洞的脚本

原理直接判断是否有X-FROM-OPTIONS头。如果没有就有点击劫持漏洞

并提醒使用者可能有js脚本防御请自行测试。

代码:

图片描述

import requests,tqdm,time,optparsedef 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()

图片描述

测试结果

图片描述

原文出处

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/3663/viewspace-2801672/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2019-08-30

  • 博文量
    90
  • 访问量
    948