erwanlr/Fingerprinter
GitHub: erwanlr/Fingerprinter
这是一个基于指纹识别的工具,用于检测远程Web应用程序、CMS、LMS和库的版本信息。
Stars: 258 | Forks: 39
[](https://inventory.raw.pm/)
[](https://repology.org/project/fingerprinter/versions)
[](https://creativecommons.org/licenses/by-nc/4.0/)
# 指纹识别器
此脚本旨在通过指纹识别方法尝试找出远程应用程序/第三方脚本等的版本。
#### 安装说明
##### 从源码安装
在克隆的仓库目录中:
```
$ gem install bundler
$ bundle install
```
##### 在 [BlackArch](https://blackarch.org/) 上安装:
```
$ sudo pacman -S fingerprinter
```
#### 当前支持的应用程序(以及一些版本信息泄露的位置)
- Apache Icons [[CVEs](https://www.cvedetails.com/product/66/Apache-Http-Server.html?vendor_id=45)]
- 版本可能在 `/icons/` 的页脚中泄露
- Anchor CMS [[CVEs](https://www.cvedetails.com/product/30426/Anchorcms-Anchor-Cms.html?vendor_id=14995) | [错误日志中的数据库密码](https://twitter.com/finnwea/status/965279233030393856)]
- Big Tree CMS [[CVEs](https://www.cvedetails.com/product/25767/Bigtreecms-Bigtree-Cms.html?vendor_id=12804)]
- 版本可能在 `/admin` 或 `/admin/login` 的管理员登录页面中泄露
- Bolt [[CVEs](https://www.cvedetails.com/vulnerability-list/vendor_id-15663/product_id-38817/Bolt-Bolt-Cms.html)]
- Chamilo LMS [[CVEs](http://www.cvedetails.com/product/26528/Chamilo-Chamilo-Lms.html?vendor_id=12983) | [漏洞利用数据库](https://www.exploit-db.com/search/?action=search&description=chamilo+lms) | [安全问题](https://support.chamilo.org/projects/chamilo-18/wiki/Security_issues)]
- CKEditor [[CVEs](http://www.cvedetails.com/vendor/12058/Ckeditor.html) | [漏洞利用数据库](https://www.exploit-db.com/search/?action=search&description=ckeditor)]
- CMS Made Simple [实验性] [[CVEs](http://www.cvedetails.com/vendor/3206/Cmsmadesimple.html) | [漏洞利用数据库](https://www.exploit-db.com/search/?action=search&description=cms+made+simple)]
- Concrete5 [[CVEs](http://www.cvedetails.com/vendor/11506/Concrete5.html) | [漏洞利用数据库](https://www.exploit-db.com/search/?action=search&description=concrete5)]
- Django CMS [[CVEs](http://www.cvedetails.com/product/18211/Djangoproject-Django.html?vendor_id=10199)]
- 当以特权用户(编辑器、页面所有者等)登录时,版本信息会泄露:``````
- DNN CMS (DotNetNuke) [[发布版](https://dotnetnuke.codeplex.com/releases) | [安全中心](http://www.dnnsoftware.com/platform/manage/security-center) | [CVEs](http://www.cvedetails.com/product/4306/Dotnetnuke-Dotnetnuke.html?vendor_id=2486) | [漏洞利用数据库](https://www.exploit-db.com/search/?action=search&description=dotnetnuke)]
- Drupal [[安全公告](https://www.drupal.org/security) | [CVEs](http://www.cvedetails.com/product/2387/Drupal-Drupal.html?vendor_id=1367) | [漏洞利用数据库](https://www.exploit-db.com/search/?action=search&description=drupal)]
- 版本从 `/CHANGELOG.txt` 中泄露
- Flatcore CMS [[CVEs](https://www.cvedetails.com/product/38240/Flatcore-Flatcore.html?vendor_id=16353)]
- FCKeditor [[CVEs](http://www.cvedetails.com/vendor/2724/Fckeditor.html) | [漏洞利用数据库](https://www.exploit-db.com/search/?action=search&description=fckeditor)]
- Joomla [[版本历史](https://docs.joomla.org/Category:Version_History) | [安全中心](http://developer.joomla.org/security-centre.html) | [CVEs](http://www.cvedetails.com/product/6129/Joomla-Joomla.html?vendor_id=3496) | [漏洞利用数据库](https://www.exploit-db.com/search/?action=search&description=joomla)]
- Laravel [[CVEs](https://www.cvedetails.com/vulnerability-list/vendor_id-16542/product_id-38139/Laravel-Laravel.html) | [生命周期结束版本](https://laravel.com/docs/5.8/releases)]
- Liferay [[CVEs](http://www.cvedetails.com/vendor/2114/Liferay.html) | [漏洞利用数据库](https://www.exploit-db.com/search/?action=search&description=liferay)]
- Magento 社区版/开源版 [实验性] [[CVEs](http://www.cvedetails.com/vendor/15393/Magento.html) | [漏洞利用数据库](https://www.exploit-db.com/search/?action=search&description=magento) | [安全中心](https://magento.com/security)]
- Mantis Bug Tracker [实验性] [[CVEs](http://www.cvedetails.com/vulnerability-list/vendor_id-1245/product_id-2160/Mantis-Mantis.html) | [漏洞利用数据库](https://www.exploit-db.com/search/?action=search&description=mantis) | [发布版](https://www.mantisbt.org/forums/viewforum.php?f=5)]
- 版本在页脚中泄露(如果已启用):'Powered By MantisBT x.x.x'
- 如果页脚中的版权年份不是当前年份,则版本 < 1.2.13([相关提交](https://github.com/mantisbt/mantisbt/commit/6e51d86d3c83e96f38d6f1be77f2521689005b51#diff-b1c667913de013265f22c582987aa38c))
- Mediaelement [实验性] [[CVEs](http://www.cvedetails.com/product/27053/Mediaelementjs-Mediaelement.js.html?vendor_id=13110)]
- Moodle [实验性] [[CVEs](http://www.cvedetails.com/product/3590/Moodle-Moodle.html?vendor_id=2105) | [漏洞利用数据库](https://www.exploit-db.com/search/?action=search&description=moodle)]
- OpenCart [[CVEs](http://www.cvedetails.com/product/17142/Opencart-Opencart.html?vendor_id=9599) | [漏洞利用数据库](https://www.exploit-db.com/search/?action=search&description=opencart)]
- Orchard (请注意使用了向后移植)[[CVEs](http://www.cvedetails.com/product/23837/Orchardproject-Orchard.html?vendor_id=12571) | [漏洞利用数据库](https://www.exploit-db.com/search/?action=search&description=orchard)]
- osCommerce2 [实验性] [[CVEs](https://www.cvedetails.com/product/2485/Oscommerce-Oscommerce.html?vendor_id=1437)]
- PHPMyAdmin(目前仅针对手动安装的版本)[[CVEs](http://www.cvedetails.com/vendor/784/Phpmyadmin.html) | [漏洞利用数据库](https://www.exploit-db.com/search/?action=search&description=phpmyadmin)]
- PrestaShop [[CVEs](http://www.cvedetails.com/vendor/8950/Prestashop.html) | [漏洞利用数据库](https://www.exploit-db.com/search/?action=search&description=prestashop)]
- PunBB [[CVEs](http://www.cvedetails.com/product/4868/Punbb-Punbb.html?vendor_id=2775) | [漏洞利用数据库](https://www.exploit-db.com/search/?action=search&description=punbb)]
- Roundcubemail [[CVEs](http://www.cvedetails.com/vulnerability-list/vendor_id-8905/Roundcube.html)]
- 版本从以下位置泄露:
- `/CHANGELOG`
- Simple Machines Forum [[CVEs](http://www.cvedetails.com/vulnerability-list/vendor_id-9338/product_id-16560/Simplemachines-SMF.html) | [漏洞利用数据库](https://www.exploit-db.com/search/?action=search&description=simple+machines+forum)]
- 版本从以下位置泄露:
- 页脚版权信息
- TinyMCE [[CVEs](http://www.cvedetails.com/vendor/11716/Tinymce.html) | [漏洞利用数据库](https://www.exploit-db.com/search/?action=search&description=tinymce)]
- Umbraco [[CVEs](http://www.cvedetails.com/product/30682/Umbraco-Umbraco-Cms.html?vendor_id=15064) | [漏洞利用数据库](https://www.exploit-db.com/search/?action=search&description=umbraco) | [比较版本](http://code.leekelleher.com/umbraco/archive/)]
- Web2py [[CVEs](https://www.cvedetails.com/product/25171/Web2py-Web2py.html?vendor_id=12701)]
- WordPress [[CVEs](http://www.cvedetails.com/product/4096/Wordpress-Wordpress.html?vendor_id=2337) | [漏洞利用数据库](https://www.exploit-db.com/search/?action=search&description=wordpress) | [WPVulnDB/WPScan](https://wpscan.com/)]
- 版本从以下位置泄露:
- `/`(meta generator, stylesheet numbers: ?ver=)
- `/feed/`, `/feed/rdf/`, `/feed/atom/`, `/sitemap.xml(.gz)`, `/wp-links-opml.php` 中的 Generator 标签
- `/readme.html`(对于 < 4.7 的版本,否则只提供主版本号,即 4.7, 4.8, 4.9)
- 使用带有 `--wp-version-all` 选项的 [WPScan](https://github.com/wpscanteam/wpscan) 来扫描所有版本
- WordPress 插件(使用 ```-a wordpress-plugin --app-params ```)[[WPVulnDB/WPScan](https://wpscan.com/plugins)]
- WordPress 主题(使用 ```-a wordpress-theme --app-params ```)[[WPVulnDB/WPScan](https://wpscan.com/themes)]
#### 不支持的应用程序(以及原因、相关链接和版本信息泄露的位置)
- AngularJS - 不需要为此进行指纹识别(见下文)[[有效载荷](https://code.google.com/p/mustache-security/wiki/AngularJS) | [漏洞](https://snyk.io/vuln/npm:angular)]
- 版本从以下位置泄露:
- 文件名或文件路径
- 文件顶部的注释中
- 在加载了该库的页面上,通过在 Web 浏览器的 Web 开发控制台中提交 `angular.version`
- Bootstrap - 不需要为此进行指纹识别(见下文)[[CVEs](https://www.cvedetails.com/product/51406/Getbootstrap-Bootstrap.html?vendor_id=19522) | [漏洞](https://snyk.io/vuln/npm:bootstrap)]
- 版本从以下位置泄露:
- 文件路径的文件名
- 文件顶部的注释中
- ExpressionEngine - 需要注册才能下载最新免费核心版本。没有可以下载所有版本的页面。[[CVEs](http://www.cvedetails.com/product/12972/Expressionengine-Expressionengine.html?vendor_id=7662) | [漏洞利用数据库](https://www.exploit-db.com/search/?action=search&description=ExpressionEngine)]
- 版本在页脚和 RSS 链接(generator 标签)中泄露
- jQuery - 不需要为此进行指纹识别(见下文)[[CVEs](http://www.cvedetails.com/product/11031/Jquery-Jquery.html?vendor_id=6538) | [漏洞](https://snyk.io/vuln/npm:jquery)]
- 版本从以下位置泄露:
- 文件路径的文件名
- 文件顶部的注释中
- 在加载了该库的页面上,通过在 Web 浏览器的 Web 开发控制台中提交 `$().jquery` 或 `jQuery().jquery`
- jQuery UI - 不需要为此进行指纹识别(见下文)[[CVEs](http://www.cvedetails.com/product/31126/Jquery-Jquery-Ui.html?vendor_id=6538) | [漏洞](https://snyk.io/vuln/npm:jquery-ui)]
- 版本从以下位置泄露:
- 文件路径的文件名
- 文件顶部的注释中
- 在加载了该库的页面上,通过在 Web 浏览器的 Web 开发控制台中提交 `$.fn.jquery` 或 `jQuery.fn.jquery`
- Kentico CMS - 需要提供个人信息/注册才能下载最新免费版本[[漏洞利用数据库](https://www.exploit-db.com/search/?action=search&description=kentico) | [热修复](http://devnet.kentico.com/download/hotfixes)]
- 主要版本从以下位置泄露:
- `/CMSHelp/`(在 title 标签中)
- `/CMSPages/GetDocLink.ashx`(在 Location 头部中)
- MustacheJS - 不需要为此进行指纹识别(见下文)[[漏洞](https://snyk.io/vuln/npm:mustache)]
- 版本从以下位置泄露:
- 文件路径的文件名
- 在文件中查找 `mustache.version`
- MomentJS - 不需要为此进行指纹识别(见下文)[[漏洞](https://snyk.io/vuln/npm:moment)]
- 版本从以下位置泄露:
- 文件路径的文件名
- 在文件中查找 `var v,Aj=`
- 在加载了该库的页面上,通过在 Web 浏览器的 Web 开发控制台中提交 `moment.version`
- PrettyPhoto - 不需要为此进行指纹识别(见下文)[[CVEs](http://www.cvedetails.com/product/26726/No-margin-for-errors-Prettyphoto.html?vendor_id=13006)]
- 版本在文件顶部的注释中泄露
- SharePoint - 非免费 / 找不到免费版或社区版[[漏洞利用数据库](https://www.exploit-db.com/search/?action=search&description=sharepoint) | [版本号(非最新)](http://www.sharepointdesignerstepbystep.com/blog/SitePages/SharePoint%20versions.aspx)]
- 版本从 `/_vti_pvt/service.cnf` 中泄露
- Sitecore CMS - 需要注册,不确定是否所有版本都可供下载[[CVEs](http://www.cvedetails.com/product/17161/Sitecore-CMS.html?vendor_id=9609) | [漏洞利用数据库](https://www.exploit-db.com/search/?action=search&description=sitecore) | [安全公告](https://kb.sitecore.net/SearchResults#fltr=t3,p2&slider=0,11&pg=1) | [最新版本号](https://dev.sitecore.net/en/Downloads/Sitecore_Experience_Platform.aspx) | [版本号与修订版](https://sdn.sitecore.net/Products/Sitecore%20V5/Sitecore%20CMS%207/Update/7_0_rev_130424.aspx)]
- 版本从以下位置泄露:
- `/sitecore/login`
- `/sitecore/shell/sitecore.version.xml`
- ThinkPHP - 框架[[CVEs](https://www.cvedetails.com/product/45187/Thinkphp-Thinkphp.html?vendor_id=17872) | [已发布的版本](http://www.thinkphp.cn/down.html) | [3.2.3 潜在远程 Shell](https://www.alibabacloud.com/help/faq-detail/57863.htm)]
- 版本在一些 404 页面的页脚中泄露,例如 `/login`
- vBulletin - 非免费[[Sucuri](https://blog.sucuri.net/tag/vbulletin-security) | [安全公告](http://www.vbulletin.com/forum/search?q=Security&searchFields[title_only]=1&searchFields[channel][]=28&searchJSON={%22keywords%22%3A%22Security%22%2C%22title_only%22%3A1%2C%22channel%22%3A[%2228%22]}) | [漏洞利用数据库](https://www.exploit-db.com/search/?action=search&description=vBulletin)]
- 版本从以下位置泄露:
- 所有页面中的 generator meta 标签和页脚版权信息
- `/clientscript/vbulletin_global.js`
- `/clientscript/vbulletin_menu.js`
- `/clientscript/vbulletin-core.js`
#### 基本使用示例
##### 使用所有指纹
```
./fingerprinter.rb --app-name wordpress --fingerprint http://target.com/blog/
```
##### 使用唯一指纹
在此模式下,将仅测试(跨所有应用程序版本文件的)唯一指纹。
此模式比上一个模式更快,也更可靠。然而,有可能某个应用程序的版本没有任何唯一指纹(例如 Apache Icons,其 2.4.4 版本只有 2 个唯一指纹,而其他版本则没有)。
```
./fingerprinter.rb --app-name wordpress --unique-fingerprint http://target.com/blog/
```
##### 使用被动指纹识别模式
在此模式下,会扫描目标的主页以查找包含的资源(如 JavaScript 文件、图片等),然后对照数据库进行检查。
```
./fingerprinter.rb --app-name wordpress --passive-fingerprint http://target.com/blog/
```
#### 选项
```
-p, --proxy PROXY Proxy to use during the fingerprinting
--timeout SECONDS The number of seconds for the request to be performed, default 20s
--connect-timeout SECONDS The number of seconds for the connection to be established before timeout, default 5s
--cookies-file, --cf FILE-PATH The cookies file to use during the fingerprinting
--cookies-string, --cs COOKIE/S The cookies string to use in requests
--user-agent, --ua UA User-Agent to use in all fingerprinting requests
-d, --db PATH-TO-DB Path to the db of the app-name (default is db/.json)
-u, --update Update the db of the app-name
-m, --manual DIRECTORY-PATH To be used along with the --update and --version options. Process the (local) DIRECTORY-PATH and compute the file fingerprints
--version Used with --manual to set the version of the processed fingerprints
--update-all, Update all the apps, except the wordpress plugins and themes
-v, --verbose Verbose Mode
```
示例:将来自 `/tmp/test` 的文件指纹添加到 Liferay 的 v6.2 数据库中。
```
./fingerprinter -a liferay --update --manual /tmp/test --version 6.2
```
#### 搜索应用程序数据库
配合 `--app-name` 选项(或 `-a`),可以搜索数据库:
```
--list-version, --lv List all the known versions in the DB for the given app
--list-files, --lf VERSION List all files related to the version for the given app
--list-unique-fingerprints, --luf VERSION List the unique hashes related to the files for the supplied version of the app
--search-hash, --sh HASH Search the hash and output the app-name versions & file
--search-file, --sf FILE Search the file (ie --sf read will return aread.txt, readme.html etc) and output the app-name versions & hashes
```
示例:列出 WordPress 3.8.1 的所有唯一指纹。
```
./fingerprinter.rb -a wordpress --luf 3.8.1
```
#### --帮助
```
Usage: ./fingerprinter.rb [options]
-p, --proxy PROXY Proxy to use during the fingerprinting
--timeout SECONDS The number of seconds for the request to be performed, default 20s
--cookies-file, --cf FILE-PATH The cookies file to use during the fingerprinting
--cookies-string, --cs COOKIE/S The cookies string to use in requests
--user-agent, --ua UA User-Agent to use in all fingerprinting requests
-a, --app-name APPLICATION The application to fingerprint. Currently supported: apache-icons, chamilo-lms, ckeditor, cms-made-simple, concrete5, django-cms, dnn-cms drupal, fckeditor, joomla, liferay, magento-ce, mantisbt, mediaelement, moodle, phpmyadmin, prestashop, punbb, tinymce, umbraco, wordpress
-d, --db PATH-TO-DB Path to the db of the app-name
-u, --update Update the db of the app-name
--manual DIRECTORY-PATH To be used along with the --update and --version options. Process the (local) DIRECTORY-PATH and compute the file fingerprints
--version VERSION Used with --manual to set the version of the processed fingerprints
--update-all, Update all the apps
--list-versions, --lv List all the known versions in the DB for the given app
--list-files, --lf VERSION List all files related to the version for the given app
--list-unique-fingerprints, --luf VERSION List the unique hashes related to the files for the supplied version of the app
--search-hash, --sh HASH Search the hash and output the app-name versions & file
--search-file, --sf FILE Search the file using a LIKE method (so % can be used, e.g: readme%) and output the app-name versions & hashes
--fingerprint URL Fingerprint the app-name at the given URL using all fingerprints
--unique-fingerprint, --uf URL Fingerprint the app-name at the given URL using unique fingerprints
--passive-fingerprint, --pf URL Passively fingerprint the URL
--db-verbose, --dbv Database Verbose Mode
-v, --verbose Verbose Mode
```
标签:AES-256, C2日志可视化, CVE关联, Homebrew安装, LMS检测, 安全扫描, 密码管理, 库检测, 开源安全工具, 指纹识别, 时序注入, 漏洞评估, 版本披露, 版本指纹识别, 网络安全, 远程应用指纹, 逆向工程平台, 隐私保护