PageSourceSearch

https://ronin-rb.dev/docs/ronin-app/

html ronin-rb.dev collected 2026-10-03 22:10:58 UTC 11,822 bytes, 269 lines download raw bytes

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    &mdash; 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> &raquo; 
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> &gt;= 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> &gt;= 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 &quot;$(which nmap)&quot;
183sudo setcap cap_net_raw,cap_net_admin,cap_net_bind_service+eip &quot;$(which masscan)&quot;
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.