【渗透测试】信息收集二
其他信息收集
在渗透测试中,历史漏洞信息收集是一项重要的工作,以下是相关介绍:
历史漏洞信息收集的重要性
- 提高效率:通过收集目标系统或应用程序的历史漏洞信息,可以快速定位可能存在的安全问题,避免重复劳动,提高渗透测试的效率。如果已知某个软件版本存在特定的漏洞,那么在测试过程中就可以直接针对该漏洞进行验证和利用,而无需再进行大量的无头绪的探测123.
- 发现潜在风险:即使目标系统已经进行了部分安全更新和修复,历史漏洞信息仍可能揭示出一些未被完全修复或被忽视的潜在风险点。例如,某些漏洞的修复可能并不彻底,或者由于系统配置的复杂性,导致在修复一个漏洞的同时引入了新的安全隐患。历史漏洞信息收集可以帮助发现这些隐藏的问题3.
- 辅助漏洞利用:了解历史漏洞的详细信息,包括漏洞的成因、影响范围、利用方式等,有助于渗透测试人员更好地理解目标系统的安全状况,从而制定更有效的漏洞利用策略。对于一些复杂的漏洞链攻击,历史漏洞信息可能提供关键的线索和思路.
常见的历史漏洞信息收集途径
- 漏洞数据库:专业的漏洞数据库是收集历史漏洞信息的重要资源,常见的漏洞数据库有以下几种:
- CVE(Common Vulnerabilities and Exposures):这是一个由美国国家标准与技术研究院(NIST)维护的国际权威漏洞库,收录了各种软件、硬件和网络协议等的已知漏洞信息。每个漏洞都有一个唯一的 CVE 编号,方便查询和引用2.
- CNVD(China National Vulnerability Database of Information Security):由中国国家信息安全漏洞共享平台发布和管理,主要收录国内的信息安全漏洞信息,对于国内的网络环境和应用系统具有较高的参考价值。
- CNNVD(China National Computer Virus Emergency Response Center Vulnerability Database):中国国家计算机病毒应急处理中心建立的漏洞库,侧重于计算机病毒和恶意软件相关的漏洞信息,同时也涵盖了一些常见的网络安全漏洞。
- 安全厂商公告:各大安全厂商如绿盟科技、启明星辰、360 等会定期发布安全公告,其中包含了他们所发现的最新漏洞信息以及针对这些漏洞的解决方案和建议。这些公告通常会针对特定的产品或技术,具有较强的针对性和实用性3.
- 软件开发商官网:软件开发商会在其官方网站上发布关于产品的安全更新和漏洞修复信息。例如,微软会在其官网的安全更新页面发布 Windows 系统及相关软件的漏洞补丁和说明;开源软件项目如 WordPress、Drupal 等也会在其官方网站或代码仓库中公布漏洞信息和修复版本3.
- 安全论坛和社区:一些知名的安全论坛和社区,如 FreeBuf、Seebug 等,汇聚了大量的安全研究人员和爱好者,他们会在这些平台上分享和讨论各种漏洞信息、攻击案例和安全技术。在这些论坛上,可以找到一些最新的、尚未被广泛报道的漏洞信息,以及其他安全从业者对漏洞的分析和见解23.
- 历史漏洞报告和研究论文:一些专业的安全研究机构和学者会发布关于特定领域或行业的历史漏洞报告和研究论文,这些报告通常会对某一类漏洞进行深入的分析和总结,包括漏洞的发展趋势、影响范围、修复措施等。通过阅读这些报告和论文,可以获取更全面、深入的历史漏洞信息,为渗透测试提供更有力的支持3.
历史漏洞信息收集的方法和技巧
- 精准搜索:使用准确的关键词和搜索语法,可以更快速地找到与目标系统相关的历史漏洞信息。例如,在搜索引擎中输入目标软件或系统的名称、版本号以及 “漏洞”、“CVE” 等关键词,如 “WordPress 5.0 CVE 漏洞”,可以找到该版本 WordPress 的相关漏洞信息。还可以使用一些高级搜索语法,如在 Google 中使用 “site:wooyun.shuimugan.com 目标系统名称 漏洞” 来限定在乌云漏洞平台上搜索目标系统的漏洞信息34.
- 关注行业动态:关注安全行业的最新动态和趋势,及时了解新出现的漏洞类型和攻击手法。可以通过订阅安全资讯邮件、关注安全媒体的社交媒体账号、参加安全会议和研讨会等方式,保持对行业动态的关注,以便在渗透测试中能够及时发现和应对新的安全威胁.
- 建立漏洞库:在收集历史漏洞信息的过程中,可以建立自己的漏洞库,将收集到的漏洞信息进行整理、分类和归档,方便后续的查询和使用。漏洞库可以按照软件类型、漏洞类型、影响程度等进行分类,同时记录漏洞的详细信息,如漏洞名称、CVE 编号、漏洞描述、影响版本、修复措施等,以便在渗透测试中能够快速定位和利用相关漏洞。
- 交叉验证:为了确保收集到的历史漏洞信息的准确性和可靠性,可以对从不同渠道获取的信息进行交叉验证。例如,当在某个漏洞数据库中发现一个漏洞信息时,可以通过查询软件开发商的官网、安全厂商的公告或其他权威渠道来核实该漏洞的真实性和详细情况,避免因错误或虚假的漏洞信息而导致渗透测试方向的偏差
有哪些工具可以辅助进行历史漏洞信息收集?
以下是一些可以辅助进行历史漏洞信息收集的工具:
网络爬虫与数据挖掘工具
- PwnBack:这是一个 Burp Suite 的插件,可利用Web.archive.org的服务回溯并爬取网站的多年历史记录,能帮助安全专家深入探索网站的历史版本,发现潜在的安全漏洞和敏感信息。其通过 PhantomJS 作为驱动,可以解析并抓取网页上的 JavaScript 内容,确保对archive.org返回的页面进行完整渲染1.
- Collector:一款基于 Python 开发的开源工具,能够智能地从整个网站域收集易受跨站脚本攻击的参数,通过利用 Wayback Machine 来发现历史上的安全漏洞点,为开发者和安全专家提供有力支持,其不仅局限于 URL 的抓取,还会深入 JS 文件挖掘敏感信息,以实现全方位覆盖潜在风险2.
漏洞扫描工具
- Nessus:一款功能强大的漏洞扫描工具,提供了多种漏洞检测插件,可检测出系统、网络设备、应用程序等存在的历史漏洞和潜在安全风险,并生成详细的漏洞报告,支持多种操作系统和平台,被广泛应用于企业级的安全评估和漏洞管理。
- OpenVAS:开源的漏洞扫描和管理工具,类似于 Nessus,能够对网络中的各种设备和系统进行全面的漏洞扫描,包括操作系统漏洞、网络服务漏洞、应用程序漏洞等,其漏洞库会定期更新,以确保能够检测到最新的历史漏洞信息,通过 Web 界面进行操作和管理,方便用户查看和分析扫描结果 。
- QualysGuard:基于云计算的漏洞管理解决方案,可对企业的网络、系统和应用程序进行持续的监控和评估,及时发现新出现的漏洞和历史遗留漏洞,提供详细的漏洞分析和修复建议,还支持与其他安全工具和流程的集成,帮助企业更好地管理和应对安全风险 。
安全情报平台
- VirusTotal:不仅可以用于检测恶意文件和网址,还收集了大量软件和应用程序的历史漏洞信息。用户可以通过上传文件或输入网址等方式,查询相关的安全情报,包括是否存在已知漏洞、恶意行为等,其数据来源广泛,包括多个安全厂商和研究机构的贡献,能够为用户提供较为全面的安全评估3.
- CVE Details:专注于 CVE 漏洞信息的收集和整理,提供了详细的漏洞描述、影响版本、解决方案等信息,用户可以通过搜索特定的软件或产品名称,快速查找相关的历史漏洞记录,还支持漏洞趋势分析和统计功能,帮助用户了解不同类型漏洞的发展趋势和分布情况。
- Exploit Database: 汇集了大量公开披露的漏洞利用代码和相关信息,安全研究人员和渗透测试人员可以在其中查找目标系统或应用程序的历史漏洞利用方法和案例,通过分析这些漏洞利用信息,更好地理解漏洞的本质和危害,为渗透测试和漏洞修复提供参考依据 。
搜索引擎与特定网站查询工具
- ZoomEye:网络空间搜索引擎,收录了互联网空间中的设备、网站及其使用的服务或组件等信息,拥有两大探测引擎,可标识出互联网设备及网站所使用的服务及组件等信息,用户可方便地了解组件的普及率及漏洞的危害范围等历史漏洞信息4.
- Shodan:与 ZoomEye 类似,可搜索网络空间中的各种设备和服务,通过对大量设备和服务的信息收集和分析,为用户提供有关目标系统的详细信息,包括设备类型、操作系统版本、开放端口、应用程序等,进而帮助用户查找相关的历史漏洞和潜在安全风险 。
- Censys:可以对互联网上的主机和服务进行全面的扫描和分析,提供丰富的信息查询功能,包括 IP 地址、域名、端口、协议、证书等信息,用户可以通过这些信息来发现目标系统的历史漏洞和安全配置问题 3.
软件成分分析工具
- Dependency-Check:OWASP 的实用开源程序,用于识别项目依赖项并检查是否存在任何已知的、公开披露的漏洞,支持 Java、.net、ruby、php、node.js、python 等多种语言编写的程序,可与多种主流的软件集成,如命令行、ant、maven、gradle、jenkins、sonar 等,能够帮助开发人员和安全人员及时发现项目中使用的第三方库和组件存在的历史漏洞.
- Retire.js:主要用于检测 JavaScript 和 HTML 文件中使用的 JavaScript 库是否存在已知的漏洞,通过分析网页中的脚本引用,与已知的漏洞数据库进行比对,从而发现可能存在风险的库版本,可作为一种前端安全检测工具,帮助发现网站前端应用中存在的历史漏洞隐患 。
可辅助进行历史漏洞信息收集的免费工具
- 漏洞扫描类 :
- Arachni:用于现代 web 应用程序的高性能开源漏洞扫描工具,能够识别如 sql 注入、xss、本地文件包含等各种各样的安全问题。它是一个包含很多特性、模块化的、高性能的 ruby 框架,支持所有主流操作系统,可导出评估报告,能满足从命令行指令扫描到高性能网格扫描等多种使用场景。
- Nikto:一款流行的开源 web 服务器扫描程序,可对 web 服务器进行全面测试,检查危险文件、过时的服务器软件和其他潜在漏洞,能在 230 多种服务器上扫描出 3300 多种有潜在危险的文件、cgi 和超过 625 种服务器版本及其他问题,并可扫描指定主机的 web 类型、主机名、指定目录、特定 cgi 漏洞等。
- Sqlmap:可自动查找网站数据库中的 sql 注入漏洞,具有强大的检测引擎和许多有用的功能,支持一系列数据库服务器,包括 mysql、oracle、postgresql 等,完全支持六种 sql 注入技术,如基于时间的盲测、基于布尔的盲测等。
- 信息收集与分析类2 :
- Whois 查询工具:包括站长之家(http://whois.chinaz.com)、Bugscanner(http://whois.bugscaner.com)、国外的 BGP(https://bgp.he.net)、who.is(WHOIS Search, Domain Name, Website, and IP Tools - Who.is)、IP138 网站(ip查询 查ip 网站ip查询 同ip网站查询 iP反查域名 iP查域名 同ip域名)、域名信息查询 - 腾讯云(域名信息查询 - 腾讯云)等,通过查询域名的 IP 以及所有者等信息,可进一步挖掘域名所有人的信息,为漏洞挖掘提供数据支撑。
- Google Hacking:通过特定的搜索语法,可在搜索引擎中查找存在漏洞或敏感信息的网站和页面,帮助发现历史漏洞信息及可能存在的安全风险点,如查找特定版本软件的漏洞利用页面等。
- Dirsearch:用于扫描网站的目录和文件,可发现网站中可能存在的隐藏目录、备份文件、敏感文件等,进而分析是否存在可利用的漏洞,辅助收集历史漏洞信息。
- URLFinder:能够帮助查找网站中的各种 URL 链接,包括隐藏的、动态生成的等,扩大信息收集范围,有助于发现一些与历史漏洞相关的页面和资源。
- 数据挖掘与分析类:
- WebIssues:开源的问题追踪和团队协作应用程序,包含服务器和客户端两部分,服务器基于 PHP-MySQL,用于数据存储、通知和发送,客户端为桌面应用程序,可连接到服务器,通过对历史问题追踪数据的分析,挖掘潜在的漏洞信息3.
- Trac:集成 Subversion 源代码管理系统、Wiki 信息共享系统、BTS Bug 管理系统的 bug 追踪系统,采用 Python 开发,可用于跟踪软件项目中的漏洞和问题,分析其历史变化和趋势,为漏洞信息收集提供参考3.
- 特定漏洞检测类:
- XSSer:一款专门用于检测跨站脚本攻击(XSS)漏洞的工具,通过多种方式对目标网站进行扫描和测试,能够发现历史上存在的 XSS 漏洞以及潜在的风险点,帮助安全人员及时修复和防范此类漏洞。
- WPScan:针对 WordPress 网站的漏洞扫描工具,可检测 WordPress 核心、插件、主题等存在的已知漏洞,通过更新漏洞库,能够查找历史版本中的漏洞信息,对于保护和评估 WordPress 网站的安全性非常有用 。
社会工程学
- 社会工程学概述
- 社会工程学是一种通过对人的心理弱点、本能反应、好奇心、信任、贪婪等心理陷阱进行分析并加以利用,以获取信息、实施欺骗等目的的技术。在渗透测试中,它是一种非传统但非常有效的信息收集手段。
- 例如,攻击者可能会伪装成公司的 IT 技术支持人员,通过电话联系公司员工,以系统升级或安全检查为由,询问员工的账号和密码等敏感信息。
- 社会工程学信息收集方法
- 伪装身份:
- 可以伪装成各种角色来获取信息。如在企业环境中,伪装成内部审计人员,联系其他部门员工,要求提供业务流程、系统权限等相关信息。
- 例如,攻击者通过伪造证件,假扮成消防部门的检查人员,进入公司办公区域,借口检查消防设施,观察员工的办公环境,收集诸如用户名、密码提示贴纸等信息。
- 网络钓鱼:
- 这是一种常见的社会工程学攻击方式。攻击者发送看似合法的电子邮件,诱导收件人点击链接或下载附件。这些链接通常指向恶意网站,用于窃取用户的登录凭证等信息。
- 例如,发送一封主题为 “您的银行账户安全提醒” 的邮件,邮件内容包含一个与银行官网相似的链接。当用户点击链接并输入账号和密码时,信息就会被窃取。
- 还可以通过钓鱼短信,以中奖、快递异常等理由诱导用户点击链接或拨打电话,进而套取个人信息。
- 电话诈骗:
- 利用电话与目标对象进行沟通,编造合理的借口获取信息。比如,打电话给公司的财务人员,冒充公司高层,要求紧急转账到指定账户。
- 攻击者可能会提前收集公司高层的姓名、职位、讲话风格等信息,使电话诈骗更具迷惑性。例如,通过社交媒体了解公司高层的口音和常用词汇,在电话中模仿得更逼真。
- 垃圾搜寻(Dumpster Diving):
- 从目标组织或个人丢弃的物品中寻找有用信息。这可能包括旧的文件、硬盘、USB 设备等。
- 例如,在公司附近的垃圾桶中寻找被丢弃的文件,可能会发现包含员工信息、组织结构图、业务合同等敏感信息的纸张。
- 伪装身份:
- 防范社会工程学攻击的措施
- 员工培训:
- 对员工进行安全意识培训是防范社会工程学攻击的关键。培训内容应包括识别网络钓鱼邮件、可疑电话等。
- 例如,教会员工如何查看邮件的发件人地址是否真实,以及如何识别链接是否指向恶意网站。同时,培训员工在面对陌生人询问敏感信息时要保持警惕,及时向相关部门核实对方身份。
- 信息管理政策:
- 制定严格的信息管理政策,如限制敏感信息的打印和外带,对废弃的文件和存储设备进行安全销毁等。
- 例如,要求员工使用碎纸机销毁包含敏感信息的纸张,对旧硬盘等存储设备进行数据擦除或物理销毁。
- 多因素认证:
- 采用多因素认证可以增加攻击者获取系统访问权限的难度。即使攻击者通过社会工程学手段获取了用户的密码,没有其他认证因素(如短信验证码、指纹等),也无法登录系统。
- 员工培训:
钓鱼页面
钓鱼页面是一种在网络攻击中常用的欺诈手段,以下为你详细介绍:
定义及原理
钓鱼页面是攻击者精心仿造的、外观与合法正规网站(如常见的银行官网、电商平台、社交平台等)高度相似的网页,其目的是诱骗用户输入个人敏感信息,比如账号、密码、身份证号码、银行卡信息、验证码等,进而获取这些信息用于非法活动,例如盗刷银行卡、冒用身份进行诈骗等。攻击者通过各种渠道引导用户访问这些钓鱼页面,利用用户难以分辨真假网站的情况实施诈骗。
常见的呈现形式
- 仿冒银行登录页面:几乎原样复制正规银行网站的界面风格、页面布局以及网址特征等,只是网址往往会有细微差别,比如将银行官网域名中的个别字母替换或者添加一些容易被忽略的字符。用户在访问时稍不注意,以为是正常登录银行账户进行操作,输入相关信息后就会泄露给不法分子。
- 仿冒电商平台页面:模仿淘宝、京东等知名电商的商品下单、支付页面或者账户管理页面等。例如,制作一个看似正在进行限时优惠活动的商品下单页面,诱导用户登录账号并输入支付密码等信息来完成 “购买”,实则是将用户信息窃取走。
- 仿冒社交平台页面:像微信、QQ 等社交平台的登录页面也常被仿冒。比如,发送消息告知用户 “账号存在异常需重新验证登录”,引导用户点击链接进入仿冒的登录页面,一旦输入账号密码,账号就可能被攻击者控制,进而向好友发送诈骗消息等。
传播途径
- 电子邮件:攻击者会发送包含钓鱼链接的邮件,邮件主题通常极具吸引力和迷惑性,比如 “您的账户有异常交易需尽快处理”“恭喜您获得平台抽奖机会” 等,邮件内容会引导用户点击链接跳转到钓鱼页面。
- 短信:以短信形式发送诱导链接,话术诸如 “快递包裹出现问题,请点击链接查询详情”“您的手机积分即将过期,点击链接兑换礼品” 等,诱使收件人点击短信中的链接进入钓鱼页面。
- 社交平台消息:在社交软件上向目标用户发送私聊消息,利用用户对好友的信任,编造理由让其访问钓鱼页面,比如伪装成好友说 “我刚发现一个超划算的购物链接,你快看看”。
识别方法
- 查看网址:仔细核对网站的域名,正规网站的域名一般比较规范且容易识别,而钓鱼页面的网址往往存在拼写错误、添加多余字符、使用相似域名等情况。例如,银行官网域名通常是其官方的标准英文缩写等组合,钓鱼网址可能会多几个字母或者改变字母顺序。
- 检查页面细节:正规网站的页面设计通常比较精致,图片、文字排版规范,而钓鱼页面可能存在图片模糊、文字有错别字、链接跳转不顺畅等细节问题。同时,查看页面的安全锁标识等,正规的 https 加密页面会有相应安全标识,缺少这些或者标识异常的可能是钓鱼页面。
- 留意来源:对于来历不明的邮件、短信、消息中包含的链接要保持警惕,尤其是非官方渠道通知的涉及个人敏感信息操作的链接,不要轻易点击。
防范措施
- 提高安全意识:了解钓鱼页面的常见套路和识别方法,保持警惕,不随意点击可疑链接,不轻易在不明网站输入个人敏感信息。
- 安装安全软件:使用可靠的杀毒软件、防火墙等安全工具,它们可以对访问的网页进行检测,在一定程度上识别并拦截钓鱼页面,提示用户存在风险。
- 核实信息来源:收到涉及重要事项的通知时,通过官方客服电话、正规应用内的咨询渠道等核实消息的真实性,避免被钓鱼页面所骗。
如何判断一个网页是否是钓鱼页面
- 网址检查
- 域名分析:
- 仔细查看域名,正规网站的域名通常是品牌名称或与其紧密相关的词汇。例如,真正的银行网站域名会包含银行的官方名称缩写,像中国工商银行是 “icbc.com.cn”。如果域名看起来很奇怪,或者包含一些随机的数字和字母组合,很可能是钓鱼网站。
- 注意顶级域名(TLD),常见的有.com、.net、.org、.gov 等。一些钓鱼网站可能会使用不太常见的顶级域名来模仿正规网站,如 “.xyz”“.tk” 等。
- 子域名和路径检查:
- 有些钓鱼网站会使用合法域名的子域名来迷惑用户。例如,在正规网站域名 “example.com” 的基础上,使用 “sub.example.com” 这样的子域名来制作钓鱼页面。虽然主域名看起来合法,但子域名可能是非法的。
- 检查网址路径部分,看是否有不符合逻辑的内容。例如,正规银行网站的登录路径可能是 “https://bank.com/login”,如果出现 “https://bank.com/strange - path/login - page” 这样奇怪路径的页面,要提高警惕。
- https 协议检查:
- 正规的、涉及用户隐私信息处理的网站通常会使用 https 加密协议。可以查看浏览器地址栏中的网址,在 https 协议中,“s” 表示安全(Secure),意味着数据在传输过程中会进行加密。如果是 http 协议(没有 “s”),尤其是在要求输入敏感信息(如登录密码、银行卡信息等)的页面,很可能是钓鱼网站。
- 还要注意查看 https 证书的有效性。在浏览器地址栏中,点击锁形图标可以查看证书信息。如果证书已过期、颁发给错误的域名或者是自签名证书(非权威机构颁发),那么这个网站就存在风险。
- 域名分析:
- 页面内容审视
- 页面布局和设计:
- 与合法网站进行对比,钓鱼网站的页面布局可能会有细微差别。例如,正规的电商网站商品展示和购物车按钮等布局合理、美观,而钓鱼网站可能会出现排版混乱、图片模糊或不完整的情况。
- 注意网站的 logo 和品牌标识,钓鱼网站的 logo 可能颜色不准确、比例失调或者看起来像是低质量的复制。
- 拼写和语法错误:
- 钓鱼网站往往会存在拼写和语法错误,因为攻击者制作页面时可能不够细心或者翻译质量差。例如,在页面的提示信息、按钮文字或者版权声明中出现错别字,如 “请输如您的密码”(“输如” 应为 “输入”)。
- 联系方式和版权信息:
- 查看网站的联系方式,正规网站一般会提供详细、准确的联系电话、邮箱地址和公司地址等信息。钓鱼网站可能会缺少这些信息,或者提供的联系方式是假的。
- 检查版权信息,合法网站的版权声明会明确网站的所有者和版权归属。如果版权信息模糊不清或者与网站声称的品牌不符,很可能是钓鱼网站。
- 页面布局和设计:
- 功能和链接验证
- 链接跳转行为:
- 将鼠标悬停在页面上的链接上,查看浏览器状态栏中显示的目标网址。如果显示的网址与链接的文本描述不符,或者指向一些奇怪的、非预期的网站,那么这个页面可能是钓鱼网站。
- 点击链接后,观察页面的跳转是否自然、流畅。如果页面跳转后出现奇怪的弹窗、自动下载文件或者跳转到明显不相关的网站,要小心。
- 表单提交行为:
- 在要求输入敏感信息(如登录信息、个人资料、银行卡信息等)的表单页面,查看表单提交后的反馈。正规网站通常会有明确的提示信息,如 “登录成功”“信息提交成功” 等。而钓鱼网站可能会在用户提交信息后没有任何反馈,或者反馈信息很奇怪,如显示一个空白页面或一个与输入内容无关的提示。
- 功能完整性:
- 正规网站的功能通常是完整且能正常使用的。例如,购物网站可以正常添加商品到购物车、完成支付流程;银行网站可以正常查询账户余额、进行转账等操作。如果网站的功能无法正常使用,或者某些关键功能缺失(如无法找回密码),可能是钓鱼网站。
- 链接跳转行为:
- 信息来源核实
- 邮件和消息来源:
- 如果是通过邮件或消息中的链接访问的网页,检查邮件或消息的发送者。对于银行、电商等正规机构发送的邮件,其发件人地址通常是官方的邮箱域名,如 “service@bank.com”。如果发件人地址看起来很奇怪,或者是个人邮箱地址,很可能是钓鱼邮件。
- 查看邮件或消息的内容,正规机构发送的内容通常是专业、规范的,不会出现威胁、紧急要求用户立即行动的语气。如果邮件内容充满了错别字、语法错误,并且使用夸张的语言(如 “您的账户即将被永久冻结,必须马上登录处理”),很可能是钓鱼信息。
- 搜索引擎和推荐来源:
- 如果是通过搜索引擎访问的网页,查看搜索结果的描述和网址是否与预期一致。有些钓鱼网站可能会通过搜索引擎优化(SEO)技巧,使自己的页面在搜索结果中排名靠前,但仔细观察会发现其描述和网址存在问题。
- 对于别人推荐的网站,询问推荐者网站的详细情况,如网站的用途、是否是官方渠道等,以核实其合法性。
- 邮件和消息来源:
网站指纹识别
网站指纹识别是一种通过识别网站的特定属性和元素,来对其进行标识和分类的技术,以下是具体介绍:
识别的信息类型
- 服务器信息:包括服务器的类型及版本,如常见的 Apache、Nginx 等,不同服务器版本可能存在不同的漏洞和配置特点,识别出服务器信息有助于进一步发现潜在的安全风险15 。
- 脚本类型:如 PHP、ASP、JSP 等,了解脚本类型可以为后续的漏洞挖掘提供方向,因为不同脚本语言在处理输入输出、数据库交互等方面有各自的特点和可能存在的安全隐患137.
- 内容管理系统(CMS):常见的 CMS 有 WordPress、DedeCMS、Discuz 等,每个 CMS 都有其独特的结构、命名规则和特定的文件内容,通过识别 CMS 类型及其版本,可以查找与之相关的已知漏洞,从而实施更有针对性的渗透测试123.
- 框架和库:识别网站所使用的 Web 框架,如 Spring、Django 等,以及 JavaScript 库,如 jQuery、Vue.js 等,这些框架和库的版本信息对于评估网站的安全性也非常重要,旧版本可能存在未修复的安全漏洞127.
- 其他信息:还可能包括网站的编程语言、中间件架构类型、IP 地址、Cookie 信息等,这些信息综合起来能够更全面地了解网站的技术架构和运行环境127.
常用的识别方法
- 在线工具识别:
- 潮汐指纹识别:通过输入网址,可快速识别出目标网站的服务器、CMS 等信息,为安全测试人员提供初步的网站技术架构概览1.
- 云悉指纹识别:能够检测网站的多种信息,包括服务器类型、CMS、脚本语言、网站使用的框架及组件等,其数据库较为全面,能识别出常见的各类网站指纹信息1.
- WhatWeb 在线版:可识别内容管理系统、中间件、Web 框架模块、网站服务器、脚本类型、JavaScript 库等众多信息,拥有大量的插件来扩展其识别能力,输入网址后能迅速返回详细的网站指纹信息127.
- 工具识别1 :
- Ehole:主要用于对资产中重点系统的指纹识别,可帮助红队人员在大量资产中快速定位到易被攻击的系统,如 OA、VPN、Weblogic 等,从而实施进一步的攻击。
- TideFinger:潮汐指纹识别工具版,能够较为准确地识别目标网站的指纹信息,为渗透测试提供有力支持。
- WhatWeb:kali 系统中集成的工具,基于 Ruby 语言开发的开源网站指纹识别软件,可识别出网站的各种技术细节,通过命令行操作,能对单个或多个目标网站进行批量指纹识别,并生成详细的报告。
- Finger:一款红队在大量资产中进行存活探测与重点攻击系统指纹探测的工具,可帮助快速筛选出具有特定指纹特征的目标网站,提高渗透测试的效率。
- 手动识别1 :
- 查看 HTTP 响应头:重点关注 X-Powered-By、Server、Cookie 等字段,这些字段可能会泄露服务器的类型、版本以及所使用的技术框架等信息。例如,X-Powered-By 字段可能会显示服务器所使用的脚本语言及版本号。
- 分析 HTML 特征:查看 body、title、meta 等标签的内容和属性,有时网站的开发者会在这些标签中留下一些与网站技术架构相关的线索,如特定的 meta 标签可能会注明网站所使用的 CMS 名称或版本。
- 根据特殊的 CLASS 类型判断:HTML 中存在特定 CLASS 属性的某些 DIV 标签也可能暗示网站所使用的技术框架或 CSS 框架,通过分析这些标签的命名和结构,可以获取相关的指纹信息。
- 浏览器插件识别:如 Wappalyzer 插件,可分析目标网站所采用的平台构架、网站环境、服务器配置环境、JavaScript 框架、编程语言、中间件架构类型等参数,还能检测出 CMS 的类型,安装后在浏览器中访问目标网站时,即可自动显示相关的指纹信息,方便快捷地获取网站的技术细节12.
敏感文件及目录探测
- 敏感文件及目录探测的重要性
- 在渗透测试中,敏感文件及目录探测是发现潜在安全漏洞的关键步骤。许多网站可能会因为配置错误、疏忽或遗留的开发文件等原因,在服务器上暴露敏感信息。这些敏感信息一旦被攻击者获取,可能会导致严重的安全后果,如用户数据泄露、系统被入侵等。
- 常见的敏感文件和目录类型
- 配置文件:
- 像网站的数据库配置文件(例如,对于 PHP 网站,可能是 config.php 文件),其中包含数据库的用户名、密码、主机名等关键信息。如果获取到这些信息,攻击者就可以直接访问数据库,窃取或篡改其中的数据。
- 应用程序的配置文件,如 Web 服务器(Apache 或 Nginx)的配置文件(httpd.conf 或 nginx.conf),这些文件包含服务器的各种设置信息,包括虚拟主机配置、访问控制规则等,通过分析这些文件,攻击者可能会发现安全策略的漏洞。
- 备份文件:
- 网站备份文件(如.tar.gz、.zip 等格式)可能包含完整的网站源代码、数据库备份等内容。这些备份文件通常是为了方便网站恢复而创建的,但如果没有妥善保管,被攻击者发现并下载,就相当于把网站的 “钥匙” 交给了攻击者。
- 数据库备份文件(如.sql 文件)也很关键,其中存储了网站所有的数据信息,一旦泄露,会造成用户隐私数据(如用户账号、密码、订单信息等)的大规模泄露。
- 日志文件:
- 服务器的访问日志(如 access.log)和错误日志(如 error.log)记录了网站的访问情况和出现的问题。通过分析这些日志,攻击者可以了解网站的流量模式、用户访问习惯,甚至可能发现未修复的漏洞信息。
- 应用程序日志同样重要,它记录了应用程序内部的运行状态,如登录尝试失败记录等,这些信息可以被用来进行密码猜测等攻击。
- 敏感目录:
- 管理后台目录(如 /admin/、/manage/ 等)是网站管理的核心区域。如果能够访问这些目录,攻击者就可能获取对网站内容和用户数据的高级管理权限。
- 上传目录(如 /uploads/)可能存在安全隐患。如果没有对上传文件进行严格的安全检查,攻击者可能上传恶意文件(如木马程序),从而控制整个网站服务器。
- 配置文件:
- 敏感文件及目录探测的方法和工具
- 目录扫描工具:
- Dirbuster:这是一款 Java 开发的目录扫描工具,它通过暴力枚举的方式,尝试访问各种可能的目录和文件路径。可以设置扫描的起始 URL、字典文件(包含各种可能的目录和文件名)等参数。其优点是功能强大,支持多种协议,能够发现隐藏的目录和文件。
- Dirsearch:这是一个用 Python 编写的命令行工具,同样基于字典进行目录扫描。它的速度相对较快,并且可以自定义扫描的线程数、超时时间等参数。例如,可以通过设置较大的字典文件来提高发现敏感目录和文件的概率。
- 搜索引擎利用:
- 利用搜索引擎的高级搜索语法来查找敏感文件和目录。例如,在 Google 中使用 “site: 目标网站域名 inurl:admin” 可以查找目标网站中包含 “admin” 字样的 URL,这可能会帮助发现管理后台目录。
- 还可以使用专门的代码搜索引擎,如 GitHub 代码搜索引擎,查找目标网站相关的代码库。有时候,开发人员可能会不小心将包含敏感信息的代码提交到公共代码库中,通过这种方式可以发现潜在的安全隐患。
- 自动化扫描平台:
- Nessus:这是一款功能强大的漏洞扫描工具,除了可以扫描系统漏洞外,还能够对网站进行敏感文件和目录的探测。它拥有庞大的插件库,可以自动识别多种类型的敏感文件和目录,并且会根据发现的情况生成详细的风险评估报告。
- OpenVAS:作为开源的漏洞扫描工具,OpenVAS 也提供了敏感文件和目录探测的功能。它通过定期更新漏洞签名和扫描策略,能够有效地发现网站上可能存在的安全风险点,包括敏感文件的暴露和目录的不安全访问设置。
- 目录扫描工具:
- 防范敏感文件及目录泄露的措施
- 权限控制和访问限制:
- 对服务器上的文件和目录设置严格的访问权限。例如,敏感文件应该只有特定的管理员账户可以访问,其他用户和进程应该被严格限制。对于管理后台目录,应该通过 IP 地址限制、身份验证等多种方式进行访问控制。
- 使用 Web 应用防火墙(WAF)来阻止非法的目录访问请求。WAF 可以根据预设的规则,识别和拦截试图访问敏感目录的恶意流量。
- 安全的配置管理:
- 在开发和部署过程中,确保配置文件中不包含明文的敏感信息。可以使用环境变量、加密存储等方式来保护关键的配置参数,如数据库密码。
- 定期清理和备份服务器上的文件。删除不必要的备份文件和临时文件,确保备份文件存储在安全的位置,并且只有经过授权的人员可以访问。
- 安全意识培训:
- 对开发人员和运维人员进行安全意识培训,让他们了解敏感文件和目录泄露的风险。例如,培训他们如何正确地配置服务器访问权限,避免在代码中硬编码敏感信息,以及如何识别和处理可能导致文件泄露的安全漏洞。
- 权限控制和访问限制:
网站指纹识别和敏感文件及目录探测有哪些区别?
网站指纹识别和敏感文件及目录探测主要有以下区别:
目的不同
- 网站指纹识别:旨在通过分析网站的各种特征,如服务器类型、脚本语言、CMS 类型等,精准地确定网站所使用的技术栈和框架,从而帮助安全研究人员快速了解目标网站的基本信息,为后续查找与其相关的已知漏洞等安全评估工作提供基础145.
- 敏感文件及目录探测:主要是为了发现网站上可能存在的敏感信息、易受攻击的文件和目录,例如配置文件、备份文件、版本控制系统文件、管理后台目录等,这些一旦被攻击者获取,可能会导致严重的安全后果,如数据泄露、系统被入侵等125.
识别对象不同
- 网站指纹识别:识别的是网站整体的技术架构和特征信息,包括服务器软件及版本、脚本类型、数据库类型、CMS 类型及版本等,侧重于对网站所采用的技术框架和平台的识别145.
- 敏感文件及目录探测:聚焦于网站中的具体文件和目录,如常见的.git、.svn 等版本控制文件,.rar、.zip、.bak 等备份文件,以及 /admin/、/uploads/ 等敏感目录,关注的是这些特定资源的存在与否及位置125.
探测方法不同
- 网站指纹识别:
- 在线工具识别:通过访问特定的在线指纹识别网站,输入目标网址,即可获取网站的相关技术信息,如 WhatWeb、云悉指纹识别等145.
- 工具识别:使用专门的工具,如 Ehole、TideFinger 等,在本地运行对目标网站进行扫描和识别4.
- 浏览器插件识别:安装 Wappalyzer 等浏览器插件,在访问目标网站时,插件会自动分析并显示网站的技术架构信息145.
- 手动识别:通过查看网页源码、HTTP 响应头中的特定字段,如 X-Powered-By、Cookie 等,以及分析 HTML 标签的内容和属性等来判断网站的技术特征4.
- 敏感文件及目录探测:
- 目录扫描工具:利用 Dirbuster、Dirsearch、Dirmap 等工具,通过暴力枚举的方式,尝试访问各种可能的目录和文件路径,根据返回的状态码等信息来判断敏感文件和目录是否存在135.
- 搜索引擎利用:借助搜索引擎的高级搜索语法,查找可能暴露敏感信息的文件和目录,或者利用代码搜索引擎查找目标网站相关的代码库,看是否有开发者不小心泄露的敏感信息1.
风险和影响不同
- 网站指纹识别:一般情况下,单纯的网站指纹识别行为本身对网站的正常运行和数据安全不会造成直接的危害,但如果被恶意攻击者利用,可能会根据识别出的指纹信息,进一步查找和利用相关漏洞来攻击网站。
- 敏感文件及目录探测:如果敏感文件及目录被成功探测到并被攻击者获取,会直接导致敏感信息泄露,如用户账号密码、数据库连接信息等,进而使网站面临被篡改、数据被窃取或破坏等严重安全风险,对网站及其用户的利益造成极大损害
网站waf识别
网站 WAF(Web Application Firewall,Web 应用防火墙)识别是指通过一系列方法和工具,来判断目标网站是否部署了 WAF 以及确定所部署的 WAF 的类型和相关信息,以下是具体介绍:
常见的 WAF 类型
- 软件型 WAF:以软件的形式安装在服务器上,能够直接检测服务器上是否存在 webshell、是否有文件被创建等,如 ModSecurity、Naxsi、ShareWAF、安全狗等13.
- 硬件型 WAF:以独立硬件设备的形态存在,部署在链路中,支持透明桥接模式、旁路模式、反向代理等多种部署方式,可拦截恶意流量,性能好、功能全面,但价格较贵,国内的绿盟、安恒、启明星辰等厂商生产的 WAF 多属此类13.
- 云 WAF:一般以反向代理的形式工作,通过配置 NS 记录或 CNAME 记录,使对网址的请求报文优先经过 WAF 主机过滤后,再将无害的请求报文发送给实际网站服务器,如阿里云、腾讯云、深信服云 WAF、Imperva WAF 等1.
- 网站系统内置的 WAF:直接镶嵌在网站代码中,如对输入参数强制类型转换、合法性检测,以及在关键函数执行前对输入进行检测等1.
识别方法及工具
- 使用自动化工具:
- Wafw00f:能够快速准确地检测出指定网站所使用的 WAF 类型,支持通过代理扫描、多种输入输出格式,还可指定要搜索的 WAF 类型等,使用时只需指定目标网站的域名即可,如
wafw00f wise.com
. - IdentY Waf:也是一款易用且强大的 WAF 识别工具,与 Wafw00f 类似,输入目标网址等相关参数后,即可对网站的 WAF 进行识别.
- WhatWaf:通过发送特定的请求并分析响应来识别 WAF,具有较高的准确性和较丰富的识别指纹库,能识别多种常见和不常见的 WAF 产品.
- Wafw00f:能够快速准确地检测出指定网站所使用的 WAF 类型,支持通过代理扫描、多种输入输出格式,还可指定要搜索的 WAF 类型等,使用时只需指定目标网站的域名即可,如
- 手工检测 :
- 添加测试语句:在目标网站的 URL 后面直接加上基础的 SQL 测试语句,如
union
、and 1=1
等,如果网站返回特定的拦截页面或错误信息,可能表示存在 WAF。 - 分析响应头:查看 HTTP 响应头中的
Server
、X-Powered-By
等字段,有时其中会包含 WAF 的相关信息。 - 观察页面行为:尝试输入一些特殊字符或非法的输入值,若网站对输入进行了严格的过滤和拦截,并给出特定的提示信息,可推测存在 WAF 防护。
- 添加测试语句:在目标网站的 URL 后面直接加上基础的 SQL 测试语句,如
- 利用搜索引擎和网络信息:通过搜索引擎查找目标网站是否有公开披露的 WAF 信息,或者查找网站使用的服务器、CDN 等相关信息,因为某些服务器或 CDN 可能默认集成了 WAF 功能。
- 查看历史漏洞报告和安全公告:查询目标网站或其所属组织是否曾有过安全漏洞被披露,其中可能会提及是否使用了 WAF 以及 WAF 的类型等信息。
相关文章:
【渗透测试】信息收集二
其他信息收集 在渗透测试中,历史漏洞信息收集是一项重要的工作,以下是相关介绍: 历史漏洞信息收集的重要性 提高效率:通过收集目标系统或应用程序的历史漏洞信息,可以快速定位可能存在的安全问题,避免重复…...
前端三大框架 Vue、React 和 Angular 的市场占比分析
一、引言 ?? 随着前端技术的迅速发展,Vue.js、React 和 Angular 已成为全球最受欢迎的三大前端框架。在国内外,不同的框架在市场中的占比和流行程度存在显著差异。本文将从全球和中国市场的角度,对这三大框架的市场占比进行分析࿰…...
Gitlab服务管理和仓库项目权限管理
Gitlab服务管理 gitlab-ctl start # 启动所有 gitlab 组件; gitlab-ctl stop # 停止所有 gitlab 组件; gitlab-ctl restart # 重启所有 gitlab 组件; gitlab-ctl status …...
MySQL ON DUPLICATE KEY UPDATE影响行数
目录 分析为什么Updates返回7 总结 数据库更新日志如下 insertOrUpdateList|> Preparing: INSERT INTO clue_user_tag (vuid, tag_id, tag_type, content) VALUES (?, ?, ?, ?) , (?, ?, ?, ?) , (?, ?, ?, ?) , (?, ?, ?, ?) ON DUPLICATE KEY UPDATE …...
美团2024年秋招第一场笔试【前端移动端】
美团2024年秋招第一场笔试【前端&移动端】 2024/12/12 1.在一个长度为28的数组中删除第5个元素时(元素序号:1~28),需要向前移动(23)个元素。 2.如下图一个树型结构,其结点E在树的中序遍历…...
【EXCEL】 获取多列中 不为空的那一个数据
从多个表格筛选出来的上班时间是下表这样的 我要把他们放在同一列,这样方便后续处理,合并列输入下面这个公式即可 日期不加 TEXT() 函数 转日期格式;将得到是一串数字 TEXT(TEXTJOIN(", ",TRUE,B2:F2),&qu…...
Qt 开发笔记2
1> 样式表加载 一定要在Ui 初始化之前调用, 之后调用会不生效。 2> 设置QlineEdit输入框 具体四周的间距: setTextMargins(m_nLeftTextMargin, m_nTopTextMargin, m_nRightTextMargin, m_nBottomTextMargin);3> 设置背景图(平滑不…...
R学习——数据框
目录 1数据框的合并 2数据框的访问 2.1 通过索引[] 2.2符号$访问 2.3 attach访问 2.4 with访问 1数据框的合并 当每个内容存储为单独的向量,data.frame可以进行这些内容单独数据框合并。 2数据框的访问 2.1 通过索引[] [i]输出对应的列 [i,]输出对应的行 …...
深入详解人工智能机器学习常见算法中的K-means聚类
目录 引言 1. K-means聚类的基本概念 1.1 K-means聚类的定义 1.2 K-means聚类的核心思想 1.3 K-means聚类的目标函数 2. K-means聚类的核心原理 2.1 初始化 2.2 分配 2.3 更新 2.4 迭代 3. K-means聚类的具体实现 3.1 K-means聚类的算法流程 3.2 K-means聚类的Pyt…...
TDengine SpringBoot操作
TDengine与Spring Boot的结合可以为开发者提供一个高性能、分布式的物联网、工业大数据处理平台,同时利用Spring Boot的简化配置和快速开发特性。以下是对TDengine与Spring Boot集成的详细解析: 一、TDengine简介 TDengine是由涛思数据开发的一款高性能…...
【sgFileLink】自定义组件:基于el-link、el-icon标签构建文件超链接组件,支持垃圾桶删除、点击预览视频/音频/图片/PDF格式文件
sgFileLink源代码 <template><div :class"$options.name"><el-link click.stop"clickFile(data)"><img :src"getSrc(data)" /><span>{{ getFileNameAndSize(data) }}</span></el-link><el-linkcl…...
C语言实验 函数一
时间:2024.12.14 6-1 弹球距离 double dist (double h,double p) {double sum = h,height;height = h*p;while(height>=TOL){sum += height * 2; //上行下行都算,所以是两倍的距离。height *=p;}return sum; } 6-2 使用函数输出一个整数的逆序数 错误代码:运行超…...
惠普Laser Jet MFP M437nda复印机成像装置严重不足及更换传输卷故障解决方法
惠普Laser Jet MFP M437nda复印机成像装置严重不足及更换传输卷故障解决方法,记录维修那点事儿,普通维修工的日常维修点滴; 惠普Laser Jet MFP M437nda复印机成像装置严重不足维修方法 如果复印及打印的效果没有问题的情况下我们也可以不更换套鼓及显影剂,那么不更换套鼓及…...
委托(Delegate)和事件(Event)-(下篇)
委托(Delegate)与事件(Event)-(上篇)-CSDN博客 上一篇内容! 一、创建非静态委托 在C#中,使用非静态委托意味着将委托绑定到类的实例方法上,而不是静态方法。这允许你通过委托调用特定对象上的方法&am…...
ios 开发配置蓝牙
如果使用了蓝牙功能, 又没有配置, 会出现以下错误: This app has crashed because it attempted to access privacy-sensitive data without a usage description. The apps Info.plist must contain an NSBluetoothAlwaysUsageDescription key with a string value explaini…...
JVM 栈帧结构详解
在 Java 虚拟机(JVM)中,栈帧(Stack Frame)是用于支持方法调用和方法执行的关键数据结构。每个方法从调用开始到执行完成,都对应着一个栈帧在虚拟机栈中从入栈到出栈的过程。本文将详细介绍 JVM 栈帧的结构及…...
HTML和JavaScript实现商品购物系统
下面是一个更全面的商品购物系统示例,包含新增商品、商品的增加删除以及结算找零的功能。这个系统使用HTML和JavaScript实现。 1.功能说明: 这个应用程序使用纯HTML和JavaScript实现。 包含一个商品列表和一个购物车区域。商品列表中有几个示例商品&a…...
(长期更新)《零基础入门 ArcGIS(ArcMap) 》实验三----学校选址与路径规划(超超超详细!!!)
目录 实验三 学校选址与道路规划 3.1 实验内容及目的 3.1.1 实验内容 3.1.2 实验目的 3.2 实验方案 3.3 操作流程 3.3.1 环境设置 3.3.2 地势分析 (1)提取坡度: (2)重分类: 3.3.3 学校点分析 (1)欧氏距离: (2)重分类: 3.3.4 娱乐场所点分析 (1)欧氏距离…...
ip_done
文章目录 路由结论 IP分片 数据链路层重谈Mac地址MAC帧报头局域网的通信原理MSS,以及MAC帧对上层的影响ARP协议 1.公司是不是这样呢? 类似的要给运营商交钱,构建公司的子网,具有公司级别的入口路由器 2.为什么要这样呢?? IP地…...
Mysql体系架构剖析——岁月云实战笔记
1 体系架构 理论内容阅读了mysql体系架构剖析,其他的根据岁月云的实战进行记录。 1.1 连接层 mysql最上层为连接服务,引入线程池,允许多台客户端连接,主要工作:连接处理、授权认证、安全防护、管理连接等。 连接处理&a…...
【卷积神经网络】AlexNet实践
构建模型 模版搭建 # 定义一个AlexNet模型类def __init__(self):# 调用父类的构造函数(如果继承自nn.Module的话)super(AlexNet, self).__init__()# ReLU激活函数self.ReLU nn.ReLU()# 卷积层1:输入1个通道(灰度图)&a…...
LF CRLF
这个提示的含义是:Git 检测到你当前的 file3.txt 文件中使用了 LF(换行符,Line Feed,\n) 作为换行符,但在你系统的 Git 配置中,指定要将其转换为 CRLF(回车换行,Carriage…...
Python学习(二)—— 基础语法(上)
目录 一,表达式和常量和变量 1.1 表达式 1.2 变量 1.3 动态类型特性 1.4 输入 二,运算符 2.1 算术运算符 2.2 关系运算符 2.3 逻辑运算符 2.4 赋值运算符 2.5 练习 三,语句 3.1 条件语句 3.2 while循环 3.3 for循环 四&#…...
科研绘图系列:R语言绘制网络图和密度分布图(network density plot)
禁止商业或二改转载,仅供自学使用,侵权必究,如需截取部分内容请后台联系作者! 文章目录 介绍加载R包数据下载图1图2图3图4图5图6图7图8系统信息参考介绍 R语言绘制网络图和密度分布图(network & density plot) 加载R包 library(magrittr) library(dplyr) library(…...
python解题之寻找最大的葫芦
问题描述 问题描述 在一场经典的德州扑克游戏中,有一种牌型叫做“葫芦”。“葫芦”由五张牌组成,其中包括三张相同牌面值的牌 �a 和另外两张相同牌面值的牌 �b。如果两个人同时拥有“葫芦”,我们会优先比较牌 &#…...
openwrt安装tailscale
1. 下载 进入tailscale的github仓库复制最新版本的链接:点击跳转 wget https://github.com/adyanth/openwrt-tailscale-enabler/releases/download/v1.36.1-fb2f6cf-autoupdate/openwrt-tailscale-enabler-v1.36.1-fb2f6cf-autoupdate.tgz2.解压缩 tar x -zvC / …...
基于物联网的智能插座云平台 WIFI云平台MQTT协议
功能介绍 功能描述: STM32单片机为控制核心 LCD1602液晶显示当前时间温度 开启时间 关闭时间 按键设置开启时间/关闭时间,温度报警上限 到开启时间,继电器自动打开,到关闭时间,自动关闭 通过DS18B20温度传感器获…...
MySQL 事务
概念介绍 事务就是一组DML语句组成,这些语句在逻辑上存在相关性,这一组 DML 语句要么全部成功,要么全部失败,是一个整体。MySQL 提供一种机制,保证我们达到这样的效果。 事务就是要做的或所做的事情,主要用…...
消息中间件面试题-参考回答
消息中间件面试题-参考回答 面试官:RabbitMQ-如何保证消息不丢失 候选人: 嗯!我们当时MYSQL和Redis的数据双写一致性就是采用RabbitMQ实现同步的,这里面就要求了消息的高可用性,我们要保证消息的不丢失。主要从三个层面…...
解决 MyBatis 中空字符串与数字比较引发的条件判断错误
问题复现 假设你在 MyBatis 的 XML 配置中使用了如下代码: <if test"isCollect ! null"><choose><when test"isCollect 1">AND exists(select 1 from file_table imgfile2 where task.IMAGE_SEQimgfile2.IMAGE_SEQ and im…...
【ETCD】【源码阅读】深入解析 etcd 的 `EtcdServer.Start` 函数
深入解析 etcd 的 EtcdServer.Start 函数 在 etcd 的代码中,EtcdServer.Start 是一个关键方法,用于初始化并启动服务器以便处理请求。本文将从源码的角度逐步分析此函数的每一步操作。 函数签名及注释 // Start performs any initialization of the Se…...
嵌入式驱动开发详解16(音频驱动开发)
文章目录 前言WM8960简介I2S协议接口说明 SAI音频接口简介驱动框架简介设备树配置内核使能声卡设置与测试 后续参考文献 前言 该专栏主要是讲解嵌入式相关的驱动开发,但是由于ALSA驱动框架过于复杂,实现音频编解码芯片的驱动不是一个人能完成的…...
【数据结构——查找】二分查找(头歌实践教学平台习题)【合集】
目录😋 任务描述 相关知识 测试说明 我的通关代码: 测试结果: 任务描述 本关任务:实现二分查找的算法。 相关知识 为了完成本关任务,你需要掌握:1.根据键盘输入的一组有序数据建立顺序表,2.顺序表的输…...
探索云原生数据库 PolarDB
引言 在云计算时代,数据库的重要性不言而喻。随着企业数字化转型的加速,对数据库的性能、可靠性和灵活性的要求也越来越高。阿里云推出的云原生数据库 PolarDB,正是为了满足这些需求而设计的一款高性能、兼容性强、弹性灵活的关系型数据库产品。本文将详细介绍 PolarDB 的特…...
OGG FOR MYSQL同步DDL
以下实验测试OGG FOR mysql 同步DDL, OGG 21.3 MYSQL 8.0.27 --创建测试数据 create table oggddl_20241201 (oid int primary key ,oname varchar(10)); create table oggddl_20241202 (oid int primary key ,oname varchar(10)); create table oggddl_20241203…...
【CAN】asc报文格式文件合并(python版)
目录 一、简介二、合并asc格式报文1、准备多个asc文件2、根据时间合并asc文件3、结果 三、总结四、参考 一、简介 CAN通信:CAN(Controller Area Network)是一种多主方式的串行通讯总线。基本设计规范要求有高位速率、高抗电磁干扰性…...
C++之STL的map容器
map map的实现方式 set是一个有序的关联容器,是基于平衡二叉搜索树(红黑树)实现的,元素是有序的 map的用法 #include <iostream> #include <map> using namespace std;const int ADDSIZE 20; int main() {map<int, int> m;cout &…...
基于卷积神经网络的图像二分类检测模型训练与推理实现教程 | 幽络源
前言 对于本教程,说白了,就是期望能通过一个程序判断一张图片是否为某个物体,或者说判断一张图片是否为某个缺陷。因为本教程是针对二分类问题,因此主要处理 是 与 不是 的问题,比如我的模型是判断一张图片是否为苹果…...
react-dnd 拖拽事件与输入框的文本选中冲突
问题描述 当我们使用拖拽库的时候,往往会遇到拖拽的一个元素他的子孙元素有输入框类型的dom节点,当拖拽的事件绑定在该元素身上时候,发现子孙的输入框不能进行文本选中了,会按住鼠标去选中文本的时候会触发拖拽 实际的效果&…...
‘Close Project‘ is not available while IDEA is updating indexes的解决
XXX is not available while IDEA is updating indexes IDEA 1.Remove from Recent Projects 2.重新 Open工程即可...
如何解决samba服务器共享文件夹不能粘贴文件
sudo vim /etc/samba/smb.conf在samba的配置文件中增加一个选项 writable yes重启Samba服务以使更改生效: sudo service smbd restart...
Three.js入门-材质详解,构建视觉真实感的核心
Three.js 材质详解:构建视觉真实感的核心 Three.js 是一个强大的 3D JavaScript 库,它为开发者提供了丰富的工具来创建和渲染逼真的三维场景。在这些工具中,材质是一个非常重要的组成部分。材质定义了物体表面的外观特性,例如颜色…...
GitHub、Google等镜像加速地址收集
GitHub、Google等镜像加速地址收集 摘要 本文用于收集GitHub、Google等镜像/加速地址。 GitHub GitHub加速地址一览 fastgithub Https://www.fastgithub.com/(推荐) 站源地址缓存github.comwww.fastgithub.com无raw.githubusercontent.com无github.gi…...
五、网络层:控制平面,《计算机网络(自顶向下方法 第7版,James F.Kurose,Keith W.Ross)》
目录 一、导论 二、路由选择算法 2.1 路由(route)的概念 2.2 网络的图抽象 2.2.1 边和路由的代价 2.2.2 最优化原则 2.3 路由的原则 2.4 路由选择算法的分类 2.5 link state 算法 2.5.1 LS路由工作过程 2.5.2 链路状态路由选择(lin…...
Fix the “The repository no longer has a Release file” error on Ubuntu 23.04
背景信息 在Ubuntu 23.04操作系统上执行apt-get update命令更新操作系统时,得到以下错误 登录后复制 # apt-get update Ign:1 http://mirrors.aliyun.com/ubuntu lunar InRelease Ign:2 http://mirrors.aliyun.com/ubuntu lunar-updates InRelease Ign:3 http://mir…...
开源 AI 智能名片 S2B2C 商城小程序对私域流量运营的全方位助力
在当今竞争激烈的商业环境中,私域流量运营已成为企业实现可持续发展和提升竞争力的关键策略之一。开源 AI 智能名片 S2B2C 商城小程序凭借其独特的功能与特性,从多个维度为私域流量运营提供了强有力的支持与推动,以下将详细阐述其在各个方面的…...
Java Exception解决方法
Java中的Exception是所有异常的基类,它指的是程序在执行过程中发生的非严重错误,比如空指针异常、数组越界异常等。 为了解决Java中的Exception,从以下步骤进行排查解决: 阅读错误信息:查看异常的完整堆栈跟踪信息&a…...
HCIA-Access V2.5_2_2_2网络通信基础_IP编址与路由
网络层数据封装 首先IP地址封装在网络层,它用于标识一台网络设备,其中IP地址分为两个部分,网络地址和主机地址,通过我们采用点分十进制的形式进行表示。 IP地址分类 对IP地址而言,它细分为五类,A,B,C,D,E,…...
JeecgBoot passwordChange 任意用户密码重置漏洞复现
0x01 产品简介 Jeecg Boot是一个企业级低代码开发平台,基于前后端分离的架构,融合了SpringBoot、SpringCloud、Ant Design、Vue、Mybatis-plus、Shiro、JWT等多种主流技术,旨在帮助企业快速构建各种应用系统,提高开发效率,降低开发成本。采用最新主流的前后分离框架,使得…...
7-8 整型关键字的散列映射
给定一系列整型关键字和素数 p,用除留余数法定义的散列函数 H(key)key%p 将关键字映射到长度为 p 的散列表中。用线性探测法解决冲突。 输入格式: 输入第一行首先给出两个正整数 n(≤1000)和 p(≥n 的最小素数)&…...