1<!DOCTYPE html> 2<html> 3 <head> 4 <meta charset="UTF-8"> 5<meta name="viewport" content="width=device-width, initial-scale=1.0"> 6<title> 7 File: README 8 9 — Ronin::App Documentation 10 11</title> 12 13 <link rel="stylesheet" href="css/style.css" type="text/css" /> 14 15 <link rel="stylesheet" href="css/common.css" type="text/css" /> 16
17<script type="text/javascript"> 18 pathId = "README"; 19 relpath = ''; 20</script>
20 21 22 23
23<script type="text/javascript" charset="utf-8" src="js/jquery.js"></script>
23 24 25
25<script type="text/javascript" charset="utf-8" src="js/app.js"></script>
25 26 27 28 </head> 29 <body> 30 <div class="nav_wrap"> 31 <iframe id="nav" src="class_list.html?1"></iframe> 32 <div id="resizer"></div> 33 </div> 34 35 <div id="main" tabindex="-1"> 36 <div id="header"> 37 <div id="menu"> 38 39 <a href="_index.html">Index</a> » 40 <span class="title">File: README</span> 41 42</div> 43 44 <div id="search"> 45 46 <a class="full_list_link" id="class_list_link" 47 href="class_list.html"> 48 49 <svg width="24" height="24"> 50 <rect x="0" y="4" width="24" height="4" rx="1" ry="1"></rect> 51 <rect x="0" y="12" width="24" height="4" rx="1" ry="1"></rect> 52 <rect x="0" y="20" width="24" height="4" rx="1" ry="1"></rect> 53 </svg> 54 </a> 55 56</div> 57 <div class="clear"></div> 58 </div> 59 60 <div id="content"><div id='filecontents'><h1 id="ronin-app">ronin-app</h1> 61 62<ul> 63<li><a href="https://ronin-rb.dev">Website</a></li> 64<li><a href="https://github.com/ronin-rb/docker/issues">Issues</a></li> 65<li><a href="https://hub.docker.com/r/roninrb/ronin">DockerHub</a></li> 66<li><a href="https://discord.gg/6WAb3PsVX9">Discord</a> | 67<a href="https://infosec.exchange/@ronin_rb">Mastodon</a></li> 68</ul> 69 70<p>ronin-app is a small web application that is meant to be ran locally by the 71user. It provides a web interface to <a href="https://github.com/ronin-rb/ronin-support#readme">ronin-support</a>, <a href="https://github.com/ronin-rb/ronin-repos#readme">ronin-repos</a>, <a href="https://github.com/ronin-rb/ronin-db#readme">ronin-db</a>, 72<a href="https://github.com/ronin-rb/ronin-payloads#readme">ronin-payloads</a>, <a href="https://github.com/ronin-rb/ronin-exploits#readme">ronin-exploits</a>, as well as automating 73<a href="https://github.com/ronin-rb/ronin-nmap#readme">ronin-nmap</a>, <a href="https://github.com/ronin-rb/ronin-masscan#readme">ronin-masscan</a>, <a href="https://github.com/ronin-rb/ronin-web-spider#readme">ronin-web-spider</a>, <a href="https://github.com/ronin-rb/ronin-recon#readme">ronin-recon</a>, and 74<a href="https://github.com/ronin-rb/ronin-vulns#readme">ronin-vulns</a>.</p> 75 76<h2 id="features">Features</h2> 77 78<ul> 79<li>Provides a web interface to explore and search the <a href="https://github.com/ronin-rb/ronin-db#readme">ronin database</a>.</li> 80<li>Allows managing <a href="https://github.com/ronin-rb/ronin-repos#readme">ronin-repos</a> from the web interface.</li> 81<li>Allows listing and building the built-in or installed 3rd-party 82<a href="https://github.com/ronin-rb/ronin-payloads#readme">payloads</a>.</li> 83<li>Allows listing installed 3rd-party <a href="https://github.com/ronin-rb/ronin-exploits#readme">exploits</a>.</li> 84<li>Supports automating <a href="https://nmap.org/">nmap</a> and <a href="https://github.com/robertdavidgraham/masscan#readme">masscan</a> scans and importing their results 85into the <a href="https://github.com/ronin-rb/ronin-db#readme">ronin database</a>.</li> 86<li>Supports automating <a href="https://github.com/ronin-rb/ronin-web-spider#readme">spidering websites</a> and importing all 87visited URLs into the <a href="https://github.com/ronin-rb/ronin-db#readme">ronin database</a>.</li> 88<li>Supports performing recon using <a href="https://github.com/ronin-rb/ronin-recon#readme">ronin-recon</a> and importing all discovered 89hostnames, IPs, and URLs into <a href="https://github.com/ronin-rb/ronin-db#readme">ronin database</a>.</li> 90<li>Supports testing URLs for web vulnerabilities using <a href="https://github.com/ronin-rb/ronin-vulns#readme">ronin-vulns</a>.</li> 91<li>Small memory footprint (~184K).</li> 92<li>Fast (~1.251ms response time).</li> 93</ul> 94 95<h2 id="screenshots">Screenshots</h2> 96 97<table> 98 <tbody> 99 <tr> 100 <td> 101 <img src="https://raw.githubusercontent.com/ronin-rb/ronin-app/main/screenshots/ronin_app_scanning_nmap.svg" /> 102 </td> 103 <td> 104 <img src="https://raw.githubusercontent.com/ronin-rb/ronin-app/main/screenshots/ronin_app_scanning_masscan.svg" /> 105 </td> 106 <td> 107 <img src="https://raw.githubusercontent.com/ronin-rb/ronin-app/main/screenshots/ronin_app_scanning_recon.svg" /> 108 </td> 109 <td> 110 <img src="https://raw.githubusercontent.com/ronin-rb/ronin-app/main/screenshots/ronin_app_scanning_spider.svg" /> 111 </td> 112 <td> 113 <img src="https://raw.githubusercontent.com/ronin-rb/ronin-app/main/screenshots/ronin_app_scanning_vulns.svg" /> 114 </td> 115 <td> 116 <img src="https://raw.githubusercontent.com/ronin-rb/ronin-app/main/screenshots/ronin_app_db.svg" /> 117 </td> 118 <td> 119 <img src="https://raw.githubusercontent.com/ronin-rb/ronin-app/main/screenshots/ronin_app_db_ip_address.svg" /> 120 </td> 121 </tr> 122 <tr> 123 <td> 124 <img src="https://raw.githubusercontent.com/ronin-rb/ronin-app/main/screenshots/ronin_app_repos.svg" /> 125 </td> 126 <td> 127 <img src="https://raw.githubusercontent.com/ronin-rb/ronin-app/main/screenshots/ronin_app_repos_show.svg" /> 128 </td> 129 <td> 130 <img src="https://raw.githubusercontent.com/ronin-rb/ronin-app/main/screenshots/ronin_app_payloads.svg" /> 131 </td> 132 <td> 133 <img src="https://raw.githubusercontent.com/ronin-rb/ronin-app/main/screenshots/ronin_app_payloads_show.svg" /> 134 </td> 135 <td> 136 <img src="https://raw.githubusercontent.com/ronin-rb/ronin-app/main/screenshots/ronin_app_payloads_build.svg" /> 137 </td> 138 <td> 139 <img src="https://raw.githubusercontent.com/ronin-rb/ronin-app/main/screenshots/ronin_app_exploits.svg" /> 140 </td> 141 <td> 142 <img src="https://raw.githubusercontent.com/ronin-rb/ronin-app/main/screenshots/ronin_app_exploits_show.svg" /> 143 </td> 144 </tr> 145 </tbody> 146</table> 147 148<h2 id="synopsis">Synopsis</h2> 149 150<pre class="code ruby"><code class="ruby">Usage: ronin-app [options] 151 152Options: 153 -V, --version Prints the version and exits 154 -H, --host IP The host to listen on (Default: localhost) 155 -p, --port PORT The port to listen on (Default: 1337) 156 --db NAME The ronin-db database to connect to 157 --db-uri URI The ronin-db database URI to connect to 158 -h, --help Print help information 159 160Starts the ronin web app 161</code></pre> 162 163<pre class="code shell"><code class="shell">$ ronin-app 164</code></pre> 165 166<p><strong>Note:</strong> the <code>ronin-app</code> command will automatically open a browser for 167<a href="http://localhost:1337">http://localhost:1337</a>, if ran in a real terminal.</p> 168 169<h2 id="requirements">Requirements</h2> 170 171<ul> 172<li><a href="https://sqlite.org/">libsqlite3</a></li> 173<li><a href="https://redis.io/">redis-server</a> >= 6.2</li> 174<li><a href="https://nmap.org/">nmap</a></li> 175<li><a href="https://github.com/robertdavidgraham/masscan#readme">masscan</a></li> 176<li><a href="https://www.ruby-lang.org/">Ruby</a> >= 3.1.0</li> 177</ul> 178 179<p><strong>Note:</strong> both <code>nmap</code> and <code>masscan</code> require additional Linux capabilities in 180order to be ran without <code>sudo</code> or <code>root</code> privileges.</p> 181 182<pre class="code shell"><code class="shell">sudo setcap cap_net_raw,cap_net_admin,cap_net_bind_service+eip "$(which nmap)" 183sudo setcap cap_net_raw,cap_net_admin,cap_net_bind_service+eip "$(which masscan)" 184</code></pre> 185 186<h2 id="security">Security</h2> 187 188<ul> 189<li>This app is intended to be ran locally.</li> 190<li>All HTML output is escaped with <code>Rack::Utils.escape_html</code>.</li> 191<li>All HTTP params are validated using <a href="https://dry-rb.org/gems/dry-vali
191dation/">dry-validation</a>.</li> 192</ul> 193 194<h2 id="development">Development</h2> 195 196<ol> 197<li><a href="https://github.com/ronin-rb/ronin/fork">Fork It!</a></li> 198<li>Clone It!</li> 199<li><code>cd ronin-app</code></li> 200<li><code>./scripts/setup</code></li> 201<li><code>git checkout -b my_feature</code></li> 202<li>Code It!</li> 203<li>Test It - <code>bundle exec rake spec</code></li> 204<li>Try It - <code>./scripts/server</code> then visit <a href="http://localhost:1337/">http://localhost:1337/</a></li> 205<li>Push It - <code>git push origin my_feature</code></li> 206</ol> 207 208<h3 id="docker-compose">docker-compose</h3> 209 210<p>You can also use <a href="https://docs.docker.com/compose/install/">docker-compose</a> to build and run the app:</p> 211 212<pre class="code shell"><code class="shell">$ docker-compose build 213$ docker-compose up 214</code></pre> 215 216<h3 id="directory-structure">Directory Structure</h3> 217 218<ul> 219<li><code>Gemfile</code> - defines all gem dependencies.</li> 220<li><code>Procfile</code> - defines the various services of the app that will be started.</li> 221<li><code>Procfile.dev</code> - defines the various services of the app that will be started 222in development mode.</li> 223<li><code>config.ru</code> - The main entry point for <code>rackup</code>/<code>puma</code>.</li> 224<li><code>config/</code> - Contains all app configuration files.</li> 225<li><code>lib/ronin/app/helpers/</code> - Contains all Sinatra helper modules which define methods that</li> 226<li><code>app.rb</code> - The main Rack app that contains HTTP routes.</li> 227<li><code>app/</code> - Contains sub-App classes that contains grouped HTTP routes</li> 228<li><code>workers.rb</code> - The main entry point for Sidekiq which loads all worker classes 229from <code>lib/workers/</code>.</li> 230<li><code>workers/</code> - Contains all Sidekiq worker classes. 231can be called within the views.</li> 232<li><code>lib/ronin/app/types.rb</code> - Defines custom <a href="https://dry-rb.org/gems/dry-types/">dry-types</a>.</li> 233<li><code>lib/ronin/app/types/</code> - Contains additional custom types.</li> 234<li><code>lib/ronin/app/validations/</code> - Contains <a href="https://dry-rb.org/gems/dry-validation/">dry-validation</a>s logic for validating 235submitted HTTP params.</li> 236<li><code>views/</code> - Contains all ERB views that are rendered by <code>app.rb</code>.</li> 237<li><code>views/layout.erb</code> - The main page layout view.</li> 238<li><code>public/</code> - Contains all static assets (images, CSS stylesheets, and 239JavaScript).</li> 240<li><code>scripts/</code> - Contains scripts for setting up or starting the app.</li> 241</ul> 242 243<h2 id="license">License</h2> 244 245<p>Copyright (C) 2023-2024 Hal Brodigan (<a href="mailto:[email protected]">[email protected]</a>)</p> 246 247<p>ronin-app is free software: you can redistribute it and/or modify 248it under the terms of the GNU Affero General Public License as published by 249the Free Software Foundation, either version 3 of the License, or 250(at your option) any later version.</p> 251 252<p>ronin-app is distributed in the hope that it will be useful, 253but WITHOUT ANY WARRANTY; without even the implied warranty of 254MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 255GNU Affero General Public License for more details.</p> 256 257<p>You should have received a copy of the GNU Affero General Public License 258along with ronin-app. If not, see <a href="http://www.gnu.org/licenses/">http://www.gnu.org/licenses/</a>.</p> 259</div></div> 260 261 <div id="footer"> 262 Generated on Mon Jul 22 14:08:49 2024 by 263 <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a> 264 0.9.36 (ruby-3.3.4). 265</div> 266 267 </div> 268 </body> 269</html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.