热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

vsaspx无法识别的@block类型_python安全之CMS指纹识别

愿世间美好与你环环相扣--2020.8.13晚我与春风皆过客,你携秋水揽星河。不问出处前言昨晚谈及安全从业人员的编程能力,估计很多人立马就会想到pyth
6608f3e0e42c7e937851f38a77e05d47.png

愿世间美好与你环环相扣 --2020.8.13晚

62e687e59a307dbfe539d375c1460ba3.png

我与春风皆过客,你携秋水揽星河。

不问出处

8c554a8c6c6d5455c2d365b2b6e5afdf.png

3745e72a37d7e1e26b7bc29444aedd7a.png

昨晚谈及安全从业人员的编程能力,估计很多人立马就会想到 python 这款解释型语言了。丰富的库模块,快速的脚本开发优势使得其成为每一个信安从业者的编程语言首选。

业界的大佬们总说,代码能力的高低就是菜鸟和高手的分水岭,在一些CTF竞赛,红蓝对抗中这种区别就会愈加明显。

其实说白了,计算机语言就是一个辅助工具,没有孰强孰弱,看它运用在什么场合而已,人类使用计算机语言告诉机器代替人工,使手动变为自动,使麻烦变得便捷,使无序变得有序,让人类的 “懒惰” 变得有的放矢。。。

ff89f6b540b49d4a49724367eb9764a5.png

3745e72a37d7e1e26b7bc29444aedd7a.png

啥是CMS

CMS(Content Management System内容管理系统)又称整站系统或文章系统。常见的整站系统如下:

  • php类CMS系统:dedecms/帝国cms/php168/phpcms/discus

  • ASP类CMS 系统:zblog/KingCMS

  • .NET类CMS 系统:EoyooCMS

  • 国外著名CMS系统:joomla/WordPress/magento/drupal

整站系统分析主要从一下四方面入手:

  • 服务器类型(Windows,Linux )

  • 网站容器(Apache,IIS,Nginx,Tomcat 等)

  • 脚本类型(php, jsp, asp, aspx 等)

  • 数据库类型(MySQL,MSSQL,Oracle,Access,SQLserver 等)

啥是CMS指纹识别

像人类的指纹一样,每个人的指纹都是独一无二的,好比世界上没有两片一样的叶子一样,CMS也有其各自的特征。

应用程序一般在 html , js , css 等文件中多多少少会包含一些特征码,比如 Worldpress 在 robots.txt 文件中会包含 wp-admin , 首页 index.php 会包含 generator=wordpress 3.xx

这些特征就是这个 CMS 的指纹,那么当碰到其他网站存在此特征时,就可以快速识别出该 CMS,所以叫做指纹识别。

3745e72a37d7e1e26b7bc29444aedd7a.png

特定文件的MD5值

一些网站的特定图片文件、js文件、CSS等静态文件,如favicon.ico、css、logo.ico、js等文件一般不会修改,通过爬虫对这些文件进行抓取并比对md5值,如果和规则库中的Md5一致则说明是同一CMS。这种方式速度比较快,误报率相对低一些,但也不排除有些二次开发的CMS会修改这些文件。

正常页面和错误页面中包含的关键字

先访问首页或特定页面如robots.txt等,通过正则的方式去匹配某些关键字,如Powered by Discuz、dedecms等。

或者可以构造错误页面,根据报错信息来判断使用的CMS或者中间件信息,比较常见的如tomcat的报错页面。

响应头信息的关键字匹配

响应头字段的解读可以翻看前面的文章《web安全之HTTP基础》

根据网站 response 返回头信息进行关键字匹配,whatweb和Wappalyzer就是通过banner 信息来快速识别指纹,之前 fofa 的 web 指纹库很多都是使用的这种方法,效率非常高,基本请求一次就可以,但搜集这些规则可能会耗时很长。而且这些 banner 信息有些很容易被改掉。

根据 response header 一般有以下几种识别方式:

  • 查看 http 响应报头的 X-Powered-By 字段(返回服务器的类型和版本)来识别;

  • 根据 COOKIEs 来进行判断,比如一些 waf 会在返回头中包含一些信息,如360wzws、Safedog、yunsuo 等;

  • 根据 header 中的 Server 信息(返回服务器所使用的 Web 服务器的名称)来判断,如 DVRDVS-Webs、yunjiasu-nginx、Mod_Security、nginx-wallarm 等;

  • 根据 WWW-Authenticate 进行判断,一些路由交换设备可能存在这个字段,如NETCORE、huawei、h3c 等设备。

部分 URL 中包含关键字

通过规则库去探测是否有相应目录,或者根据爬虫结果对链接 url 进行分析,或者对robots.txt 文件中目录进行检测等等方式,通过url地址来判别是否使用了某 CMS,比如wordpress 默认存在 wp-includes和wp-admin目录,织梦默认管理后台为 dede 目录,solr 平台可能使用 /solr 目录,weblogic 可能使用 wls-wsat 目录等。

开发语言的识别

web开发语言一般常见的有 PHP、jsp、aspx、asp 等,常见的识别方式有:

① 通过爬虫获取动态链接进行直接判断是比较简便的方法。

asp判别规则如下 ]*?href=('|")[^http][^>]*?\.asp(\?|\#|\1) ,其他语言可替换相应asp即可。

② 通过 X-Powered-By(返回服务器类型和版本) 进行识别

比较常见的有 X-Powered-By: ASP.NET 或者X-Powered-By: PHP/7.1.8

③ 通过 Set-COOKIE 进行识别

这种方法比较常见也很快捷,比如 Set-COOKIE 中包含 PHPSSIONID 说明是 php、包含 JSESSIONID 说明是 java、包含 ASP.NET_SessionId 说明是 aspx 等。

3745e72a37d7e1e26b7bc29444aedd7a.png

御剑 Web 指纹识别,WhatWeb,椰树,轻量 web 指纹识别,fofa

浏览器插件:Wappalyzer(Wappalyzer 是一款能够分析目标网站所采用的平台构架、网站环境、服务器配置环境、Javascript 框架、编程语言等参数的 chrome 网站技术分析插件。)

在线查询网站

BugScaner: http://whatweb.bugscaner.com/look

云悉指纹: https://www.yunsee.cn/

3745e72a37d7e1e26b7bc29444aedd7a.png

直接调用api

这里直接调用人家一个在线 CMS 指纹识别网站的 API。

http://whatweb.bugscaner.com/

449fadb501365df7f40b034b51383620.png

import requestsimport hashlibimport sysimport jsonimport zlibimport urllib3urllib3.disable_warnings()# 调用 bugscanner 的api接口def whatweb(url): res = requests.get(url, verify=False) whatweb_dict = {"url": res.url, "text": res.text, "headers": dict(res.headers)} whatweb_dict = json.dumps(whatweb_dict) # 将 python 对象转换为 json 格式 whatweb_dict = zlib.compress(whatweb_dict.encode('utf-8')) data = {"info": whatweb_dict} return requests.post("http://whatweb.bugscaner.com/api.go", files=data)if __name__ == '__main__': url = input("请输入要识别的URL: ") if "http://" not in url: if "https://" not in url: url = 'http://' + url res = whatweb(url)    print("今日识别剩余次数")    print(res.json()["X-RateLimit-Remaining"]))    print("识别结果")    print(res.json()['CMS'])

C:\Users\Lin\Desktop>python3 demo1.py请输入要识别的URL: aliyun.bugscaner.com今日识别剩余次数1499识别结果['DedeCMS']

有时会因为网络问题导致网页的编码格式出现问题,导致无法读取 json 。

a2ec3a71ca3c336f7ae1a05662b7cc9b.png

requests模块+字典一把梭

这里的识别方式就知识采用特殊页面的MD5值来判断 CMS 类型了。

字典的话可以去 GitHub 找,或者有零组资料库的也可以去直接下载下来。

import requestsimport hashlibimport urllib3urllib3.disable_warnings()'''该脚本指纹识别的原理只是基于对特定页面MD5值的识别判断而已'''data = [] # cms 指纹列表# 将文件中的指纹按字典格式读取保存在 data 列表中def cmslist(): with open('cms.txt', 'r') as f: for line in f: string = line.strip().split('|') ls_data = {} # 将一个指纹作为字典存储 if len(string) == 3: ls_data['url'] = string[0] ls_data['name'] = string[1] ls_data['md5'] = string[2] data.append(ls_data)# 识别CMSdef cms(detect_url): for item in data: url = detect_url + item['url'] header = { 'User-Agent': 'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:78.0) Gecko/20100101 Firefox/78.0' } try: res = requests.get(url=url, headers=header, timeout=3, verify=False) except: pass # print(res.url) if res.status_code == 200: filemd5 = hashlib.md5(res.content).hexdigest() if filemd5 == item['md5']: print('该网站的CMS类型是:', item['name']) breakif __name__ == '__main__': url = input("请输入待检测的URL:") if 'http://' not in url: if 'https://' not in url: url = 'http://' + url if url[-1] == '/': # 取出URL末尾的'/' url = url[:-1] cmslist() cms(url)

C:\Users\Lin\Desktop>python3 demo2.py请输入待检测的URL:aliyun.bugscaner.com/该网站的CMS类型是:dedecms3745e72a37d7e1e26b7bc29444aedd7a.png

我是匠心,一个在清流旁默默磨剑的匠人,期待那一天能利刃出鞘,仗剑走江湖。

ed8cf791ff4ef79e36cb4820c16dd6cd.png




推荐阅读
  • Web开发框架概览:Java与JavaScript技术及框架综述
    Web开发涉及服务器端和客户端的协同工作。在服务器端,Java是一种优秀的编程语言,适用于构建各种功能模块,如通过Servlet实现特定服务。客户端则主要依赖HTML进行内容展示,同时借助JavaScript增强交互性和动态效果。此外,现代Web开发还广泛使用各种框架和库,如Spring Boot、React和Vue.js,以提高开发效率和应用性能。 ... [详细]
  • 服务器部署中的安全策略实践与优化
    服务器部署中的安全策略实践与优化 ... [详细]
  • 在 Axublog 1.1.0 版本的 `c_login.php` 文件中发现了一个严重的 SQL 注入漏洞。该漏洞允许攻击者通过操纵登录请求中的参数,注入恶意 SQL 代码,从而可能获取敏感信息或对数据库进行未授权操作。建议用户尽快更新到最新版本并采取相应的安全措施以防止潜在的风险。 ... [详细]
  • 数字图书馆近期展出了一批精选的Linux经典著作,这些书籍虽然部分较为陈旧,但依然具有重要的参考价值。如需转载相关内容,请务必注明来源:小文论坛(http://www.xiaowenbbs.com)。 ... [详细]
  • Spring框架的核心组件与架构解析 ... [详细]
  • 2016-2017学年《网络安全实战》第三次作业
    2016-2017学年《网络安全实战》第三次作业总结了教材中关于网络信息收集技术的内容。本章主要探讨了网络踩点、网络扫描和网络查点三个关键步骤。其中,网络踩点旨在通过公开渠道收集目标信息,为后续的安全测试奠定基础,而不涉及实际的入侵行为。 ... [详细]
  • 为了向用户提供虚拟应用程序,通常会在基础架构中部署StoreFront或Web Interface。为了确保安全的远程访问,通常需要在DMZ中配置Secure Gateway或Access Gateway。本文详细对比了这两种界面工具的功能特性,包括用户管理、安全性、性能优化等方面,为企业选择合适的解决方案提供了全面的参考。 ... [详细]
  • 在Conda环境中高效配置并安装PyTorch和TensorFlow GPU版的方法如下:首先,创建一个新的Conda环境以避免与基础环境发生冲突,例如使用 `conda create -n pytorch_gpu python=3.7` 命令。接着,激活该环境,确保所有依赖项都正确安装。此外,建议在安装过程中指定CUDA版本,以确保与GPU兼容性。通过这些步骤,可以确保PyTorch和TensorFlow GPU版的顺利安装和运行。 ... [详细]
  • Swoole加密机制的安全性分析与破解可能性探讨
    本文深入分析了Swoole框架的加密机制,探讨了其在实际应用中的安全性,并评估了潜在的破解可能性。研究结果表明,尽管Swoole的加密算法在大多数情况下能够提供有效的安全保护,但在特定场景下仍存在被攻击的风险。文章还提出了一些改进措施,以增强系统的整体安全性。 ... [详细]
  • 题目要求解决一个有趣的编程挑战,即计算由四个自然数 \( p, q, r, s \) 组成的分数序列的和。具体来说,需要编写一个 C# 程序来处理这些自然数,并通过特定的数学运算得出最终结果。该任务不仅考验编程技能,还涉及对数学公式的理解和应用。 ... [详细]
  • 基于试题数据的智能化管理平台采用Java语言进行面向对象编程,旨在构建一个高效的试题信息管理系统。该系统在JDK 6.0和MyEclipse 10.6环境下开发,通过优化试题数据管理和处理流程,提升系统的稳定性和用户体验。平台支持多用户操作,具备强大的数据处理能力和灵活的扩展性,适用于各类教育机构和考试组织。 ... [详细]
  • 针对MySQL Undo空间满载及Oracle Undo表空间溢出的问题,本文详细探讨了其原因与解决策略。首先,通过启动SQL*Plus并以SYS用户身份登录数据库,查询当前数据库的UNDO表空间名称,确认当前状态。接着,分析导致Undo空间满载的常见原因,如长时间运行的事务、频繁的更新操作等,并提出相应的解决方案,包括调整Undo表空间大小、优化事务管理、定期清理历史数据等。最后,结合实际案例,提供具体的实施步骤和注意事项,帮助DBA有效应对这些问题。 ... [详细]
  • 提升 Kubernetes 集群管理效率的七大专业工具
    Kubernetes 在云原生环境中的应用日益广泛,然而集群管理的复杂性也随之增加。为了提高管理效率,本文推荐了七款专业工具,这些工具不仅能够简化日常操作,还能提升系统的稳定性和安全性。从自动化部署到监控和故障排查,这些工具覆盖了集群管理的各个方面,帮助管理员更好地应对挑战。 ... [详细]
  • Navicat Premium 12 连接 Oracle 数据库时出现 ORA-03113 错误:通信通道上的文件结束。进程ID:3344,会话ID:244,序列号:56707
    在使用 Navicat Premium 12 连接 Oracle 数据库时,遇到了 ORA-03113 错误,提示“通信通道上的文件结束”。具体错误信息显示进程ID为3344,会话ID为244,序列号为56707。经初步分析,该错误可能是由于数据库曾被强制关闭,导致文件状态不一致所致。通过关闭并重新建立数据库连接,问题得以顺利解决。此解决方案适用于类似情况,建议在遇到此类错误时,首先检查数据库的运行状态和日志记录,以确保数据的一致性和完整性。 ... [详细]
  • 《Spring in Action 第4版:全面解析与实战指南》
    《Spring in Action 第4版:全面解析与实战指南》不仅详细介绍了Spring框架的核心优势,如简洁易测试、低耦合特性,还深入探讨了其轻量级和最小侵入性的设计原则。书中强调了声明式编程的优势,并通过基于约定的方法简化开发流程。此外,Spring的模板机制有效减少了重复代码,而依赖注入功能则由容器自动管理,确保了应用的灵活性和可维护性。 ... [详细]
author-avatar
前世梦0708
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有