Real-time collaboration for Jupyter Notebooks, Linux Terminals, LaTeX, VS Code, R IDE, and more,
all in one place.
Real-time collaboration for Jupyter Notebooks, Linux Terminals, LaTeX, VS Code, R IDE, and more,
all in one place.
Path: blob/master/docs/navigation.rb
Views: 11704
# This file maps the files within `metasploit-framework.wiki/` to the navigational menu1# Modify this file to change the doc site's navigation/hierarchy23# @param prefix [String] The prefix to remove from a string4# @return [proc<String, String>] When called with a string, the returned string has the prefix removed5def without_prefix(prefix)6proc { |value| value.sub(/^#{prefix}/, '') }7end89=begin10Modify `NAVIGATION_CONFIG` to add additional items to the wiki site.11The two support options are:12131) If you are adding a new wiki page, which won't appear in msfconsole by default:1415- Add your new page to `metasploit-framework.wiki`16- Add a new entry to NAVIGATION_CONFIG:17```ruby18{19path: 'My-New-Page.md'20}21```2223The title will be automatically derived from the markdown file. If you wish to override this title, use:2425```ruby26{27path: 'My-New-Page.md',28title: 'Custom title for navigation link'29}30```3132You can also programmatically change titles with procs, i.e. using the `without_prefix` helper to generate33a title from the filename with a being prefix removed:3435```ruby36{37nav_order: 7,38path: 'Metasploit-Guide-PostgreSQL.md',39title: without_prefix('Metasploit Guide ')40}41```42432) If you are embedding existing Metasploit module documentation into the wiki site, use relative paths:4445```ruby46{47path: '../../documentation/modules/auxiliary/admin/kerberos/forge_ticket.md',48title: 'Silver and golden tickets'49}50```5152These module docs will appear in msfconsole as well as the generated docs site. Note that msfconsole does not53support Mermaid syntax - used for generating sequence diagrams/charts/etc on the rendered docs site.5455=end56NAVIGATION_CONFIG = [57{58path: 'Home.md',59nav_order: 160},61{62path: 'Code-Of-Conduct.md',63nav_order: 264},65{66path: 'Modules.md',67title: 'Modules',68nav_order: 369},70{71title: 'Pentesting',72folder: 'pentesting',73nav_order: 4,74children: [75{76path: 'Metasploit-Guide-Setting-Module-Options.md',77nav_order: 1,78title: without_prefix('Metasploit Guide ')79},80{81path: 'Metasploit-Guide-Upgrading-Shells-to-Meterpreter.md',82nav_order: 2,83title: without_prefix('Metasploit Guide ')84},85{86nav_order: 3,87path: 'Metasploit-Guide-Post-Gather-Modules.md',88title: without_prefix('Metasploit Guide ')89},90{91nav_order: 5,92path: 'Metasploit-Guide-Kubernetes.md',93title: without_prefix('Metasploit Guide ')94},95{96nav_order: 5,97path: 'Metasploit-Guide-HTTP.md',98title: 'HTTP + HTTPS'99},100{101nav_order: 6,102path: 'Metasploit-Guide-MySQL.md',103title: without_prefix('Metasploit Guide ')104},105{106nav_order: 7,107path: 'Metasploit-Guide-PostgreSQL.md',108title: without_prefix('Metasploit Guide ')109},110{111nav_order: 8,112path: 'Metasploit-Guide-SMB.md',113title: without_prefix('Metasploit Guide ')114},115{116nav_order: 9,117path: 'Metasploit-Guide-SSH.md',118title: without_prefix('Metasploit Guide ')119},120{121nav_order: 10,122path: 'Metasploit-Guide-WinRM.md',123title: without_prefix('Metasploit Guide ')124},125126{127nav_order: 11,128path: 'Metasploit-Guide-MSSQL.md',129title: without_prefix('Metasploit Guide ')130},131{132nav_order: 12,133path: 'Metasploit-Guide-LDAP.md',134title: without_prefix('Metasploit Guide ')135},136137{138title: 'Active Directory',139folder: 'active-directory',140nav_order: 13,141children: [142{143title: 'Kerberos',144folder: 'kerberos',145children: [146{147path: 'kerberos/overview.md',148title: 'Overview',149nav_order: 0150},151{152path: 'kerberos/service_authentication.md',153title: 'Authenticating to SMB/WinRM/etc',154nav_order: 1155},156{157path: '../../documentation/modules/auxiliary/scanner/kerberos/kerberos_login.md',158title: 'Kerberos login enumeration and bruteforcing',159nav_order: 2160},161{162path: '../../documentation/modules/auxiliary/admin/kerberos/get_ticket.md',163title: 'Get Ticket granting tickets and service tickets',164nav_order: 3,165},166{167path: '../../documentation/modules/auxiliary/admin/kerberos/forge_ticket.md',168title: 'Forging tickets',169},170{171path: '../../documentation/modules/auxiliary/admin/kerberos/inspect_ticket.md',172title: 'Inspecting tickets',173},174{175path: 'kerberos/kerberoasting.md',176title: 'Kerberoasting',177},178{179path: '../../documentation/modules/auxiliary/admin/kerberos/keytab.md',180title: 'Keytab support and decrypting wireshark traffic'181},182{183path: '../../documentation/modules/auxiliary/admin/kerberos/ticket_converter.md',184title: 'Converting kirbi and ccache files'185},186{187path: '../../documentation/modules/auxiliary/admin/ldap/rbcd.md',188title: 'Resource-based constrained delegation (RBCD)'189},190{191path: 'kerberos/unconstrained_delegation.md',192title: 'Unconstrained delegation'193}194]195},196{197title: 'AD CS',198folder: 'ad-certificates',199children: [200{201path: 'ad-certificates/overview.md',202title: 'Overview',203nav_order: 0204},205{206path: 'ad-certificates/Attacking-AD-CS-ESC-Vulnerabilities.md',207title: 'Attacking AD CS ESC Vulnerabilities Using Metasploit',208nav_order: 1209},210{211path: '../../documentation/modules/auxiliary/gather/ldap_esc_vulnerable_cert_finder.md',212title: 'Vulnerable cert finder',213nav_order: 2214},215{216path: '../../documentation/modules/auxiliary/admin/ldap/ad_cs_cert_template.md',217title: 'Manage certificate templates'218},219{220path: '../../documentation/modules/auxiliary/admin/dcerpc/icpr_cert.md',221title: 'Request certificates'222}223]224}225]226},227]228},229{230title: 'Using Metasploit',231folder: 'using-metasploit',232nav_order: 5,233children: [234{235title: 'Getting Started',236folder: 'getting-started',237nav_order: 1,238children: [239{240path: 'Nightly-Installers.md',241nav_order: 1242},243{244path: 'Reporting-a-Bug.md',245nav_order: 4246},247]248},249{250title: 'Basics',251folder: 'basics',252nav_order: 2,253children: [254{255path: 'Using-Metasploit.md',256title: 'Running modules',257nav_order: 2258},259{260path: 'How-to-use-a-Metasploit-module-appropriately.md',261nav_order: 3262},263{264path: 'How-payloads-work.md',265nav_order: 4266},267{268path: 'Module-Documentation.md',269nav_order: 5270},271{272path: 'How-to-use-a-reverse-shell-in-Metasploit.md',273nav_order: 6274},275{276path: 'How-to-use-msfvenom.md',277nav_order: 7278},279{280path: 'Managing-Sessions.md',281nav_order: 8282}283]284},285{286title: 'Intermediate',287folder: 'intermediate',288nav_order: 3,289children: [290{291path: 'Evading-Anti-Virus.md'292},293{294path: 'Payload-UUID.md'295},296{297path: 'Running-Private-Modules.md'298},299{300path: 'Exploit-Ranking.md'301},302{303path: 'Pivoting-in-Metasploit.md'304},305{306path: 'Hashes-and-Password-Cracking.md'307},308{309old_wiki_path: 'msfdb:-Database-Features-&-How-to-Set-up-a-Database-for-Metasploit.md',310path: 'Metasploit-Database-Support.md',311title: 'Database Support'312},313{314path: 'How-To-Use-Plugins.md',315title: 'Metasploit Plugins',316}317]318},319{320title: 'Advanced',321folder: 'advanced',322nav_order: 4,323children: [324{325path: 'Metasploit-Web-Service.md'326},327{328path: 'How-to-Configure-DNS.md'329},330{331title: 'Meterpreter',332folder: 'meterpreter',333children: [334{335path: 'Meterpreter.md',336title: 'Overview',337nav_order: 1338},339{340path: 'Meterpreter-Transport-Control.md',341title: without_prefix('Meterpreter ')342},343{344path: 'Meterpreter-Unicode-Support.md',345title: without_prefix('Meterpreter ')346},347{348path: 'Meterpreter-Paranoid-Mode.md',349title: without_prefix('Meterpreter ')350},351{352path: 'The-ins-and-outs-of-HTTP-and-HTTPS-communications-in-Meterpreter-and-Metasploit-Stagers.md'353},354{355path: 'Meterpreter-Timeout-Control.md',356title: without_prefix('Meterpreter ')357},358{359path: 'Meterpreter-Wishlist.md',360title: without_prefix('Meterpreter ')361},362{363path: 'Meterpreter-Sleep-Control.md',364title: without_prefix('Meterpreter ')365},366{367path: 'Meterpreter-Configuration.md',368title: without_prefix('Meterpreter ')369},370{371path: 'Meterpreter-Reliable-Network-Communication.md',372title: without_prefix('Meterpreter ')373},374{375path: 'Debugging-Dead-Meterpreter-Sessions.md'376},377{378path: 'Meterpreter-HTTP-Communication.md',379title: without_prefix('Meterpreter ')380},381{382path: 'Meterpreter-Stageless-Mode.md',383title: without_prefix('Meterpreter ')384},385{386path: 'Meterpreter-Debugging-Meterpreter-Sessions.md',387title: without_prefix('Meterpreter ')388},389{390path: 'Meterpreter-ExecuteBof-Command.md',391title: without_prefix('Meterpreter ')392},393{394path: 'Meterpreter-Reg-Command.md',395title: without_prefix('Meterpreter ')396},397{398path: 'How-to-get-started-with-writing-a-Meterpreter-script.md'399},400{401path: 'Powershell-Extension.md'402},403{404path: 'Python-Extension.md'405},406]407},408{409title: 'RPC',410folder: 'RPC',411children: [412{413path: 'How-to-use-Metasploit-Messagepack-RPC.md'414},415{416path: 'How-to-use-Metasploit-JSON-RPC.md'417},418]419},420]421},422{423title: 'Other',424folder: 'other',425children: [426{427title: 'Oracle Support',428folder: 'oracle-support',429children: [430{431path: 'Oracle-Usage.md'432},433{434path: 'How-to-get-Oracle-Support-working-with-Kali-Linux.md'435},436]437},438{439path: 'Information-About-Unmet-Browser-Exploit-Requirements.md'440},441{442path: 'Why-CVE-is-not-available.md'443},444{445path: 'How-to-use-the-Favorite-command.md'446},447{448path: 'How-to-use-Metasploit-with-ngrok.md'449},450]451},452]453},454{455title: 'Development',456folder: 'development',457nav_order: 6,458children: [459{460title: 'Get Started ',461folder: 'get-started',462nav_order: 1,463children: [464{465path: 'Contributing-to-Metasploit.md',466nav_order: 1467},468{469path: 'Creating-Your-First-PR.md',470nav_order: 2471},472{473path: 'dev/Setting-Up-a-Metasploit-Development-Environment.md',474nav_order: 3475},476{477path: 'Sanitizing-PCAPs.md',478nav_order: 4479},480{481old_wiki_path: "Navigating-and-Understanding-Metasploit's-Codebase.md",482path: 'Navigating-and-Understanding-Metasploits-Codebase.md',483title: 'Navigating the codebase'484},485{486title: 'Git',487folder: 'git',488children: [489{490path: 'Keeping-in-sync-with-rapid7-master.md'491},492{493path: 'git/Git-cheatsheet.md'494},495{496path: 'git/Using-Git.md'497},498{499path: 'git/Git-Reference-Sites.md'500},501{502path: 'Remote-Branch-Pruning.md'503},504]505},506]507},508{509title: 'Developing Modules',510folder: 'developing-modules',511nav_order: 2,512children: [513{514title: 'Guides',515folder: 'guides',516nav_order: 2,517children: [518{519path: 'How-to-get-started-with-writing-a-post-module.md',520title: 'Writing a post module'521},522{523path: 'Get-Started-Writing-an-Exploit.md',524title: 'Writing an exploit'525},526{527path: 'How-to-write-a-browser-exploit-using-HttpServer.md',528title: 'Writing a browser exploit'529},530{531title: 'Scanners',532folder: 'scanners',533nav_order: 2,534children: [535{536path: 'How-to-write-a-HTTP-LoginScanner-Module.md',537title: 'Writing a HTTP LoginScanner'538},539{540path: 'Creating-Metasploit-Framework-LoginScanners.md',541title: 'Writing an FTP LoginScanner'542},543]544},545{546path: 'How-to-get-started-with-writing-an-auxiliary-module.md',547title: 'Writing an auxiliary module'548},549{550path: 'How-to-use-command-stagers.md'551},552{553path: 'How-to-use-fetch-payloads.md',554title: 'How to use Fetch Payloads'555},556{557old_wiki_path: 'How-to-write-a-check()-method.md',558path: 'How-to-write-a-check-method.md'559},560{561path: 'How-to-check-Microsoft-patch-levels-for-your-exploit.md'562},563{564path: "How-to-write-a-cmd-injection-module.md"565}566]567},568{569title: 'Libraries',570folder: 'libraries',571children: [572{573path: 'API.md',574nav_order: 0575},576{577title: 'Compiling C',578folder: 'c',579children: [580{581path: 'How-to-use-Metasploit-Framework-Compiler-Windows-to-compile-C-code.md',582title: 'Overview',583nav_order: 1584},585{586path: 'How-to-XOR-with-Metasploit-Framework-Compiler.md',587title: 'XOR Support'588},589{590path: 'How-to-decode-Base64-with-Metasploit-Framework-Compiler.md',591title: 'Base64 Support'592},593{594path: 'How-to-decrypt-RC4-with-Metasploit-Framework-Compiler.md',595title: 'RC4 Support'596},597]598},599{600path: 'How-to-log-in-Metasploit.md',601title: 'Logging'602},603{604path: 'How-to-use-Railgun-for-Windows-post-exploitation.md',605title: 'Railgun'606},607{608old_wiki_path: 'How-to-zip-files-with-Msf-Util-EXE.to_zip.md',609path: 'How-to-zip-files-with-Msf-Util-EXE-to_zip.md',610title: 'Zip'611},612{613old_wiki_path: 'Handling-Module-Failures-with-`fail_with`.md',614path: 'Handling-Module-Failures-with-fail_with.md',615title: 'Fail_with'616},617{618path: 'How-to-use-Msf-Auxiliary-AuthBrute-to-write-a-bruteforcer.md',619title: 'AuthBrute'620},621{622path: 'How-to-Use-the-FILEFORMAT-mixin-to-create-a-file-format-exploit.md',623title: 'Fileformat'624},625{626old_wiki_path: 'SQL-Injection-(SQLi)-Libraries.md',627path: 'SQL-Injection-Libraries.md',628title: 'SQL Injection'629},630{631path: 'How-to-use-Powershell-in-an-exploit.md',632title: 'Powershell'633},634{635path: 'How-to-use-the-Seh-mixin-to-exploit-an-exception-handler.md',636title: 'SEH Exploitation'637},638{639path: 'How-to-use-PhpEXE-to-exploit-an-arbitrary-file-upload-bug.md',640title: 'PhpExe'641},642{643path: 'How-to-use-the-Git-mixin-to-write-an-exploit-module.md',644title: 'Git Mixin'645},646{647title: 'HTTP',648folder: 'http',649children: [650{651path: 'How-to-send-an-HTTP-request-using-Rex-Proto-Http-Client.md'652},653{654path: 'How-to-parse-an-HTTP-response.md'655},656{657path: 'How-to-write-a-module-using-HttpServer-and-HttpClient.md'658},659{660path: 'How-to-Send-an-HTTP-Request-Using-HttpClient.md'661},662{663path: 'How-to-write-a-browser-exploit-using-BrowserExploitServer.md',664title: 'BrowserExploitServer'665},666]667},668{669title: 'Deserialization',670folder: 'deserialization',671children: [672{673path: 'Dot-Net-Deserialization.md'674},675{676old_wiki_path: 'Generating-`ysoserial`-Java-serialized-objects.md',677path: 'Generating-ysoserial-Java-serialized-objects.md',678title: 'Java Deserialization'679}680]681},682{683title: 'Obfuscation',684folder: 'obfuscation',685children: [686{687path: 'How-to-obfuscate-JavaScript-in-Metasploit.md',688title: 'JavaScript Obfuscation'689},690{691path: 'How-to-use-Metasploit-Framework-Obfuscation-CRandomizer.md',692title: 'C Obfuscation'693},694]695},696{697path: 'How-to-use-the-Msf-Exploit-Remote-Tcp-mixin.md',698title: 'TCP'699},700{701path: 'How-to-do-reporting-or-store-data-in-module-development.md',702title: 'Reporting and Storing Data'703},704{705path: 'How-to-use-WbemExec-for-a-write-privilege-attack-on-Windows.md',706title: 'WbemExec'707},708{709title: 'SMB Library',710folder: 'smb_library',711children: [712{713path: 'What-my-Rex-Proto-SMB-Error-means.md'714},715{716path: 'Guidelines-for-Writing-Modules-with-SMB.md'717},718]719},720{721path: 'Using-ReflectiveDLL-Injection.md',722title: 'ReflectiveDLL Injection'723},724{725path: 'How-to-cleanup-after-module-execution.md',726title: 'Cleanup'727},728]729},730{731title: 'External Modules',732folder: 'external-modules',733nav_order: 3,734children: [735{736path: 'Writing-External-Metasploit-Modules.md',737title: 'Overview',738nav_order: 1739},740{741path: 'Writing-External-Python-Modules.md',742title: 'Writing Python Modules'743},744{745path: 'Writing-External-GoLang-Modules.md',746title: 'Writing GoLang Modules'747},748]749},750{751title: 'Module metadata',752folder: 'module-metadata',753nav_order: 3,754children: [755{756path: 'How-to-use-datastore-options.md'757},758{759path: 'Module-Reference-Identifiers.md'760},761{762old_wiki_path: 'Definition-of-Module-Reliability,-Side-Effects,-and-Stability.md',763path: 'Definition-of-Module-Reliability-Side-Effects-and-Stability.md'764},765]766}767]768},769{770title: 'Maintainers',771folder: 'maintainers',772children: [773{774title: 'Process',775folder: 'process',776children: [777{778path: 'Guidelines-for-Accepting-Modules-and-Enhancements.md'779},780{781path: 'How-to-deprecate-a-Metasploit-module.md'782},783{784path: 'Landing-Pull-Requests.md'785},786{787path: 'Assigning-Labels.md'788},789{790path: 'Adding-Release-Notes-to-PRs.md',791title: 'Release Notes'792},793{794path: 'Rolling-back-merges.md'795},796{797path: 'Unstable-Modules.md'798},799]800},801{802path: 'Committer-Rights.md'803},804{805title: 'Ruby Gems',806folder: 'ruby-gems',807children: [808{809path: 'How-to-add-and-update-gems-in-metasploit-framework.md',810title: 'Adding and Updating'811},812{813old_wiki_path: 'Testing-Rex-and-other-Gem-File-Updates-With-Gemfile.local-and-Gemfile.local.example.md',814path: 'Using-local-gems.md',815title: 'Using local Gems'816},817{818path: 'Merging-Metasploit-Payload-Gem-Updates.md'819},820]821},822{823path: 'Committer-Keys.md'824},825{826path: 'Metasploit-Loginpalooza.md'827},828{829path: 'Metasploit-Hackathons.md'830},831{832path: 'Downloads-by-Version.md'833}834]835},836{837title: 'Quality',838folder: 'quality',839children: [840{841path: 'Style-Tips.md'842},843{844path: 'Msftidy.md'845},846{847path: 'Using-Rubocop.md'848},849{850path: 'Common-Metasploit-Module-Coding-Mistakes.md'851},852{853path: 'Writing-Module-Documentation.md'854},855{856path: 'Loading-Test-Modules.md'857},858{859path: 'Measuring-Metasploit-Performance.md'860}861]862},863{864title: 'Google Summer of Code',865folder: 'google-summer-of-code',866children: [867{868path: 'How-to-Apply-to-GSoC.md'869},870{871path: 'GSoC-2017-Student-Proposal.md',872title: without_prefix('GSoC')873},874{875path: 'GSoC-2017-Project-Ideas.md',876title: without_prefix('GSoC')877},878{879path: 'GSoC-2018-Project-Ideas.md',880title: without_prefix('GSoC')881},882{883path: 'GSoC-2017-Mentor-Organization-Application.md',884title: without_prefix('GSoC')885},886{887path: 'GSoC-2019-Project-Ideas.md',888title: without_prefix('GSoC')889},890{891path: 'GSoC-2020-Project-Ideas.md',892title: without_prefix('GSoC')893},894{895path: 'GSoC-2021-Project-Ideas.md',896title: without_prefix('GSoC')897},898{899path: 'GSoC-2022-Project-Ideas.md',900title: without_prefix('GSoC')901},902{903path: 'GSoC-2023-Project-Ideas.md',904title: without_prefix('GSoC')905},906]907},908{909title: 'Proposals',910folder: 'propsals',911children: [912{913path: 'Bundled-Modules-Proposal.md'914},915{916path: 'MSF6-Feature-Proposals.md'917},918{919old_wiki_path: 'RFC---Metasploit-URL-support.md',920path: 'Metasploit-URL-support-proposal.md'921},922{923path: 'Uberhandler.md'924},925{926path: 'Work-needed-to-allow-msfdb-to-use-postgresql-common.md'927},928{929path: 'Payload-Rename-Justification.md'930},931{932path: 'Java-Meterpreter-Feature-Parity-Proposal.md'933}934]935},936{937title: 'Roadmap',938folder: 'roadmap',939children: [940{941path: 'Metasploit-Framework-Wish-List.md'942},943{944path: 'Metasploit-5.0-Release-Notes.md',945new_base_name: 'Metasploit-5-Release-Notes.md',946title: 'Metasploit Framework 5.0 Release Notes'947},948{949path: '2017-Roadmap-Review.md'950},951{952path: 'Metasploit-6.0-Development-Notes.md',953new_base_name: 'Metasploit-6-Release-Notes.md',954title: 'Metasploit Framework 6.0 Release Notes'955},956{957path: '2017-Roadmap.md'958},959{960path: 'Metasploit-Breaking-Changes.md'961},962{963old_wiki_path: 'Metasploit-Data-Service-Enhancements-(Goliath).md',964path: 'Metasploit-Data-Service-Enhancements-Goliath.md',965title: 'Metasploit Data Service'966},967]968},969]970},971{972path: 'Contact.md',973nav_order: 7974},975].freeze976977978