erwanlr/Fingerprinter

GitHub: erwanlr/Fingerprinter

这是一个基于指纹识别的工具,用于检测远程Web应用程序、CMS、LMS和库的版本信息。

Stars: 258 | Forks: 39

[![Rawsec 的网络安全资源库](https://inventory.raw.pm/img/badges/Rawsec-inventoried-FF5050_popout.svg)](https://inventory.raw.pm/) [![打包状态](https://repology.org/badge/vertical-allrepos/fingerprinter.svg)](https://repology.org/project/fingerprinter/versions) [![许可证: CC BY-NC 4.0](https://img.shields.io/badge/License-CC%20BY--NC%204.0-lightgrey.svg)](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检测, 安全扫描, 密码管理, 库检测, 开源安全工具, 指纹识别, 时序注入, 漏洞评估, 版本披露, 版本指纹识别, 网络安全, 远程应用指纹, 逆向工程平台, 隐私保护