基于Python:XSS漏洞检测脚本

门柚
富仁木制品有限公司官方帐号
2023-01-19 20:11:37
加精

前言:编写XSS漏洞测试脚本的最主要思路是,如何检测页面的弹窗呢?方法是多种多样的,本文利用的是selenium模块来检测页面是否有弹窗,从而判断页面是否存在XSS漏洞。

知识点:

  1. selenium模块的使用
  2. XSS漏洞原理和攻击方法
  3. pikachu靶场

 

源代码:

方法一:

直接在url上面注入测试脚本(该脚本开启了无界面访问):

from selenium import webdriver
import time
import traceback

# 开启无界面访问
options = webdriver.ChromeOptions()  # 创建一个配置对象
options.add_argument("--headless")  # 开启无界面模式
options.add_argument("--disable-gpu")  # 禁用gpu
# options.set_headles() # 无界面模式的另外一种开启方式
driver = webdriver.Chrome(chrome_options=options)  # 实例化带有配置的driver对象
url = "http://192.168.1.6/pikachu-master/vul/xss/xss_reflected_get.php?message=%3Cscript%3Ealert(%27xss%20exits%EF%BC%81%27)%3C/script%3E&submit=submit"
driver.get(url)
try:
    time.sleep(3)
    driver.switch_to.alert.accept()
    print("存在XSS漏洞!")
except:
    print("没有XSS漏洞!")
    traceback.print_exc()
finally:
    print("检测结束!")
driver.quit()

 方法二:

直接在页面进行定位注入(该脚本开启了无界面访问):

from selenium import webdriver
from selenium.webdriver.common.by import By
import traceback

# 开启无界面访问
options = webdriver.ChromeOptions()  # 创建一个配置对象
options.add_argument("--headless")  # 开启无界面模式
options.add_argument("--disable-gpu")  # 禁用gpu
# options.set_headles() # 无界面模式的另外一种开启方式
driver = webdriver.Chrome(chrome_options=options)  # 实例化带有配置的driver对象

url = "http://192.168.1.6/pikachu-master/vul/xss/xss_reflected_get.php"
driver.get(url)
driver.find_element(by=By.NAME, value="message").send_keys("<script>alert('存在XSS漏洞!')</script>")  
driver.find_element(by=By.NAME, value="submit").click()
try:  # 判断是否有弹窗
    driver.switch_to.alert.accept()
    print("存在XSS漏洞!")
except:
    traceback.print_exc()
    print("不存在XSS漏洞!")
finally:
    print("运行结束!")

driver.quit()

结果分析

运行结果:

1668866199_6378e097dddc8a80f6864.png!small?1668866200884

这个测试脚本还是很简单的,没有什么技术含量。到时候有空的话,就写一个加强版的XSS测试脚本,完善一下这个代码,使其功能更加强大。

另外,我个人感觉该脚本美中不足的地方是在selenium模块上,当然不是说selenium模块不好(selenium的定位注入非常方便),而是说要使用该脚本,则必须要提前安装selenium模块的驱动,这样子就显得特别麻烦,从而大大降低脚本的方便性。

...全文
294 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
Darsome 03-18
  • 打赏
  • 举报
回复

webdriver.Chrome(chrome_options=options)这里报错TypeError: init() got an unexpected keyword argument 'chrome_options'

5

社区成员

发帖
与我相关
我的任务
社区描述
dawn安全技术交流社区,欢迎您的加入!
web安全网络安全运维 技术论坛(原bbs) 广东省·东莞市
社区管理员
  • 门柚
  • .Kolay
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

欢迎加入dawn安全技术交流社区!

试试用AI创作助手写篇文章吧