~ / blogOnline
TS • Go • Python • Kali • Nmap • Wireshark • Burp Suite

Blog

Thoughts on development, design, and everything in between.

  • ModernAmusement Development
  • Shady Nathan Tawfik
  • Full-Stack · Data Science · ML/AI · Cybersecurity · Design · Open Source
Get in Touch →
Blog
Online
[v1.0.0]
35 posts
10/18/2026

The Door Beside the Front Door

An SSO gateway, a clean consent banner, a current LMS — and a mail backend answering anonymous requests beside it, a mailing-list host from 2010 and appliances sitting in 9.8-range advisories. 48 units, four waves, 445 findings: what a fleet finds when the front door is not the attack surface.

10/13/2026

One Page Load, 42.8 MB of Data — and Twelve Security Headers That Were Never Sent

A static SPA with 76,000 pre-rendered pages pulled 42.8 MB of raw data into the browser on every detail view. In parallel, the deployment config's header rules turned out to be inert. A field report on two bugs with the same root cause: convenience in routing.

10/12/2026

Security That Assumes the Attacker Uses the Front Door

A current, well-maintained WordPress site with a CDN and a managed web application firewall in front. No exploitable CVE, nothing to 'hack'. It was still undefended on three counts — because every control assumed the visitor would behave: the origin was reachable directly, no consent gate existed at all, and forged mail in the brand's name was delivered.

10/11/2026

The Fleet That Proved Itself Wrong

55 agent units, one shared map, and a bug-bounty run that ended by disproving its own best leads. A build log of the orchestration, the evidence discipline, and why a negative result is still a result.

10/11/2026

How I Built Bewertiq: Reading 10 Million Google Reviews as a Market Signal

A build log of five scraper generations, a SQLite-to-static-site pipeline, and the statistics that turn star ratings and deletion notices into a decision system.

10/11/2026

What Instagram Sees When You Automate It

A build log of a small Instagram automation stack — the worker, the queue, the pacing engine and the caps — and the detection research that shaped every guardrail.

10/9/2026

The Banner That Left the Screen: A Mobile Layout Postmortem

A privacy banner looked perfect on desktop and passed review. At 375px its primary call-to-action sat at x=452 in a 375px viewport — off-screen and untappable. The title refused to shrink, the value column collapsed to zero, and a global overflow guard hid the evidence. This is how a three-column grid fixed it.

10/9/2026

Tracked Without Asking: How the Web Identifies You After Cookies

Third-party cookies are going away, and tracking did not. Fingerprints are recomputed on every load, the TLS handshake is an identifier before any script runs, client hints re-expose a frozen user agent, and state hides in caches and first-party subdomains. A fresh-profile lab run shows a visitor leaving zero cookies and still being unique — and what actually helps.

10/8/2026

Perfect Consent, One Patch Behind: The Law Firm With the Cleanest Privacy Layer I Have Measured

A German law firm's website had the cleanest consent architecture I have measured — zero cookies and zero third-party requests before opt-in. It was also one patch behind a public unauthenticated XSS fix, shipped zero security headers on every page except the login, leaked tokens anonymously from its REST API, and left its mail trust chain half-built. Privacy maturity and security maturity are owned by different people.

10/7/2026

The Consent Gate That Was Never Attached: A Platform-Wide Tracking Bypass

A four-domain municipal Drupal multisite showed a flawless consent setup on content pages — and none at all on the routes where consent matters most. The banner was not broken: the consent library was never attached to system and legal routes, so analytics and a Meta pixel executed before opt-in on every domain.

10/7/2026

Consent Mode Is Not a Consent Gate

A digital agency's website had an up-to-date consent platform, a banner that rendered correctly and Google Consent Mode enabled — and still fired analytics, ads, Meta and LinkedIn before any opt-in, wrote cookies without consent and without Secure, and left its session cookie unprotected. Why signalling is not blocking, and how the fix was measured instead of argued about.

10/7/2026

What Your Browser Shares About You (Without Asking): A Live Demo in the Nav

Every visit transmits an IP address, HTTP headers and dozens of device properties — and their combination re-identifies you with over 90% accuracy, no cookies required. I built a privacy banner for this site that shows every visitor, live, exactly what their browser just revealed: computed locally, stored nowhere, and with the reasons I refuse to fingerprint anyone.

10/5/2026

The Second Pass: Three Blind Spots a Hardened WordPress Audit Missed

The first pass called the site hardened and rated it HIGH. A deeper second pass found an actively exploited WordPress core RCE, a credential-bound CORS reflection on the REST API and three installed-but-invisible plugins — and moved the rating to CRITICAL.

9/26/2026

A Paid API Key Sat In The Page, And It Worked

A law firm site with a review widget that rendered a billable geocoding key into the HTML. The finding is narrow, trivially automatable, and the most profitable line item in the report.

9/19/2026

Your Online Shop Exposes A Public API You Did Not Write

A lifestyle and commerce site on a current content platform with a store attached. Seventeen findings, and the store interface was the one nobody audited because it looked like a feature.

9/12/2026

A Nonce In The Page Is Not A Secret, And The Plugin Knew It

A business innovation network ran a patched content platform with fourteen findings. The interesting one was a feature left switched on that published its own request tokens in the page source.

9/5/2026

Modern Front End, Ancient Back Office: Auditing A Hybrid Estate

A petition platform ran a modern framework on the main domain and a legacy content system behind a raw server with no firewall. The modern side was excellent. The legacy side defined the risk.

8/29/2026

What A Ransomware Incident Teaches About The Week Before It Started

A public-sector network was exfiltrated for roughly a week before anyone noticed. This write-up is about the controls that would have shortened that dwell time, not about the attacker.

8/22/2026

The API Documentation Was Public, And It Was The Best Map You Can Ask For

An application built with an automated framework served interactive documentation and a machine-readable schema at a well-known path. Both were enabled by default and neither was behind a login.

8/15/2026

If TLS Enforcement Is Optional, Version Downgrades Become Boring

A university content platform served mixed protocol versions on some hosts. No cipher was weak, no certificate was expired, and the transport layer still failed the assessment.

8/8/2026

A Patched Estate With Six Findings And No Exploits: Reporting Discipline

A restaurant site behind a web application firewall. Every plugin was current, every known exploit failed, and the report still had six findings worth acting on.

8/1/2026

One Finding, Maximum Impact: A Permissive Cross-Origin Policy

A civic content platform on a modern stack produced a single finding of the highest severity. It needed no version check and no exploit; the browser already did the work.

7/25/2026

A Platform For Internal Communication, Exposed To The Internet

A public-facing cooperation and counselling platform ran a content system with three low-severity findings. The lesson was in what a low-severity result does not tell you.

7/18/2026

Error Tracking Telemetry Describes Your Architecture To Anyone With A Browser

A platform provider running a Java backend behind two reverse proxies with a modern front end. The interesting finding was not a vulnerability but an inventory: error tracking revealed the internal structure.

7/11/2026

The Legacy Instance Beside The Modern One Is The Real Estate

One organisation ran two generations of a content platform simultaneously. The modern one was current; the legacy one defined the risk, including a client library past end of life.

7/4/2026

Static Site, Serverless Functions, Twelve Findings

A site builder platform with a content delivery network in front and functions behind it. The static layer was clean; the function layer and the mail configuration were not.

6/27/2026

A Plugin Can Be Current And Still Hand Out Records To Anyone

A fully patched content management system carried a plugin with current releases and twelve findings. The pattern was authorisation: routes that answered before the permission callback ran.

6/20/2026

Error Pages Are An Unintentional API Documentation Endpoint

Across a mixed estate the same three leaks appeared again and again: stack traces, framework banners and absolute filesystem paths. Each one maps the internals for free.

6/13/2026

The Booking Plugin Is The Product, And The Product Is An Admin Surface

A training provider with a booking plugin exposed to the internet exposed its entire administrative surface with it: exports, attendee records, file uploads and an unauthenticated cron.

6/6/2026

A Row Level Security Policy Is A Boundary You Have To Test From The Client Side

A platform-generated application stored every tenant table behind row level security. The policy was correct on paper and bypassable in practice, because the client held a key the policy trusted too much.

5/30/2026

Twenty Findings, One Platform: How Volume Changes The Remediation Order

An industrial supplier with a large content surface produced twenty findings across seven categories. The value was in the ordering, not the count.

5/23/2026

A Single Page Application Hands You Its Own Route Map

A modern framework application with almost no server-side exposure still revealed its administrative surface, because the route table is compiled into the client bundle.

5/16/2026

Eight Attack Vectors, Zero Findings: What A Hardened Single Page Application Looks Like

A negative assessment is a result. This one documents why eight standard vectors failed against a statically served application behind an edge platform.

5/9/2026

WordPress User Enumeration Is Not The Finding, It Is The Multiplier

A tax advisory firm exposed every account slug through its public REST API, shipped no security headers at all, and left the login form without rate limiting.

5/2/2026

A Legacy Municipal CMS With Perfect Transport Security And No Clickjacking Protection

HSTS was immaculate on a German municipal court portal. One missing header still allowed framing, and the CSP permitted script injection outright.