九维团队-绿队(改进)| 基于Selenium的绕过前端js加密应用

admin 2024年11月14日22:47:58评论3 views字数 1820阅读6分4秒阅读模式

九维团队-绿队(改进)| 基于Selenium的绕过前端js加密应用

前言

Selenium 是支持 web 浏览器自动化的一系列工具和库的综合项目。它提供了扩展来模拟用户与浏览器的交互,用于扩展浏览器分配的分发服务器,以及用于实现 W3C WebDriver 规范 的基础结构,该规范允许为所有主要 Web 浏览器编写可交互的代码。

一、环境搭建

1. 安装Selenium py库

Pip3 install selenium
九维团队-绿队(改进)| 基于Selenium的绕过前端js加密应用

2. 安装浏览器驱

来到官网提供的快速参考页面下载属于自己浏览器的驱动程序:

九维团队-绿队(改进)| 基于Selenium的绕过前端js加密应用

下载之后在代码中指定驱动位置:

from selenium import webdriverfrom selenium.webdriver.chrome.service import Serviceservice = Service(executable_path="/path/to/chromedriver")driver = webdriver.Chrome()

*左右滑动查看更多

执行成功之后会弹出浏览器:

九维团队-绿队(改进)| 基于Selenium的绕过前端js加密应用

基本命令

1. 基本命令

driver = webdriver.Chrome()  #使用驱动实例开启会话driver.get()  #get请求到一个网页title = driver.title  #获取标题driver.implicitly_wait(0.5)  #建立等待策略

*左右滑动查看更多

2. 查找元素

username = driver.find_element_by_name(“username”)#通过name定位元素world = driver.find_element_by_id(“world”)  #通过id定位元素username = driver.find_element_by_xpath("/html/body/form/table/tbody/tr[2]/td[2]/input") #通过xpath定位元素

*左右滑动查看更多

3. 操作元素

username.send_keys()  #设置内容username.clear()  #清除文本内容username.click()  #点击元素

  三、具体操作

大致流程:

打开网页→查找元素设置内容点击按钮

1. 打开网页

尝试让程序打开一个网页,这里使用本地搭建的demo来测试。

driver.get("http://192.168.59.129")
九维团队-绿队(改进)| 基于Selenium的绕过前端js加密应用

2. 查找元素

username = driver.find_element_by_xpath(    "/html/body/form/table/tbody/tr[2]/td[2]/input")

*左右滑动查看更多

这里通过XPATH进行查找。

九维团队-绿队(改进)| 基于Selenium的绕过前端js加密应用

复制完整的PATH值:

九维团队-绿队(改进)| 基于Selenium的绕过前端js加密应用

3. 设置内容

找到元素之后尝试给我们的元素设置值

username.send_keys("admin")
九维团队-绿队(改进)| 基于Selenium的绕过前端js加密应用

4. 点击按钮

button.click()
九维团队-绿队(改进)| 基于Selenium的绕过前端js加密应用

5. 循环读取

使用for循环读取文本里的值:

九维团队-绿队(改进)| 基于Selenium的绕过前端js加密应用

6. 绕过前端js加密(无验证码)

使用上面学到的基本命令就可以组成我们完整的代码,绕过前端js加密模拟浏览器对登录框进行测试。

九维团队-绿队(改进)| 基于Selenium的绕过前端js加密应用

7. 配合验证码识别绕过前端js加密

要实现验证码识别,首先需要将验证码保存,之后利用ddddorc进行识别。

对于动态验证码的保存可以使用selenium中的screenshot方法,网上也存在着通过xpath获取元素并存储图片的方法。

7.1 存储图片

capcha = driver.find_element_by_xpath("/html/body/form/table/tbody/tr[4]/td[2]/img")capcha.screenshot("capcha.png")

*左右滑动查看更多

7.2 识别图片

ocr = ddddocr.DdddOcr()with open("capcha.png", "rb") as f:    image = f.read()    res = ocr.classification(image)    print(res)
九维团队-绿队(改进)| 基于Selenium的绕过前端js加密应用

7.3 配合验证码识别绕过js加密

九维团队-绿队(改进)| 基于Selenium的绕过前端js加密应用

  四、防御建议

1、限制请求速率:通过限制每个 IP 地址或用户在特定时间段内的请求速率,可以有效地减缓自动化攻击。

2、用户行为分析:监控用户在网站上的行为,如果发现异常或机器人式的行为模式,可以采取相应的措施,例如限制访问或要求验证。

3、隐藏或混淆元素:对关键表单元素和按钮进行混淆或隐藏,使自动化脚本难以定位和操作。这可以通过使用随机生成的元素ID、类名或内联样式来实现。

原文始发于微信公众号(安恒信息安全服务):九维团队-绿队(改进)| 基于Selenium的绕过前端js加密应用

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年11月14日22:47:58
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   九维团队-绿队(改进)| 基于Selenium的绕过前端js加密应用https://cn-sec.com/archives/1637044.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息