Sitemap
Mostafa shaban

Mostafa shaban

Creed is Root

From “Just an Error” to Full Read/Write Access on Someone Else’s Data

3 min readOct 5, 2026

--

Press enter or click to view image in full size

Hey, folks! While doing normal testing on the target, I noticed an **internal API** for the first time — I hadn’t paid much attention to it before. So I started poking at it. There’s an endpoint that’s supposed to just give you **metadata about your own product** — nothing fancy, tied to whatever product_id belongs to you.

Chapter 1: The Boring Start

I started simple. Sent this filter:

{product_id==00000000–0000–0000–0000–000000000000' OR 1=1 - }

And got back a **500 server error**:

query product tasks: ERROR: invalid input syntax for type uuid: “00000000–0000–0000–0000–000000000000' OR 1=1 — “ (SQLSTATE 22P02)

Kept trying a bunch of different payloads after that, and every single one gave me the exact same error. Then I said screw it, let’s go simple:

chapter 2 : Bingo!!

Then I said screw it, let’s go simple: !=*

BOOOM. All products loading. I so happy 😂

Reported it as SQL Injection, got flagged as **needs more info** — turned out it wasn’t injection at all. The real cause: **an unrecognized filter made the backend silently drop the WHERE clause** and return everything. Different cause, same wide-open result.

Chapter 3: Not Stopping There

First time seeing that endpoint, so I kept digging instead of walking away. Turned out it also supported GET and POST on a resource id:

Get Mostafa shaban’s stories in your inbox

Join Medium for free to get updates from this writer.

/products/{id}

Tried a GET on a resource that wasn’t mine. **Full metadata, no restrictions.** Actual content tied to someone else’s account, not just IDs and timestamps.

Lol!! all meta data from any prodect

Then I tried a POST to mess with the fields on that resource. Only **one field** actually changed — the url.

So I swapped the method to PATCH instead.

All fields changed !!🔥🔥

That’s the moment this stopped being “I can read data that isn’t mine” and became a real integrity problem one account quietly overwriting data another account depends on.

The creation flow also trusted any owner/account ID I supplied, letting me create resources under accounts I didn’t own.

here we go!!😍

Press enter or click to view image in full size

Thanks for reading.

Follow me:

GitHub · LinkedIn · X

--

--