利用python编写简易POC脚本

这篇具有很好参考价值的文章主要介绍了利用python编写简易POC脚本。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

POC:概念证明,即概念验证(英语:Proof of concept,简称POC)是对某些想法的一个较短而不完整的实现,以证明其可行性,示范其原理,其目的是为了验证一些概念或理论。 

声明:请勿利用文章内的相关技术从事非法测试,如因此产生的一切不良后果与文章作者和本博客无关。

        今天本来在手刷漏洞(太菜了,0day挖不出来,只能捡漏一下大佬挖过的),用Fofa API调用的脚本搜集一下最近刚了解到的网络设备漏洞的网站信息,导出后发现大概600多条。太多了,手刷有点慢,到网上找了一下也没有发现此类POC利用的脚本,想了想不如自己写一个简易的方便以后操作,编写完成后想着与大家分享一下编写思路。(Fofa API调用脚本网上有很多大佬写好的,大家可以自行找一下)

编写思路

第1步:找爬虫代码

随便找了一个爬虫代码

import urllib.request
url = ""                               #请求的URL地址
user_agent = "Mozilla/5.0 (Windows NT 5.1; rv:5.0) Gecko/20100101 Firefox/5.0"
headers = {"User-Agent":user_agent}    #定义了一个名为"user_agent"的变量,其中存储了一个用户代理(User-Agent)字符串,用来伪装成Mozilla Firefox浏览器
req = urllib.request.Request(url,headers = headers) #创建一个Request对象
response = urllib.request.urlopen(req)              #发送请求并获得响应
html = response.read()                              #读取响应内容复制给html
print(html)                                         #打印html

第2步:更改输出信息

改一下输出,当成功访问时,输出网站地址;如果发生异常,则会打印异常信息

import urllib.request

url = ""                       #请求的URL地址
user_agent = "Mozilla/5.0 (Windows NT 5.1; rv:5.0) Gecko/20100101 Firefox/5.0"
headers = {"User-Agent": user_agent}
req = urllib.request.Request(url, headers=headers)

try:
    urllib.request.urlopen(req)
    print("成功访问:"+url)    #访问成功则打印 请求的URL
except Exception as e:
    print(e)                  #访问失败则打印 异常信息

第3步:SSL证书验证报错

 当访问 https 协议网页是发生了报错:

<urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: self signed certificate (_ssl.c:1002)>

这个错误是由于SSL证书验证失败引起的。在使用 urllib.request.urlopen() 函数发送HTTPS请求时,会对服务器的SSL证书进行验证,以确保连接的安全性。

更改代码直接忽略SSL证书验证(这样做会降低连接的安全性,需要谨慎使用)

import urllib.request
import ssl
url = ""                    #请求的URL地址
user_agent = "Mozilla/5.0 (Windows NT 5.1; rv:5.0) Gecko/20100101 Firefox/5.0"
headers = {"User-Agent":user_agent}
req = urllib.request.Request(url,headers = headers)
context = ssl._create_unverified_context()
try:
    urllib.request.urlopen(req, context=context)
    print("成功访问:"+ url)
except Exception as e:
    print(e)

第4步:读取文件中的URL

因为此时还是需要手动向代码内添加请求URL,所以我们利用循环语句读取文件内的URL来进行判断(代码中文件名为 urls.txt ,可以根据需要自己更改)

import urllib.request
import ssl

user_agent = "Mozilla/5.0 (Windows NT 5.1; rv:5.0) Gecko/20100101 Firefox/5.0"
headers = {"User-Agent": user_agent}
context = ssl._create_unverified_context()

# 从txt文件中读取url列表
with open("urls.txt", "r") as file:
    urls = file.readlines()

# 使用for循环遍历url列表
for url in urls:
    url = url.strip()  # 去除每行url中的换行符和空白字符
    req = urllib.request.Request(url, headers=headers)
    try:
        urllib.request.urlopen(req, context=context)
        print("成功访问:" + url)
    except Exception as e:
        print(e)

第5步:文件目录和参数信息可控

在利用漏洞进行测试时,我们需要根据不同的漏洞自行输入不同的 文件目录 和 参数信息,所以我们需要可控的函数进行传参(parsed_url[2]和parsed_url[4]分别为文件目录和参数信息传参位置

urlparse() 函数是Python标准库中 urllib.parse 模块提供的一个函数,用于解析URL字符串并返回一个包含URL各个部分的命名元组。

        URL(Uniform Resource Locator)是用于标识互联网上资源位置的字符串。例如,https://example.com/index.html 就是一个URL。它由多个部分组成,包括协议(scheme)、网络位置(netloc)、路径(path)、查询参数(query)、片段(fragment)等。

quote() 函数是Python标准库中 urllib.parse 模块提供的一个函数,用于将字符串进行URL编码。该函数将字符串中的特殊字符转换为它们的十六进制表示,以便它们可以安全地在URL中传输。

import urllib.request
import ssl
from urllib.parse import urlparse, quote

user_agent = "Mozilla/5.0 (Windows NT 5.1; rv:5.0) Gecko/20100101 Firefox/5.0"
headers = {"User-Agent": user_agent}
context = ssl._create_unverified_context()

# 从txt文件中读取url列表
with open("1.txt", "r") as file:
    urls = file.readlines()

# 使用for循环遍历url列表
for url in urls:
    url = url.strip()  # 去除每行url中的换行符和空白字符
    parsed_url = list(urlparse(url))  # 将元组对象转换成列表
    parsed_url[2] += ""  # 将字符串添加到path属性上
    parsed_url[4] = ""  # 修改查询参数部分的值
    encoded_path = quote(parsed_url[2])  # 对路径部分进行编码
    encoded_query = quote(parsed_url[4])  # 对查询参数部分进行编码
    final_url = f"{parsed_url[0]}://{parsed_url[1]}{encoded_path}?{encoded_query}"  # 拼接编码后的URL
    req = urllib.request.Request(final_url, headers=headers)
    try:
        urllib.request.urlopen(req, context=context)
        print("成功访问:" + final_url)
    except Exception as e:
        print(e)

第6步:自动添加协议头

        在运行过程中产生了报错(因为报错涉及隐私信息就不做展示了),此错误是因为在创建 urllib.request.Request 对象时,报告了一个位置的URL类型。通过对错误信息查看发现缺少了协议部分,这是由于URL字符串格式不正确导致的,查看后发现导出到 txt 文件中的网站信息存在部分没有协议。

对url进行判断,如果有用协议部分,自动添加http协议头

import urllib.request
import ssl
from urllib.parse import urlparse, quote

user_agent = "Mozilla/5.0 (Windows NT 5.1; rv:5.0) Gecko/20100101 Firefox/5.0"
headers = {"User-Agent": user_agent}
context = ssl._create_unverified_context()

# 从txt文件中读取url列表
with open("1.txt", "r") as file:
    urls = file.readlines()

# 使用for循环遍历url列表
for url in urls:
    url = url.strip()  # 去除每行url中的换行符和空白字符
    parsed_url = list(urlparse(url))  # 将元组对象转换成列表
    if not parsed_url[0]:  # 如果协议部分为空字符串,则手动添加默认协议
        parsed_url[0] = "http"
    parsed_url[2] += ""  # 将字符串添加到path属性上
    parsed_url[4] = ""  # 修改查询参数部分的值
    encoded_path = quote(parsed_url[2])  # 对路径部分进行编码
    encoded_query = quote(parsed_url[4])  # 对查询参数部分进行编码
    final_url = f"{parsed_url[0]}://{parsed_url[1]}{encoded_path}?{encoded_query}"  # 拼接编码后的URL
    req = urllib.request.Request(final_url, headers=headers)
    try:
        urllib.request.urlopen(req, context=context)
        print("成功访问:" + final_url)
    except Exception as e:
        print(e)

        此时一个网络设备漏洞利用的简易POC就编写完成了,parsed_url[2]和parsed_url[4]分别为文件目录和参数信息传参位置文章来源地址https://www.toymoban.com/news/detail-831594.html

到了这里,关于利用python编写简易POC脚本的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • CVE-2022-30190分析以及复现和POC利用 //Microsoft Office MSDT 远程代码执行漏洞

    在微软官方的介绍里,是从 Word 等调用应用程序使用 URL 协议调用 MSDT 时存在远程执行代码漏洞。成功利用此漏洞的攻击者可以使用调用应用程序的权限运行任意代码。 意思是恶意 Word 文档可以使用远程模板功能从远程服务器获取 HTML 文件,并且 HTML 代码可以使用 Microsoft 的

    2024年02月04日
    浏览(70)
  • Full-Scanner是一个多功能扫描工具,支持被动/主动信息收集,漏洞扫描工具联动,可导入POC和EXP

    github项目地址:https://github.com/Zhao-sai-sai/Full-Scanner gitee项目地址:https://gitee.com/wZass/Full-Scanner 做挖漏洞渗透测试有的时候要去用这个工具那个工具去找感觉麻烦我自己就写了一个简单的整合工具,有互联网大佬不要喷我,我也是废物 Full-Scanner是一个多功能扫描工具,支持被动

    2024年02月06日
    浏览(50)
  • 红队版goby-poc,包含447个自定义goby-poc

    下载地址:https://github.com/MY0723/goby-poc 下载有用的话给GitHub点个关注➕star谢谢喽🍖!! 包含447个自定义goby-poc,可能会有个别重复自行判断,来源于网络收集的GobyPOC,实时更新。 如果无红队版,可直接poc管理处导入自定义poc即可,共计745个。 本程序仅供于学习交流,请使用者遵

    2024年02月11日
    浏览(37)
  • POC_Jenkins

    Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件项目可以进行持续集成,Jenkins用Java语言编写,可在Tomcat等流行的servlet容器中运行,也可独立运行。通常与版本管理工具(SCM)、构建工具结合

    2024年02月06日
    浏览(35)
  • 漏洞检测之POC的学习

    最近刚接触POC,浅浅记录一下吧(持续更新) 根据个人理解以及网上的相关资料整合,POC是一段不完整的、用于检验目标主机是否存在相应漏洞的代码程序,它具备随机性——参数随机(有时候可以不随机)、通用性——要对一样组件的网站都成立,不能是针对个别网站、确定

    2024年02月11日
    浏览(41)
  • ChatGPT写POC,拿下漏洞!

    ChatGPT(Chat Generative Pre-trained Transformer)是当今备受瞩目的智能AI聊天机器人之一。它不仅能够实现基本的语言交流,还具备许多强大的功能,例如文章撰写、代码脚本编写、翻译等等。那么我们是否可以利用 ChatGpt 去辅助我们完成一些工作呢?比如当一个产品存在安全风险需

    2023年04月22日
    浏览(42)
  • 利用Python编写一个AI脚本自动控制2048网页小游戏

    本文将使用python+selenium自动控制游戏运行。当然采用的是伪随机数进行键盘控制。只作为一个抛砖迎玉的参考,不涉及专业算法。 – pip install win32gui pip install PyUserInput pip install PyKeyboard pip install selenium(注意要配合相应的webdriver驱动使用,webdriver的安装下载请自行到网上搜索学

    2023年04月08日
    浏览(50)
  • Apache POC(对Excel文件操作)

    Apache POI 是一个处理Miscrosoft Office各种文件格式的开源项目,我们可以使用POI在java程序中对Miscrosoft Office各种文件进行读写操作 一般情况下,POI都是用于操作Excel文件。 Test读取测试

    2024年02月07日
    浏览(36)
  • 致远OA文件上传漏洞(含批量检测POC)

    文章内容仅供学习参考请勿用于非法用途 漏洞描述 漏洞影响 致远OA A6、A8、A8N (V8.0SP2,V8.1,V8.1SP1) 致远OA G6、G6N (V8.1、V8.1SP1) 网络测绘 app=“致远互联-OA” title=“V8.0SP2” 批量检测POC 漏洞描述 致远OA是一套办公协同管理软件。近日,奇安信CERT监测到致远OA的相关漏洞信息。由

    2024年02月08日
    浏览(47)
  • 2023-05-25 最近的一个客户POC的反思

    最近在遇到一个客户的POC的问题,其中经历诸多有意思的事情, 有必要记录一下,以作为后续创业所要避免的地方。 查询SQL中, 存在给查询到的列属性赋值的情况 给属性的赋值的数据类型,和列属性的数据类型,不匹配,比如给整形的属性赋值字符串 在所做的项目中,数据库

    2024年02月07日
    浏览(63)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包