• python3 实现多域名批量访问特定目录(一)


    渗透测试之批量处理同一框架CMS系统漏洞

    当我们做多网站的渗透测试时,会发现很多站点采用的都是同类型的CMS框架,只要我们发现一个漏洞,那么我们可以批量处理这一类站点,高效测试,如果不知道该站点的框架时,也可以使用此脚本盲测。

    具体实现代码如下

    import time
    import requests
    import asyncio
    import aiohttp
    
    def open_file(file_name,status,url=None):   #打开检测的文件
        with open(file_name ,status) as f:
            if status == "r":
                url_list = f.readlines()
                return url_list
            else:
                f.write(url)
                f.write("
    ")
    # print(url_list)
    def deal_url(url_list):   #拼接特定目录
        deal_url = []
        for url in url_list:
            url = url.strip()
            url += "/www.rar"    #输入检测的特定目录
            deal_url.append(url)
        return deal_url
    
    async  def request_url(url):   #发起请求
        headers = {
            "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8",
            "Accept-Encoding": "gzip, deflate, br",
            "Accept-Language": "zh-CN,zh;q=0.9",
            "Cache-Control": "max-age=0",
            "Connection": "keep-alive",
            "Upgrade-Insecure-Requests": "1",
            "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.181 Safari/537.36"
        }    
        print(url)
        try:
            async with aiohttp.ClientSession() as session:
                async with session.get("http://" + url, headers=headers) as resp1:  ###aiohttp模块中ClientSession方法,这两句方法最稳妥,也有session=aiohttp.ClientSession(),resp=session.get(item['image_url']),但是可能会报错,如果不报错,可以使用这种方法,报错就使用上面的代码
                    if resp1.status == 200:
                        open_file("test_V.txt", "a", url)
                async with session.get("https://" + url, headers=headers) as resp2:  ###aiohttp模块中ClientSession方法,这两句方法最稳妥,也有session=aiohttp.ClientSession(),resp=session.get(item['image_url']),但是可能会报错,如果不报错,可以使用这种方法,报错就使用上面的代码
                    if resp2.status == 200:
                        open_file("test_V.txt", "a", url)  
        except Exception as e:
            print(e)
    
    def main():
        url_list = open_file("test.txt","r")   #待检测的域名文件
        tasks = [asyncio.ensure_future(request_url(url)) for url in deal_url(url_list)]  # 开启协程多任务队列,该语句是列表推导式,列表的简写,与上面两句等效,但是该句是利用协程,多个队列一起进行
        loop = asyncio.get_event_loop()
        loop.run_until_complete(asyncio.wait(tasks))  # 将任务注册到事件循环,并启动任务
    
    if __name__ == '__main__':
        s = time.time()
        main()
        print(time.time() - s)
    
    

    小结:这个异步执行,时间还不是很快,后期学习了其它方法,进一步完善。

  • 相关阅读:
    WordPress搭建的新博客 www.douzujun.club
    调用weka模拟实现 “主动学习“ 算法
    危险!80% 用户正在考虑放弃 Oracle JDK…
    最新!Dubbo 远程代码执行漏洞通告,速度升级
    Tomcat 又爆出高危漏洞!!Tomcat 8.5 ~10 中招…
    Spring Boot 启动,1 秒搞定!
    为什么要重写 hashcode 和 equals 方法?
    详解 Java 中 4 种 IO 模型
    详解GaussDB bufferpool缓存策略,这次彻底懂了!
    【API进阶之路6】一个技术盲点,差点让整个项目翻车
  • 原文地址:https://www.cnblogs.com/dddjh/p/10686147.html
Copyright © 2020-2023  润新知