mirror of
https://github.com/gelusus/wxvl.git
synced 2026-10-29 03:40:51 +00:00
漏洞扫描工具 -- SBScan、2025年值得关注的十大漏洞管理工具、27.悬于开发者和安全研究人员头顶的剑 | 一类漏洞让Visual Studio项目变得不再可信、
This commit is contained in:
1 parent
3e0e6384e9
commit
a48b224e95
4 files changed
+709
-1
No files matched your search
@@ -3012,5 +3012,8 @@
|
||||
"https://mp.weixin.qq.com/s?__biz=MzIyNzc3OTMzNw==&mid=2247485740&idx=1&sn=7322bc46dcb2087c3e62a2e5bac53951": "【工具分享】一个综合性比较强的java漏洞集合工具(集成多种实用小工具)",
|
||||
"https://mp.weixin.qq.com/s?__biz=Mzk0Mzc1MTI2Nw==&mid=2247487114&idx=1&sn=115e5afefe5e9306bda97c094ba1e09d": "某小说vip破解代码分析",
|
||||
"https://mp.weixin.qq.com/s?__biz=MzkyMjQ5ODk5OA==&mid=2247506848&idx=2&sn=4918f16f2099d34206ad07e0c67b5a25": "情报经纪人出手:惠普企业(HPE)遭黑!",
|
||||
"https://mp.weixin.qq.com/s?__biz=MzUyNTExOTY1Nw==&mid=2247527885&idx=1&sn=f3acf7878a0bae0b3cf7b7ab894461e3": "光网络时代的两大核心技术:EPON 与 GPON"
|
||||
"https://mp.weixin.qq.com/s?__biz=MzUyNTExOTY1Nw==&mid=2247527885&idx=1&sn=f3acf7878a0bae0b3cf7b7ab894461e3": "光网络时代的两大核心技术:EPON 与 GPON",
|
||||
"https://mp.weixin.qq.com/s?__biz=MzkxMzMyNzMyMA==&mid=2247569798&idx=2&sn=b3d932e186079d318198ca4e3fb47d39": "漏洞扫描工具 -- SBScan",
|
||||
"https://mp.weixin.qq.com/s?__biz=MjM5Njc3NjM4MA==&mid=2651134752&idx=2&sn=a71898ac89bc6a622d04a05f120c6232": "2025年值得关注的十大漏洞管理工具",
|
||||
"https://mp.weixin.qq.com/s?__biz=MzkwMTU2NzMwOQ==&mid=2247484514&idx=1&sn=34349f1717c6e792960e75913935ee1d": "27.悬于开发者和安全研究人员头顶的剑 | 一类漏洞让Visual Studio项目变得不再可信"
|
||||
}
|
||||
@@ -0,0 +1,267 @@
|
||||
# 2025年值得关注的十大漏洞管理工具
|
||||
安全牛 2025-01-17 09:02
|
||||
|
||||
漏洞扫描工具在现代网络安全框架中必不可少。它们不仅可以帮助组织在漏洞被利用之前识别和修复漏洞,还可以支持合规性工作,加强风险管理实践,并最终有助于建立更强大的整体安全态势。
|
||||
|
||||
**漏洞管理过程的四个基本步骤**
|
||||
|
||||
|
||||

|
||||
|
||||
|
||||
1. 识别漏洞:使用各种漏洞扫描器扫描系统、网络中的设备、数据库、虚拟机、服务器的开放端口和服务,以识别潜在的安全缺陷。
|
||||
|
||||
1. 评估漏洞:然后使用组织运行的风险评分对识别出的漏洞进行评估,并相应地关注这些漏洞。
|
||||
|
||||
1. 处理漏洞:根据优先级,使用修复、缓解和接受三种方法来处理漏洞。
|
||||
|
||||
1. 报告漏洞:报告是任何评估或过程中的重要部分。发现的漏洞需要适当记录,包括重现步骤、影响和缓解措施。
|
||||
|
||||
这其中,漏洞管理工具发挥着重要作用,可以在攻击发生之前发现并修复漏洞。漏洞管理解决方案可以增强基础设施的安全性,使用户使用更加高效,并使攻击者更难以访问。
|
||||
|
||||
以下是2025年值得关注的十大漏洞管理工具:
|
||||
|
||||
|
||||
|
||||
1
|
||||
|
||||
**Nessus**
|
||||
|
||||
**由Tenable开发的广泛使用的强大漏洞管理工具**
|
||||
|
||||
Nessus是由Tenable开发的广泛使用的漏洞管理工具,旨在帮助组织识别、优先处理和修复各种IT资产(包括网络、系统、网络应用和云环境)中的漏洞。
|
||||
|
||||
Nessus是一款备受推崇的漏洞扫描工具,由Tenable开发,广泛用于识别和解决各种IT环境中的安全漏洞。它提供全面的功能,使其成为漏洞评估和管理的可靠解决方案。
|
||||
|
||||
Nessus支持高速资产发现、配置审计、恶意软件检测和敏感数据发现。它扫描包括操作系统、网络设备、防火墙、虚拟机管理程序、数据库和网络服务器在内的广泛技术。
|
||||
|
||||
凭借超过450个预配置模板和不断更新的插件库,Nessus确保漏洞检测的准确性和效率。它还包括高级功能,如预测优先级(使用漏洞优先级评分)以帮助根据严重性和可利用性优先处理威胁。
|
||||
|
||||
该工具提供各种格式的可定制报告选项,并包括离线评估的实时结果等功能。Nessus可以部署在多个平台上,包括本地系统、云环境,甚至是像Raspberry Pi这样的便携设备。其直观的界面和分组视图简化了导航和修复工作。
|
||||
|
||||
总之,Nessus是一种具有成本效益且可扩展的漏洞管理解决方案,因其准确性、易用性和对安全威胁的全面覆盖而受到全球组织的信赖。
|
||||
|
||||
|
||||
|
||||
2
|
||||
|
||||
**Intruder**
|
||||
|
||||
**自动化漏洞扫描器,具有主动监控和基于云的安全洞察。**
|
||||
|
||||
Intruder结合了连续网络监控、自动化漏洞扫描和主动威胁响应于一个平台中。这种方法提供了对攻击面的详细视图,帮助用户快速有效地修复最关键的弱点。
|
||||
|
||||
Intruder的报告有助于用户向合作伙伴和客户展示自身的安全承诺,或符合ISO 27001和SOC 2。此外,Intruder的网络状况评分跟踪解决问题所需的时间,并与用户所在的行业标准进行比较。
|
||||
|
||||
Intruder可以轻松与云提供商(AWS、Azure、Google Cloud)集成,当用户的数字资产中暴露的端口和服务发生变化时,获得主动警报,并在任何变化时自动扫描系统。
|
||||
|
||||
**主要功能:**
|
||||
|
||||
|
||||

|
||||
|
||||
|
||||
- 针对新兴威胁的主动扫描
|
||||
|
||||
- 攻击面监控和减少
|
||||
|
||||
- 与AWS、GCP和Azure集成的简化云安全
|
||||
|
||||
- 资产发现和网络扫描
|
||||
|
||||
- 可操作的修复建议和合规报告
|
||||
|
||||
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||
3
|
||||
|
||||
**Qualys**
|
||||
|
||||
**全面的基于云的平台,用于持续漏洞管理和合规性。**
|
||||
|
||||
Qualys是一款漏洞管理工具,识别所有环境资产,并评估漏洞、支持和资产类别的风险,以主动降低风险,助力用户轻松地对软件、硬件和未管理的网络资产进行分类,并标记关键资产。
|
||||
|
||||
该工具兼容补丁管理解决方案和配置管理数据库(CMDBs),允许快速发现、优先处理和自动化、可扩展的漏洞修复,以降低风险。
|
||||
|
||||
Qualys自动对发现的硬件(包括数据库、服务器和网络组件)进行分类。它还记录系统上安装的软件、服务和流量及其当前运行状态。
|
||||
|
||||
**主要功能:**
|
||||
|
||||
|
||||

|
||||
|
||||
|
||||
- 在网络、系统和应用中发现和排名漏洞。
|
||||
|
||||
- 发现并列出所有IT资产。
|
||||
|
||||
- 具有持续监控工具,助力始终了解IT资产的安全状况。
|
||||
|
||||
- 帮助企业确保遵循安全规则和行业法律。
|
||||
|
||||
- 自动发现旧系统中的安全漏洞。
|
||||
|
||||
- 自动检查和理解所有网络的危险。
|
||||
|
||||
- 多云系统的安全评估。
|
||||
|
||||
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||
4
|
||||
|
||||
**Acunetix**
|
||||
|
||||
**专注于网络漏洞扫描,具有准确的检测和报告。**
|
||||
|
||||
Acunetix是一款强大的漏洞管理软件,专注于网络应用安全,提供自动化扫描以检测和修复广泛的漏洞,包括SQL注入、XSS和其他基于网络的威胁。
|
||||
|
||||
该软件提供详细的漏洞报告,并与流行的开发和CI/CD工具无缝集成,使组织能够在开发周期的早期识别和解决安全缺陷,增强整体安全态势。
|
||||
|
||||
Acunetix支持本地和云部署,为各种规模的企业提供灵活性和可扩展性,而其直观的界面和综合仪表板使漏洞管理高效而简单。
|
||||
|
||||
**主要功能:**
|
||||
|
||||
|
||||

|
||||
|
||||
|
||||
- 自动扫描公司检查的网络和网络应用中的安全漏洞。
|
||||
|
||||
- 使用先进的测试方法更彻底地发现漏洞。
|
||||
|
||||
- 发现OWASP Top 10和CWE/SANS Top 25中列出的网络应用漏洞
|
||||
|
||||
- 发现基于网络的漏洞和与网络相关的设备。
|
||||
|
||||
- 立即将漏洞添加到其列表中,并将其标记为“开放”。
|
||||
|
||||
- 重新测试以确保缺陷得到正确修复。
|
||||
|
||||
- 制作可以自动扫描受密码保护区域的宏。
|
||||
|
||||
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||
5
|
||||
|
||||
**Tripwire**
|
||||
|
||||
**提供强大的安全配置管理和文件完整性监控。**
|
||||
|
||||
Tripwire漏洞管理软件提供对IT环境的持续监控和评估,识别服务器、网络和云基础设施中的漏洞,使组织能够有效地优先处理和修复风险。
|
||||
|
||||
该软件与现有安全工具集成,提供可操作的见解,帮助安全团队专注于高风险漏洞,并确保遵守行业法规和内部安全政策。
|
||||
|
||||
Tripwire的解决方案提供自动化补丁管理和配置控制,减少攻击面,同时保持系统完整性,使其成为全面网络安全策略的重要组成部分。
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||
6
|
||||
|
||||
**Astra Pentest**
|
||||
|
||||
**提供持续的漏洞评估,附有详细报告和可操作的修复指导。**
|
||||
|
||||
Astra Pentest是一款复杂的自动化漏洞管理应用程序,除了手动渗透测试外,还评估和显示资产漏洞。
|
||||
|
||||
除了超过三千次的自动化和手动渗透测试外,该平台还检查资产是否存在OWASP前十和SANS 25中列出的关键漏洞问题(CVEs)。它包括符合GDPR、HIPAA和ISO 27001标准所需的所有测试。
|
||||
|
||||
管理员可以使用无代码仪表板轻松跟踪和控制漏洞。CVSS评分、潜在损失和总公司影响决定了漏洞风险评分。提供ISO 27001、SOC 2、PCI-DSS、HIPAA和GDPR测试。
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||
7
|
||||
|
||||
**Rapid7**
|
||||
|
||||
**集成平台用于漏洞管理、检测和响应。**
|
||||
|
||||
Rapid7 InsightVM和Nexpose是一款本地漏洞扫描器,处理漏洞。通过结合多种安全技术,Rapid7让团队能够自动化处理、监控网络,管理漏洞,分析和阻止威胁等。
|
||||
|
||||
Nexpose通过对配置、控制、漏洞和实时变更评估的风险进行优先级排序,帮助用户减少威胁暴露。Rapid7是渗透测试应用的最佳选择。
|
||||
|
||||
Nexpose通过修复责任简化资产分组,并使生成资产团队的修复报告变得容易——将侦察、有效载荷和关闭功能集合成一个程序中。
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||
8
|
||||
|
||||
**Syxsense**
|
||||
|
||||
**结合端点管理与实时漏洞检测和修补。**
|
||||
|
||||
Syxsense是一款顶级漏洞管理解决方案,因为它可以在云、本地和任何其他地方或网络中查看和理解每个端点。它利用人工智能和行业专业知识监控和保护端点,防止和中和威胁。
|
||||
|
||||
Syxsense通过托管服务、24/7覆盖和合规性进行保护。补丁管理和漏洞扫描帮助公司将网络安全与IT管理对齐。
|
||||
|
||||
Syxsense使远程计算机连接无需接受变得容易。这有助于非技术人员。Syxsense的动态搜索优先处理设备组和修复以适应公司需求。系统配置、严重性、风险和受影响的操作可能会改变这些特征。
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||
9
|
||||
|
||||
**F-Secure**
|
||||
|
||||
**提供主动漏洞扫描和威胁情报以增强安全性。**
|
||||
|
||||
F-Secure,现已更名为Secure,是一款强大且易于使用的漏洞管理工具。它是一个一体化漏洞评估和管理平台,提供清晰、可操作和优先的威胁可见性,以支持组织的安全策略。
|
||||
|
||||
使用这款基于云的软件保护自己免受现代攻击和勒索软件的侵害。它结合了自动补丁管理、持续行为分析、漏洞管理和动态威胁情报。
|
||||
|
||||
该应用程序可以全天检查漏洞并通知用户。F-Secure Elements漏洞管理API使用JSON和HTTP方法,包括GET、PUT、POST和DELETE。、
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||
10
|
||||
|
||||
**OutPost24**
|
||||
|
||||
**具有持续监控能力的可扩展网络安全评估。**
|
||||
|
||||
OutPost24 提供了一个统一的漏洞管理平台,能够在网络、应用程序和云环境中进行持续监控、检测和修复安全风险,确保全面保护潜在威胁。
|
||||
|
||||
该软件提供实时的漏洞洞察,使安全团队能够高效地优先处理和解决高风险问题,降低漏洞被利用的可能性,并改善整体安全态势。
|
||||
|
||||
OutPost24 与现有的安全工具无缝集成,实现自动化工作流程和简化的流程,提升运营效率,帮助组织保持对行业法规和标准的合规性。
|
||||
|
||||

|
||||
|
||||
|
||||
参考链接:
|
||||
|
||||
https://cybersecuritynews.com/vulnerability-management-tools/
|
||||
|
||||
|
||||
|
||||

|
||||
|
||||
合作电话:18311333376
|
||||
|
||||
合作微信:aqniu001
|
||||
|
||||
投稿邮箱:editor@aqniu.com
|
||||
|
||||

|
||||
|
||||
|
||||
@@ -0,0 +1,302 @@
|
||||
# 27.悬于开发者和安全研究人员头顶的剑 | 一类漏洞让Visual Studio项目变得不再可信
|
||||
梅苑安全 2025-01-17 07:51
|
||||
|
||||
1.从近期的Visual Studio相关项目投毒说起
|
||||
|
||||
在2024年10月,有境外APT组织在github上发布恶意Visual Studio代码,针对我国网络安全领域的研究者进行攻击,其具体时间线和更多细节可以参考微步在线研究响应中心的文章:
|
||||
```
|
||||
https://mp.weixin.qq.com/s/ih36z93y6BazatjeoGjp1A
|
||||
```
|
||||
|
||||
本文援引这次投毒事件并不是为了分析其用到的漏洞的技术细节,而是在于这个漏洞的另一个有趣特性——微软不认为这是一个漏洞:
|
||||
```
|
||||
https://www.theregister.com/2023/10/13/fresh_visual_studio_rce_exploit/
|
||||
```
|
||||
|
||||
该漏洞在过去也没有引起太大的关注,相信绝大部分师傅也是在这段时间才普遍认识到这个漏洞对于开发者和安全研究人员的威胁。正是这种信息差给了境外APT组织有机可乘的空间。且由于微软并不打算修复这种漏洞(仅仅只是添加“可信位置”机制,且不是默认开启,有种掩耳盗铃的感觉),因此在可预见的未来,这个漏洞还会不断用来拷打安全意识不太好的师傅们。
|
||||
|
||||
于是,大家可能难免会担忧。如果下一次攻击者用了别的漏洞呢?Visual Studio还有没有别的类似的安全问题呢?除了通过.sln文件触发,还有没有可能通过别的文件触发?这也就引出了本文的主题,在去年12月初,笔者也曾发现过一个类似的问题,它无需点击.sln触发,而是通过打开aspx/asmx/ashx等ASP.NET相关文件触发(也可以做成拖拽文件夹触发或点击.sln触发的变种),对于国内的WEB开发者、WEB安全研究人员以及红队危害更大。后文会涉及到这个漏洞在多个场景下的利用方法,以及对其原理进行分析。如果只是想看看笔者的漏洞能实现什么效果,可以直接拉到第三部分,绝对有趣。
|
||||
|
||||
|
||||
2.漏洞成因
|
||||
|
||||
如果要挖掘一个漏洞,那么可以先从目标以前曾经出现过的类似漏洞开始研究。在以前,我们介绍过resx的反序列化安全问题。在查阅相关资料的时候,我注意到Visual Studio曾经出现过一个漏洞,那就是在用Visual Studio直接打开.resx文件的时候,会直接触发反序列化漏洞,算是一个1click恶意代码执行,并且与后来的各种VS的1click代码执行、命令执行被忽略的命运不同的是,这个问题被Visual Studio处理过了,现在直接打开.resx文件什么事情都不会发生
|
||||
|
||||

|
||||
|
||||
继续了解,发现Visual Studio与resx文件的爱恨情仇其实也不止于此,参考.NET安全矩阵相关的内容:
|
||||
```
|
||||
https://mp.weixin.qq.com/s/bfWCOn2PAxeK-CvlIijv-w
|
||||
```
|
||||
|
||||
虽然打开.resx直接触发恶意代码执行的漏洞被修复了,但是,通过构造WindowsForms项目,并引入恶意的resx文件,在打开这个项目的时候,依然会触发反序列化
|
||||
|
||||

|
||||
|
||||
不过上述漏洞的触发都比较依赖开发者打开.sln文件,在经过这段时间的风波后,相信大家也不会随便打开.sln文件了。但是,从上面的种种信息中,我们可以看出,这个.resx文件其实还是非常关键的,就数它导致的Visual Studio 1click RCE最多(包括本文的漏洞),因此我们可以把它作为一个关键点去看。那么.resx文件又为何会导致这种问题呢?在本公众号之前的文章中分析过resx反序列化的问题,以及要如何去构造一个恶意resx文件:
|
||||
```
|
||||
https://mp.weixin.qq.com/s/uACjJfdKu4EmbLeM_chdHA
|
||||
```
|
||||
|
||||
简单来说,resx反序列化与ResXResourceReader()以及其配套的GetEnumerator()迭代器有关,其具体的调用栈和流程就不再详细分析了(详细流程参考以往的文章),直接省流一下,跳到最后的关键步骤
|
||||
|
||||

|
||||
|
||||
简单来说,ResXResourceReader()在处理resx文件内容时,会获取data节点的mimetype,决定后续反序列化行为使用的Formatter
|
||||
|
||||
例如我们下面的恶意resx文件的mimetype就符合ResXResourceWriter.BinSerializedObjectMimeType的值
|
||||
|
||||

|
||||
|
||||

|
||||
|
||||

|
||||
|
||||
因此后续可以进入binaryformatter反序列化点,这里会获取value节点的值,进行base64解码并进行BinaryFormatter反序列化
|
||||
|
||||

|
||||
|
||||
同理,这个后面还有SoapFormatter反序列化点
|
||||
|
||||

|
||||
|
||||
因此,如果开发者写出了类似下面的代码(其中payload是.resx的文件内容),那么就会导致反序列化,其本质就是BinaryFormatter和SoapFormatter两种反序列化
|
||||
|
||||

|
||||
|
||||
其中一个比较经典的应用是IIS+ASP.NET环境下,上传.resx或.resources文件到App_GlobalResources、App_LocalResources等文件夹实现webshell的效果。其调用栈如下,就是上文介绍的ResXResourceReader().GetEnumerator()触发
|
||||
|
||||

|
||||
|
||||
我们现在可以确认sink点了,那么我们可以尝试挖掘一下,在什么地方还有类似的ResXResourceReader().GetEnumerator()的调用,最好是满足1click甚至0click触发的。回到本文的主题,对于Visual Studio而言,还有没有能触发resx反序列化的点呢。这里我经过较长时间的寻找,最终找到Microsoft.VisualStudio.Web.Host.exe这个文件
|
||||
|
||||
这个exe中的逻辑导致了1click本地代码执行,注意调用栈中有一个方法:
|
||||
```
|
||||
System.Web.dll!System.Web.Compilation.BuildManager.CompileResourcesDirectory()
|
||||
```
|
||||
|
||||

|
||||
|
||||
从名字来看,这个方法就和Resources文件以及Resources相关文件夹有关,我们跟进查看这个方法:
|
||||
|
||||

|
||||
|
||||
这里就看到一个熟悉的关键词App_GlobalResources,也即我们前面提到过的一个特殊文件夹,这也就意味着Microsoft.VisualStudio.Web.Host.exe的执行流程中,也要对这个文件夹进行一些操作?这里还有一个特殊的属性
|
||||
```
|
||||
ResourcesDirectoryVirtualPath
|
||||
```
|
||||
|
||||
这个看名字就可以猜到和Resources路径有关,这里传入CompileCodeDirectory()方法,跟进:
|
||||
|
||||

|
||||
|
||||
又进入CodeDirectoryCompiler.GetCodeDirectoryAssembly(),然后这中间又经过几层调用,直接来看到GenerateCode()方法
|
||||
|
||||

|
||||
|
||||
这里会获取到一些和Resources有关的文件的信息,然后GetResourceReader()方法获取到ResXResourceReader()类的对象,一并传入GenerateResourceFile()方法
|
||||
|
||||

|
||||
|
||||
再跟进GenerateResourceFile()方法,前面应该是在读取相关恶意文件的内容
|
||||
|
||||

|
||||
|
||||
接着就是漏洞的触发点:
|
||||
|
||||

|
||||
|
||||
注意这里对reader变量调用foreach()进行遍历,foreach()会触发ResXResourceReader类中的GetEnumerator()方法调用,最终一路执行到GenerateObjectFromDataNodeInfo(),其中存在BinaryFormatter反序列化操作,触发漏洞。
|
||||
|
||||
这里先放一个最终的调用栈,看这个拖动条的长度可以看出这个漏洞还是有点点复杂的。接下来我们要探寻两个问题。第一,Microsoft.VisualStudio.Web.Host.exe文件在什么条件下会被调用。第二,需要满足什么条件,才能让这个文件运行到上文的恶意逻辑
|
||||
|
||||

|
||||
|
||||
这里就不卖关子了,直接来到漏洞利用。
|
||||
|
||||
|
||||
3.漏洞利用
|
||||
|
||||
我们需要构建下面这个结构的文件夹来进行后续的漏洞利用:
|
||||
```
|
||||
C:\USERS\XXXX\DESKTOP\TESTGZ\WEBAPPLICATION6
|
||||
| About.aspx //一个用于触发漏洞的aspx/asmx/ashx文件,内容是什么不重要
|
||||
| Web.config //一个web.config文件,在VS中新建WebForms项目即可得到
|
||||
|
|
||||
+---App_GlobalResources
|
||||
| test.resx //恶意resx文件,其中存放序列化payload,具体内容详见往期文章
|
||||
|
|
||||
\---bin
|
||||
Microsoft.CodeDom.Providers.DotNetCompilerPlatform.dll //触发流程所需的依赖,在VS中新建WebForms项目即可得到
|
||||
```
|
||||
|
||||

|
||||
|
||||

|
||||
|
||||

|
||||
|
||||
需要两个文件夹,四个文件。其中一个bin目录,存放导致该问题的Microsoft.CodeDom.Providers.DotNetCompilerPlatform.dll。一个App_GlobalResources,用于存放恶意resx文件。一个.aspx文件,用于触发漏洞。一个Web.config文件,告诉Visual Studio这是一个web项目。只需要这样简单的文件组合即可,这甚至都不能算Visual Studio项目,只是一些文件被恰到好处的放在了一起。而当你在上面这种目录结构中打开ASP.NET相关的文件的时候,Visual Studio会自动调用Microsoft.VisualStudio.Web.Host.exe文件,并走到上文分析过的resx反序列化点,加载恶意resx文件并触发反序列化。那么,它又能实现什么效果呢?请看VCR。
|
||||
|
||||
①通过点击aspx/ashx/asmx等ASP.NET后缀文件触发漏洞
|
||||
|
||||
与各位先辈的VS 1click漏洞不同,这个漏洞并不需要通过点击.sln文件触发。上述恶意代码实现的第一个效果就是,当你双击打开aspx/ashx/asmx等ASP.NET相关的文件时,就会触发反序列化。
|
||||
|
||||

|
||||
|
||||
这里我们演示一下,下图可以看出,在这个恶意目录下使用Visual Studio打开aspx/ashx/asmx文件,会直接触发漏洞。由于Visual Studio会自动关联aspx/asmx文件,因此用户只需要双击这些文件就可以打开
|
||||
|
||||

|
||||
|
||||

|
||||
|
||||

|
||||
|
||||
前文介绍过,上述我们构建的文件结构甚至都不能算是一个Visual Studio项目,所以它可以很大程度上伪装成普通的WEB源码,或者是把上述结构夹杂在正常的WEB代码里等待受害者触发。我承认读者现在可能对Visual Studio的项目有所警惕,但假如它都不是一个Visual Studio的项目呢?因此其第一个应用场景就是用来攻击.NET WEB开发者和.NET WEB安全研究人员,以及反制红队。假设你某一天水群的时候,看见有人在传播某某系统的源码,想下载回来审计一下,然后使用Visual Studio打开了aspx文件。再比如在一场攻防演练中,你找到目标网站的www.zip泄露,然后用Visual Studio打开了其中的的源码。上述这些行为都会导致你的主机沦陷。
|
||||
|
||||
②通过将恶意文件夹拖拽到Visual Studio中触发
|
||||
|
||||
现在读者可能会想,如果我不点击这些乱七八糟的文件呢?你还有办法攻击我吗?实际上上面这种姿势也不止局限于点击.aspx等文件才能触发。如果你把上述恶意目录拖到Visual Studio里打开,也一样能触发,例如下面这样:
|
||||
|
||||

|
||||
|
||||
或者
|
||||
|
||||

|
||||
|
||||

|
||||
|
||||
这个姿势还可以演变出一个变种,那就是我隐藏.aspx和web.config文件,保留.cs文件,让开发者认为这就是一个普通的Visual Studio的源码,降低警惕性:
|
||||
|
||||

|
||||
|
||||
如上图,在隐藏aspx和web.config文件的情况下,把SimpleWebApplication6这个目录拖拽到Visual Studio中,也一样可以触发漏洞。这个变种攻击方法可以用来攻击普通的开发者。
|
||||
|
||||
③借助sln文件触发
|
||||
|
||||
与各位先辈们一样的是,上述流程也可以借助sln文件触发。因为sln文件有一个好玩的特性,就是你通过sln打开一个项目,然后在这个项目里打开一个文件,然后直接关闭Visual Studio。实际上Visual Studio会保存你的打开状态,等我们下一次用sln打开项目的时候,会还原你上一次关闭前的状态。因此可以利用这个小特性去保存.aspx文件的打开状态,当用户点击.sln文件后,重新打开.aspx文件,触发漏洞流程。
|
||||
|
||||
这里我随便创建一个sln文件,先打开这个sln文件:
|
||||
|
||||

|
||||
|
||||
然后把aspx文件拖拽到项目里打开,这里会触发一次漏洞
|
||||
|
||||

|
||||
|
||||
然后我们直接关闭Visual Studio。待这个.vs目录生成后,我们的恶意项目也制作完成了
|
||||
|
||||

|
||||
|
||||
我们可以把这个恶意项目打包发给受害者,当受害者打开sln文件,恶意流程再次触发:
|
||||
|
||||

|
||||
|
||||
这个方法也可以用来攻击普通开发者。
|
||||
|
||||
综上,上述漏洞有三种不同的攻击方式,分别适用于一些不同的场景:
|
||||
|
||||
①点击aspx/ashx/asmx等文件触发:可用于攻击.NET WEB开发者、安全研究人员,还可用于投毒或反制红队
|
||||
|
||||
②拖拽文件夹触发:除了攻击.NET WEB开发者和安全研究人员,还可以用来攻击使用Visual Studio的其他领域的开发者
|
||||
|
||||
③点击.sln文件触发:除了攻击.NET WEB开发者和安全研究人员,还可以用来攻击使用Visual Studio的其他领域的开发者
|
||||
|
||||
为了保(避)护(免)同(铁)行(拳),上述项目的demo暂时不会公开,不过本文也分析的比较详细了,对.NET安全稍有了解的师傅应该很容易能复现出来,至于更加武器化的利用嘛,参考近期APT组织的手法咯。
|
||||
|
||||
|
||||
4.悬于开发者头顶的剑
|
||||
|
||||
很遗憾,这个漏洞也和它的前辈们一样不被微软承认,微软对VS新增了一个“信任位置”的机制来缓解这类1click RCE漏洞,该机制并非默认开启。
|
||||
|
||||

|
||||
|
||||

|
||||
|
||||
这里选择始终需要信任判定。配置完后重启Visual Studio,这样,当你打开任何Visual Studio相关的文件时,会看到这样的提示:
|
||||
|
||||

|
||||
|
||||
不过,在我看来这个机制有掩耳盗铃的嫌疑,既然我都决定要打开相关源码了,那么说明我已经信任它了,再多加一个弹窗让用户确认又有什么用呢?和“请确认你是否年满18岁”是一个性质嘛。此外,即使是安全行业的从业者,也是在经历近期的钓鱼事件后才对来源不明的Visual Studio项目提高警惕,更何况是普通开发者呢?就以本文提到的安全问题为例,其有多种触发方式,还可以很好地伪装成正常的Visual Studio项目,可以分别针对不同类别的计算机领域从业者进行攻击,在本文没有发布之前,如果笔者在各大平台或群聊发布恶意源码,相信也会有很多师傅中招。因此,请务必保持对任何Visual Studio文件的警惕,谁也不知道下一波攻击事件何时来到,谁也不知道下一次到底是用sln文件还是其它文件触发。由于微软不再修复这类漏洞,它们也将成为一柄永远悬于开发者头顶的达摩克里斯之剑。
|
||||
|
||||
综上,我呼吁大家对一切Visual Studio相关的源码或文件保持警惕,尤其是一些从群聊中拿到的源码或者是从小众冷门github项目中拿到的源码。如果非要打开,建议清理.vs目录并排查所有.resx和.resources文件的内容。如果条件允许,最好在虚拟机中对项目进行查看和分析,避免攻击者利用其它类型的1click漏洞进行攻击。
|
||||
|
||||
|
||||
5.参考和附录
|
||||
|
||||
参考:
|
||||
```
|
||||
https://mp.weixin.qq.com/s/ih36z93y6BazatjeoGjp1A
|
||||
https://www.theregister.com/2023/10/13/fresh_visual_studio_rce_exploit/
|
||||
https://mp.weixin.qq.com/s/bfWCOn2PAxeK-CvlIijv-w
|
||||
https://mp.weixin.qq.com/s/uACjJfdKu4EmbLeM_chdHA
|
||||
```
|
||||
|
||||
附录(本文提到的漏洞的完整调用栈):
|
||||
```
|
||||
> mscorlib.dll!System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Deserialize(System.IO.Stream serializationStream) (IL=prolog, Native=0x00007FF99C6F86D0+0x0)
|
||||
System.Windows.Forms.dll!System.Resources.ResXDataNode.GenerateObjectFromDataNodeInfo(System.Resources.DataNodeInfo dataNodeInfo, System.ComponentModel.Design.ITypeResolutionService typeResolver) (IL≈0x00C8, Native=0x00007FF93F5ECD60+0x313)
|
||||
System.Windows.Forms.dll!System.Resources.ResXDataNode.GetValue(System.ComponentModel.Design.ITypeResolutionService typeResolver) (IL≈0x00CF, Native=0x00007FF93F5EC900+0x375)
|
||||
System.Windows.Forms.dll!System.Resources.ResXResourceReader.ParseDataNode(System.Xml.XmlTextReader reader, bool isMetaData) (IL≈0x01C5, Native=0x00007FF93F5EB460+0x6E8)
|
||||
System.Windows.Forms.dll!System.Resources.ResXResourceReader.ParseXml(System.Xml.XmlTextReader reader) (IL=0x004A, Native=0x00007FF93F5EA580+0x13C)
|
||||
System.Windows.Forms.dll!System.Resources.ResXResourceReader.EnsureResData() (IL=0x00A1, Native=0x00007FF93F5E9390+0x208)
|
||||
System.Windows.Forms.dll!System.Resources.ResXResourceReader.GetEnumerator() (IL=0x000D, Native=0x00007FF93F5E9320+0x33)
|
||||
System.Web.dll!System.Web.Compilation.BaseResourcesBuildProvider.GenerateResourceFile(System.Web.Compilation.AssemblyBuilder assemblyBuilder, System.Resources.IResourceReader reader) (IL≈0x00DC, Native=0x00007FF93F5E8790+0x294)
|
||||
System.Web.dll!System.Web.Compilation.BaseResourcesBuildProvider.GenerateCode(System.Web.Compilation.AssemblyBuilder assemblyBuilder) (IL=0x007E, Native=0x00007FF93F5E75F0+0x1FB)
|
||||
System.Web.dll!System.Web.Compilation.AssemblyBuilder.AddBuildProvider(System.Web.Compilation.BuildProvider buildProvider) (IL=0x005F, Native=0x00007FF93F5E6EE0+0x18A)
|
||||
System.Web.dll!System.Web.Compilation.BuildProvidersCompiler.ProcessBuildProviders() (IL=0x023F, Native=0x00007FF93F4178A0+0x657)
|
||||
System.Web.dll!System.Web.Compilation.BuildProvidersCompiler.PerformBuild() (IL=0x0006, Native=0x00007FF93F417320+0x22)
|
||||
System.Web.dll!System.Web.Compilation.CodeDirectoryCompiler.GetCodeDirectoryAssembly(System.Web.VirtualPath virtualDir, System.Web.Compilation.CodeDirectoryType dirType, string assemblyName, System.Web.Util.StringSet excludedSubdirectories, bool isDirectoryAllowed) (IL≈0x0154, Native=0x00007FF93F40A930+0x345)
|
||||
System.Web.dll!System.Web.Compilation.BuildManager.CompileCodeDirectory(System.Web.VirtualPath virtualDir, System.Web.Compilation.CodeDirectoryType dirType, string assemblyName, System.Web.Util.StringSet excludedSubdirectories) (IL≈0x003E, Native=0x00007FF93F40B010+0xDB)
|
||||
System.Web.dll!System.Web.Compilation.BuildManager.CompileResourcesDirectory() (IL≈0x0006, Native=0x00007FF93F40B2A0+0x33)
|
||||
System.Web.dll!System.Web.Compilation.BuildManager.EnsureTopLevelFilesCompiled() (IL=0x0091, Native=0x00007FF93F40B7B0+0x127)
|
||||
System.Web.dll!System.Web.Compilation.BuildManagerHost.GenerateCodeCompileUnit(System.Web.VirtualPath virtualPath, string virtualFileString, out System.Type codeDomProviderType, out System.CodeDom.Compiler.CompilerParameters compilerParameters, out System.Collections.IDictionary linePragmasTable) (IL=0x0017, Native=0x00007FF93F40BB20+0x6F)
|
||||
mscorlib.dll!System.Runtime.Remoting.Messaging.StackBuilderSink.SyncProcessMessage(System.Runtime.Remoting.Messaging.IMessage msg) (IL=???, Native=0x00007FF99D08A280+0x352)
|
||||
mscorlib.dll!System.Runtime.Remoting.Messaging.ServerObjectTerminatorSink.SyncProcessMessage(System.Runtime.Remoting.Messaging.IMessage reqMsg) (IL≈0x0048, Native=0x00007FF99D09AEA0+0xAF)
|
||||
mscorlib.dll!System.Runtime.Remoting.Messaging.ServerContextTerminatorSink.SyncProcessMessage(System.Runtime.Remoting.Messaging.IMessage reqMsg) (IL≈0x004F, Native=0x00007FF99D09AA50+0x120)
|
||||
mscorlib.dll!System.Runtime.Remoting.Channels.CrossContextChannel.SyncProcessMessageCallback(object[] args) (IL≈0x0059, Native=0x00007FF99D0919A0+0x16A)
|
||||
mscorlib.dll!System.Runtime.Remoting.Channels.CrossContextChannel.SyncProcessMessage(System.Runtime.Remoting.Messaging.IMessage reqMsg) (IL≈0x001F, Native=0x00007FF99D091BC0+0xBD)
|
||||
mscorlib.dll!System.Runtime.Remoting.Channels.ChannelServices.SyncDispatchMessage(System.Runtime.Remoting.Messaging.IMessage msg) (IL≈0x0042, Native=0x00007FF99D0825D0+0xBA)
|
||||
mscorlib.dll!System.Runtime.Remoting.Channels.CrossAppDomainSink.DoDispatch(byte[] reqStmBuff, System.Runtime.Remoting.Messaging.SmuggledMethodCallMessage smuggledMcm, out System.Runtime.Remoting.Messaging.SmuggledMethodReturnMessage smuggledMrm) (IL≈0x0047, Native=0x00007FF99D092E00+0x146)
|
||||
mscorlib.dll!System.Runtime.Remoting.Channels.CrossAppDomainSink.DoTransitionDispatchCallback(object[] args) (IL≈0x0016, Native=0x00007FF99D0930A0+0x94)
|
||||
[AppDomain 转换]
|
||||
mscorlib.dll!System.Runtime.Remoting.Channels.CrossAppDomainSink.DoTransitionDispatch(byte[] reqStmBuff, System.Runtime.Remoting.Messaging.SmuggledMethodCallMessage smuggledMcm, out System.Runtime.Remoting.Messaging.SmuggledMethodReturnMessage smuggledMrm) (IL≈0x0002, Native=0x00007FF99D0931E0+0xA8)
|
||||
mscorlib.dll!System.Runtime.Remoting.Channels.CrossAppDomainSink.SyncProcessMessage(System.Runtime.Remoting.Messaging.IMessage reqMsg) (IL≈0x0057, Native=0x00007FF99D0932E0+0xD2)
|
||||
mscorlib.dll!System.Runtime.Remoting.Proxies.RemotingProxy.CallProcessMessage(System.Runtime.Remoting.Messaging.IMessageSink ms, System.Runtime.Remoting.Messaging.IMessage reqMsg, System.Runtime.Remoting.Contexts.ArrayWithSize proxySinks, System.Threading.Thread currentThread, System.Runtime.Remoting.Contexts.Context currentContext, bool bSkippingContextChain) (IL≈0x003A, Native=0x00007FF99D0892A0+0xAC)
|
||||
mscorlib.dll!System.Runtime.Remoting.Proxies.RemotingProxy.InternalInvoke(System.Runtime.Remoting.Messaging.IMethodCallMessage reqMcmMsg, bool useDispatchMessage, int callType) (IL=???, Native=0x00007FF99D0894E0+0x40A)
|
||||
mscorlib.dll!System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(ref System.Runtime.Remoting.Proxies.MessageData msgData, int type) (IL≈0x0155, Native=0x00007FF99D088940+0x475)
|
||||
Microsoft.VisualStudio.Web.Host.exe!Microsoft.VisualStudio.Web.Host.RemoteCBMService.GetCompilerParams(string virtualPath, string virtualFileContents, out string codeDOMProviderName, out System.CodeDom.Compiler.CompilerParameters compilerParams) (IL=0x004E, Native=0x00007FF93EA962B0+0x72)
|
||||
[轻量级函数]
|
||||
System.ServiceModel.dll!System.ServiceModel.Dispatcher.SyncMethodInvoker.Invoke(object instance, object[] inputs, out object[] outputs) (IL≈0x0222, Native=0x00007FF8F7C9F1C0+0x2D9)
|
||||
System.ServiceModel.dll!System.ServiceModel.Dispatcher.DispatchOperationRuntime.InvokeBegin(ref System.ServiceModel.Dispatcher.MessageRpc rpc) (IL≈0x00B3, Native=0x00007FF8F7C91D00+0x387)
|
||||
System.ServiceModel.dll!System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage5(ref System.ServiceModel.Dispatcher.MessageRpc rpc) (IL=0x0048, Native=0x00007FF8F7C8A350+0xB1)
|
||||
System.ServiceModel.dll!System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage11(ref System.ServiceModel.Dispatcher.MessageRpc rpc) (IL=epilog, Native=0x00007FF8F7C89E40+0x14E)
|
||||
System.ServiceModel.dll!System.ServiceModel.Dispatcher.MessageRpc.Process(bool isOperationContextSet) (IL=0x0065, Native=0x00007FF8F7C90C20+0x133)
|
||||
System.ServiceModel.dll!System.ServiceModel.Dispatcher.ChannelHandler.DispatchAndReleasePump(System.ServiceModel.Channels.RequestContext request, bool cleanThread, System.ServiceModel.OperationContext currentOperationContext) (IL≈0x0239, Native=0x00007FF8F7C8FE60+0x66F)
|
||||
System.ServiceModel.dll!System.ServiceModel.Dispatcher.ChannelHandler.HandleRequest(System.ServiceModel.Channels.RequestContext request, System.ServiceModel.OperationContext currentOperationContext) (IL≈0x00FE, Native=0x00007FF8F7C88D00+0x21B)
|
||||
System.ServiceModel.dll!System.ServiceModel.Dispatcher.ChannelHandler.AsyncMessagePump(System.IAsyncResult result) (IL≈0x0039, Native=0x00007FF8F7C88670+0x4C)
|
||||
System.ServiceModel.dll!System.ServiceModel.Dispatcher.ChannelHandler.OnAsyncReceiveComplete(System.IAsyncResult result) (IL=epilog, Native=0x00007FF8F7C86CA0+0x5E)
|
||||
System.ServiceModel.Internals.dll!System.Runtime.Fx.AsyncThunk.UnhandledExceptionFrame(System.IAsyncResult result) (IL≈0x0000, Native=0x00007FF987F48740+0x2E)
|
||||
System.ServiceModel.Internals.dll!System.Runtime.AsyncResult.Complete(bool completedSynchronously) (IL≈0x00C2, Native=0x00007FF987ED7C20+0xF0)
|
||||
System.ServiceModel.dll!System.ServiceModel.Channels.TransportDuplexSessionChannel.TryReceiveAsyncResult.OnReceive(System.IAsyncResult result) (IL=epilog, Native=0x00007FF8F7C87540+0xB3)
|
||||
System.ServiceModel.Internals.dll!System.Runtime.Fx.AsyncThunk.UnhandledExceptionFrame(System.IAsyncResult result) (IL≈0x0000, Native=0x00007FF987F48740+0x2E)
|
||||
System.ServiceModel.Internals.dll!System.Runtime.AsyncResult.Complete(bool completedSynchronously) (IL≈0x00C2, Native=0x00007FF987ED7C20+0xF0)
|
||||
System.ServiceModel.dll!System.ServiceModel.Channels.SynchronizedMessageSource.ReceiveAsyncResult.OnReceiveComplete(object state) (IL=epilog, Native=0x00007FF8F7C87A30+0xB8)
|
||||
System.ServiceModel.dll!System.ServiceModel.Channels.SessionConnectionReader.OnAsyncReadComplete(object state) (IL=epilog, Native=0x00007FF8F7CA6A30+0x17C)
|
||||
System.ServiceModel.Internals.dll!System.Runtime.Fx.AsyncThunk.UnhandledExceptionFrame(System.IAsyncResult result) (IL≈0x0000, Native=0x00007FF987F48740+0x2E)
|
||||
System.dll!System.Net.LazyAsyncResult.Complete(System.IntPtr userToken) (IL≈0x003E, Native=0x00007FF99A273810+0x56)
|
||||
System.dll!System.Net.LazyAsyncResult.ProtectedInvokeCallback(object result, System.IntPtr userToken) (IL≈0x0064, Native=0x00007FF99A2736E0+0xCA)
|
||||
System.dll!System.Net.Security.NegotiateStream.ProcessFrameBody(int readBytes, byte[] buffer, int offset, int count, System.Net.AsyncProtocolRequest asyncRequest) (IL=0x0070, Native=0x00007FF99A7EDFF0+0xCA)
|
||||
System.dll!System.Net.Security.NegotiateStream.ReadCallback(System.Net.AsyncProtocolRequest asyncRequest) (IL≈0x0048, Native=0x00007FF99A7EE210+0xD4)
|
||||
System.dll!System.Net.AsyncProtocolRequest.CompleteRequest(int result) (IL=epilog, Native=0x00007FF99A2594D0+0x3E)
|
||||
System.dll!System.Net.FixedSizeReader.CheckCompletionBeforeNextRead(int bytes) (IL=0x005D, Native=0x00007FF99A259490+0x28)
|
||||
System.dll!System.Net.FixedSizeReader.ReadCallback(System.IAsyncResult transportResult) (IL≈0x001C, Native=0x00007FF99A2593A0+0x7F)
|
||||
System.ServiceModel.Internals.dll!System.Runtime.AsyncResult.Complete(bool completedSynchronously) (IL≈0x00C2, Native=0x00007FF987ED7C20+0xF0)
|
||||
System.ServiceModel.dll!System.ServiceModel.Channels.ConnectionStream.IOAsyncResult.OnAsyncIOComplete(object state) (IL=epilog, Native=0x00007FF8F88B1590+0x7A)
|
||||
System.ServiceModel.dll!System.ServiceModel.Channels.PipeConnection.OnAsyncReadComplete(bool haveResult, int error, int numBytes) (IL=epilog, Native=0x00007FF8F7CA4340+0x234)
|
||||
System.ServiceModel.dll!System.ServiceModel.Channels.OverlappedContext.CompleteCallback(uint error, uint numBytes, System.Threading.NativeOverlapped* nativeOverlapped) (IL=epilog, Native=0x00007FF8F7CA4900+0xCA)
|
||||
System.ServiceModel.Internals.dll!System.Runtime.Fx.IOCompletionThunk.UnhandledExceptionFrame(uint error, uint bytesRead, System.Threading.NativeOverlapped* nativeOverlapped) (IL≈0x0005, Native=0x00007FF987ED7530+0x3B)
|
||||
mscorlib.dll!System.Threading._IOCompletionCallback.PerformIOCompletionCallback(uint errorCode, uint numBytes, System.Threading.NativeOverlapped* pOVERLAP) (IL=0x0078, Native=0x00007FF99C6E0D60+0x84)
|
||||
[本机到托管的转换]
|
||||
```
|
||||
|
||||
@@ -0,0 +1,136 @@
|
||||
# 漏洞扫描工具 -- SBScan
|
||||
点击关注👉 马哥网络安全 2025-01-17 09:03
|
||||
|
||||

|
||||
|
||||
前言:SBScan是一款专为Spring框架量身定制的渗透测试工具,它能够对目标网站执行Spring Boot未授权访问检测、敏感信息泄露检查,以及Spring框架相关漏洞的全面扫描和验证。全面覆盖的敏感路径库:SBScan配备了业界最全面的Spring Boot网站敏感路径库,能够全方位检测网站是否面临敏感信息泄露的风险。指纹识别能力:Spring站点指纹识别:SBScan能够启动指纹识别功能,仅对检测到Spring特征的站点进行深度扫描,以此节省资源和时间。(请注意,无特征站点可能会被遗漏,用户需自行决定是否启用此功能。)敏感路径页面关键词识别:通过识别包含在敏感路径中的关键词特征,SBScan能够对检测到的页面进行精确的指纹匹配,显著提高检测的准确度,减少人工验证敏感页面真实性所需的时间。模块化检测启动:如果用户只关心敏感路径的检测,或者只想要进行漏洞扫描,SBScan允许通过-m参数来指定特定的检测模块。全面的Spring漏洞检测POC集合:SBScan集成了所有Spring相关的CVE漏洞检测POC,是同类工具中最为全面的。无回显漏洞检测解决方案:对于无回显漏洞的检测,SBScan支持通过--dnslog参数指定DNSLog域名,确保只有在DNSLog记录实际出现时,才确认漏洞的存在。精简化输出结果:用户可以通过-q参数来指定只显示成功的检测结果,以此减少不必要的信息干扰。易于扩展的设计:SBScan在设计初期就考虑到了用户的自定义扩展需求,采用高内聚低耦合的模块化编程方式,使得用户可以轻松添加自己的POC、积累的敏感路径和绕过语句,优化检测逻辑。其他支持功能:SBScan还支持单个URL扫描、URL文件批量扫描、扫描模块选择、代理设置、多线程扫描以及生成扫描报告等常规功能。
|
||||
安装与使用:
|
||||
|
||||
**安装:**
|
||||
|
||||
```
|
||||
MacOS && linux
|
||||
|
||||
$ git clone https://github.com/sule01u/SBSCAN.git
|
||||
$ cd SBSCAN
|
||||
$ python3 -m venv sbscan # 创建虚拟环境
|
||||
$ source sbscan/bin/activate # 激活虚拟环境
|
||||
$ pip3 install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple # -i 指定pip源安装依赖,可选;
|
||||
$ python3 sbscan.py --help
|
||||
|
||||
|
||||
Windows
|
||||
|
||||
$ git clone https://github.com/sule01u/SBSCAN.git
|
||||
$ cd SBSCAN
|
||||
$ python3 -m venv sbscan # 创建虚拟环境
|
||||
$ .\sbscan\Scripts\activate # 激活虚拟环境
|
||||
$ pip3 install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple # -i 指定pip源安装依赖,可选;
|
||||
$ python3 sbscan.py --help
|
||||
|
||||
|
||||
```
|
||||
|
||||
|
||||
|
||||
**使用:**
|
||||
|
||||
1、调高探测与扫描并发
|
||||
|
||||
```
|
||||
./SbScan -h 192.168.0.0/16 -wsh 500 --wsp 500
|
||||
|
||||
```
|
||||
|
||||
|
||||

|
||||
|
||||
2、端口扫描可以写端口号、端口范围或者常用端口类型
|
||||
|
||||
```
|
||||
./SbScan -h 192.168.188.0/24 -p 80,22,81-89
|
||||
|
||||
```
|
||||
|
||||
|
||||

|
||||
|
||||
3、列出weblogic漏洞对应的poc
|
||||
|
||||
```
|
||||
./SbScan --lpn --fpn weblogic
|
||||
|
||||
```
|
||||
|
||||
|
||||

|
||||
|
||||
4、列出thinkphp漏洞对应的poc
|
||||
|
||||

|
||||
|
||||
|
||||
下载链接:
|
||||
|
||||
https://github.com/shmilylty/SharpHostInfo
|
||||
|
||||
如有侵权,请联系删除
|
||||
|
||||
****
|
||||
**文末福利**
|
||||
##
|
||||
## 现在已经步入2025年了,不少小伙伴在考虑入行学习网络安全。
|
||||
##
|
||||
|
||||

|
||||
|
||||
为了帮助大家早日习得网络安全核心知识,快速入行网络安全圈,**给大家整理了一套【2025最新网安资料】**
|
||||
**网络安全工程师****必备技能资料包**
|
||||
(文末一键领取)**,内容有多详实丰富看下图!**
|
||||
|
||||
**Web安全**
|
||||
|
||||

|
||||
|
||||
**渗透测试**
|
||||
|
||||

|
||||
|
||||
**安全面试题**
|
||||
|
||||

|
||||
|
||||
**代码审计**
|
||||
|
||||

|
||||
|
||||
**HVV文档**
|
||||
|
||||

|
||||
|
||||
**红队笔记**
|
||||
|
||||

|
||||
|
||||
**入门视频**
|
||||
|
||||

|
||||
|
||||

|
||||
|
||||
|
||||
**以上所有资料获取请扫码**
|
||||
|
||||

|
||||
|
||||
识别上方二维码
|
||||
|
||||
备注:2025安全合集
|
||||
|
||||
100%免费领取
|
||||
|
||||
(是
|
||||
扫码领取,不是在公众号后台回复,
|
||||
别看错了哦)
|
||||
|
||||
|
||||
Reference in new issue
Block a user