一、Web应用指纹识别分类
1. 后端CMS识别
CMS:一般PHP开发居多源码程序(利用源码程序名搜索漏洞情况、源码下载进行后期的代码审计)
2. 前端JS框架识别
JS框架:爬取更多的从JS筛选URL或敏感泄露key等,也可以通过对JS代码逻辑进行代码审计。
3. 组件识别
组件:Java居多,常见有过安全漏洞组件(Shiro、Solr、Log4j、SpringBoot等)。
4. 框架识别
框架:PHP、Java、Python都有,CMS识别程序源码,有些源码识别不到。
- 因为大部分CMS识别的都是以PHP开发为主,Python、Java相对较少
- Python、Java等开发产品较少且大多闭源
- CMS能识别到的框架大多以PHP为主
Java与PHP不同,存在:
- 各种组件(可理解为拓展)
- 框架:简单代码的一个整合库,如果使用框架就只需要学习使用框架调用即可
- 组件:第三方的功能模块(日志记录,数据监控,数据转换)
例如:文件上传功能是需要很多代码来实现的,框架把这个代码进行封装,调用即可。
影响:如果采用框架开发,代码的安全性取决于框架的过滤机制。
5. Web架构模型
- 最简单最入门的开发模型(功能代码全部手写)
最容易出现漏洞,程序员水平不一,没有第三方或团队的检测,单纯的自己写。 - 结合开发框架的开发模型(以框架为核心实现功能)
第三方或团队开发的封装代码框架,一般内置过滤机制(框架漏洞)。 - 结合开发框架外加组件模型(以框架为核心,组件为辅实现功能)
第三方或团队开发的封装代码框架,一般内置过滤机制(框架和组件漏洞)。
二、指纹识别本地工具
#指纹识别-本地工具--Gotoscan--CMSeeK
最适用不出网环境(Gotoscan)
GitHub地址:https://github.com/newbe3three/gotoscan
- 适用于内网或不出网环境
- 适合进行大规模URL批量快速识别
指纹识别与强大漏洞扫描(CMSeeK)
GitHub地址:https://github.com/Tuhinshubhra/CMSeeK
- 不仅识别CMS,还能探测版本和扫描漏洞
- 适合针对性强的漏洞探测与利用
网络空间搜索引擎:Fofa、Quake、Hunter
网络空间:IO图标关系
三、Python开发框架识别
#Python-开发框架-Django--Flask
Django识别特征
- 识别插件Wappalyzer
- Set-Cookie: csrftoken=
Flask识别特征
- 识别插件Wappalyzer
- Etag: "flask-xxxxx"
四、PHP开发框架识别
#PHP-开发框架-ThinkPHP--Laravel--Yii
ThinkPHP识别特征
- 识别插件Wappalyzer
- X-Powered-By: ThinkPHP
Laravel识别特征
- 识别插件Wappalyzer
- Set-Cookie中特征的格式:
- Set-Cookie: laravel-session=
- Set-Cookie: XSRF-TOKEN=
- Set-Cookie: XSRF-TOKEN=
- Set-Cookie: laravel-session=
Yii识别特征
- 识别插件Wappalyzer
- Set-Cookie中特征的格式:
- Set-Cookie: YII_CSRF_TOKEN=
- Set-Cookie: YII_CSRF_TOKEN=
五、Java框架组件识别
#Java-框架组件-Fastjson--Shiro--Solr--Spring
参考资源:52类110个主流Java组件和框架介绍_基于java的组件有哪些-CSDN博客
1. Fastjson/Jackson组件
描述:是一个Java库,可以将Java对象转换为JSON格式,当然它也可以将JSON字符串转换为Java对象识别方法:在提交JSON数据包中修改测试:
- Fastjson组件会把01解析成1(解析01 → 为1)
- Jackson组件在解析01时会抛出异常(解析01报错)
参考链接:
奇安信攻防社区-浅谈黑盒识别Fastjson/Jackson组件 (浅析如何黑盒中识别Fastjson/Jackson组件)
https://www.iculture.cc/forum-post/24115.html
2. Shiro组件(验证用户身份的组件)
描述: Apache Shiro 是一个强大且易于Java安全框架,执行身份验证、授权、密码和会话管理。识别特征:
- 请求包的Cookie中存在rememberMe字段
- 返回包中存在Set-Cookie:rememberMe=deleteMe
检测方法:直接发包即可,将Cookie内容改为rememberMe=1,若响应包有rememberMe=deleteMe,则基本可以确认网站为Apache Shiro搭建的。
3. Struts2(框架)
描述:Struts2 是一个开源的、基于Java的 MVC(Model-View-Controller)框架,主要用于开发企业级Java Web应用程序。它最初由Apache软件基金会开发,并被广泛用于构建动态网站、网络应用和Web服务。识别特征:一般使用Struts2框架后缀带do或action,可以尝试进行利用。
- 例:home.do、index.action
4. SpringBoot(框架)
描述:Spring Boot 是一个开源的 Java-based 框架,用于开发基于Spring框架的独立应用程序。尽管它本身是基于Spring框架的一个组件,但其设计初衷是为了简化Spring应用程序的创建和开发过程。Spring Boot 提供了一种快速、广泛接受的方式来搭建和运行基于Spring的应用程序,而无需大量的配置代码。识别方法:
- 通过Web应用程序网页标签的小绿叶图标
- 通过SpringBoot框架默认报错页面
5. Solr(组件)识别(8983端口)
描述: Apache Solr是美国阿帕奇(Apache)软件基金会一款基于Lucene(一款全文搜索引擎)的搜索服务器。该产品支持层面搜索、垂直搜索、高亮显示搜索结果等。识别特征:默认开放8983端口,访问页面也可以探针到。
6. Log4j2(一款日志记录工具)
描述:Log4j2 本质上是日志框架,但在具体架构中由多个组件构成。作为框架,它内部包含多个可插拔的组件。宏观上是框架,微观上由组件组成。识别特征:暂无显要特征判断是否存在。
六、补充内容
补充:
##### vulhub靶场环境拉取与漏洞环境搭建 ==# 下载vulhub全套漏洞环境== git clone https://github.com/vulhub/vulhub.git cd vulhub ==# 进入漏洞目录== cd shiro/CVE-2xxx-xxxx # 查看开启端口 docker-compose config ==# 一键拉取镜像并后台启动== docker-compose up -d