<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Web Security on 思安录 | Thinking&#39;s Security Notes</title>
    <link>https://blog.1sec.day/en-gb/tags/web-security/</link>
    <description>Recent content in Web Security on 思安录 | Thinking&#39;s Security Notes</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en-gb</language>
    <managingEditor>Thinking</managingEditor>
    <webMaster>Thinking</webMaster>
    <lastBuildDate>Mon, 20 Jul 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://blog.1sec.day/en-gb/tags/web-security/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>0day Hunting the Day After xAI Open-Sourced grok-build (Part 4): ptyctl Test Server&#39;s Zero-Auth CORS and Cross-Origin RCE</title>
      <link>https://blog.1sec.day/en-gb/posts/2026-07-20-grok-cli-pty-csrf-rce/</link>
      <pubDate>Mon, 20 Jul 2026 00:00:00 +0000</pubDate>
      <author>Thinking</author>
      <guid>https://blog.1sec.day/en-gb/posts/2026-07-20-grok-cli-pty-csrf-rce/</guid>
      
      <description></description>
      
    </item>
    
    <item>
      <title>CVE-2025-53770 SharePoint WebPart Injection Deserialization RCE: Active Exploitation Before Patch Day</title>
      <link>https://blog.1sec.day/en-gb/posts/2025-07-15-cve-2025-53770-sharepoint-rce/</link>
      <pubDate>Tue, 15 Jul 2025 00:00:00 +0000</pubDate>
      <author>Thinking</author>
      <guid>https://blog.1sec.day/en-gb/posts/2025-07-15-cve-2025-53770-sharepoint-rce/</guid>
      
      <description>&lt;p&gt;SharePoint treats WebPart rendering as &amp;ldquo;trusted internal&amp;rdquo;, but the ToolPane.aspx endpoint accepts unauthenticated POST — attackers construct a malicious WebPart payload that triggers a .NET deserialization gadget chain, executing arbitrary commands on the SharePoint Server without authentication, and Microsoft has confirmed it is being exploited in the wild.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>CVE-2025-44148 MailEnable Webmail Reflected XSS: Unsanitized state Parameter in failure.aspx</title>
      <link>https://blog.1sec.day/en-gb/posts/2025-06-15-cve-2025-44148-mailenable-xss/</link>
      <pubDate>Sun, 15 Jun 2025 00:00:00 +0000</pubDate>
      <author>Thinking</author>
      <guid>https://blog.1sec.day/en-gb/posts/2025-06-15-cve-2025-44148-mailenable-xss/</guid>
      
      <description>&lt;p&gt;MailEnable Webmail&amp;rsquo;s &lt;code&gt;failure.aspx&lt;/code&gt; writes the &lt;code&gt;state&lt;/code&gt; parameter verbatim into the HTML when displaying the error page — attackers craft a &lt;code&gt;state=&amp;lt;script&amp;gt;...&amp;lt;/script&amp;gt;&lt;/code&gt; URL, the victim clicks, MailEnable writes it without sanitization, triggering reflected XSS — stealing sessions, cookies, launching phishing.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>CVE-2025-55184 React Server Components Infinite Loop DoS: A Single Payload Locks CPU</title>
      <link>https://blog.1sec.day/en-gb/posts/2025-05-15-cve-2025-55184-react-rsc-dos/</link>
      <pubDate>Thu, 15 May 2025 00:00:00 +0000</pubDate>
      <author>Thinking</author>
      <guid>https://blog.1sec.day/en-gb/posts/2025-05-15-cve-2025-55184-react-rsc-dos/</guid>
      
      <description>&lt;p&gt;React Server Components hand &amp;ldquo;client-sent request parameters&amp;rdquo; to the deserialization parser — attackers send a specially crafted payload, triggering the RSC parser to enter an infinite loop during deserialization, immediately consuming 100% CPU, and putting the entire service in an unavailable state.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>Explore CMS v1.1 Reflected XSS: How a Community CMS&#39;s UserID Field Became the Attack Entry Point</title>
      <link>https://blog.1sec.day/en-gb/posts/2025-05-15-zero-day-explore-cms-xss/</link>
      <pubDate>Thu, 15 May 2025 00:00:00 +0000</pubDate>
      <author>Thinking</author>
      <guid>https://blog.1sec.day/en-gb/posts/2025-05-15-zero-day-explore-cms-xss/</guid>
      
      <description>&lt;p&gt;The &lt;code&gt;user/login.php&lt;/code&gt; and &lt;code&gt;admin/login.php&lt;/code&gt; endpoints in Explore CMS v1.1 perform zero sanitization or validation on the &lt;code&gt;UserID&lt;/code&gt; field — an attacker can trigger reflected XSS with the simplest &lt;code&gt;&amp;lt;script&amp;gt;alert(1)&amp;lt;/script&amp;gt;&lt;/code&gt; payload, stealing sessions, cookies, and email content. This is especially dangerous for community CMS users.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>CVE-2025-32395 Vite Dev Server Path Traversal: # Character Bypass of server.fs.deny</title>
      <link>https://blog.1sec.day/en-gb/posts/2025-04-15-cve-2025-32395-vite-pathtrav/</link>
      <pubDate>Tue, 15 Apr 2025 00:00:00 +0000</pubDate>
      <author>Thinking</author>
      <guid>https://blog.1sec.day/en-gb/posts/2025-04-15-cve-2025-32395-vite-pathtrav/</guid>
      
      <description>&lt;p&gt;Vite Dev Server&amp;rsquo;s &lt;code&gt;server.fs.deny&lt;/code&gt; middleware uses regex matching on the URL to refuse access to files outside the project directory — but the # character per RFC 9112/9113 should only be used as a URL fragment, while Node.js by default allows # in the path. Attackers use this difference to craft &lt;code&gt;/src/safe.txt#/../../../unsafe.txt&lt;/code&gt;, so fs.deny sees &lt;code&gt;/src/safe.txt&lt;/code&gt; (in whitelist) but the filesystem actually accesses &lt;code&gt;unsafe.txt&lt;/code&gt; (outside whitelist).&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>CVE-2025-4123 Grafana Full-Read SSRF &#43; Account Takeover: Open Redirect &#43; CSPT &#43; Client-Side Traversal Chain</title>
      <link>https://blog.1sec.day/en-gb/posts/2025-04-15-cve-2025-4123-grafana-ssrf/</link>
      <pubDate>Tue, 15 Apr 2025 00:00:00 +0000</pubDate>
      <author>Thinking</author>
      <guid>https://blog.1sec.day/en-gb/posts/2025-04-15-cve-2025-4123-grafana-ssrf/</guid>
      
      <description>&lt;p&gt;Grafana&amp;rsquo;s staticHandler returns 302 when a directory is missing the trailing &lt;code&gt;/&lt;/code&gt; — attackers use &lt;code&gt;\attacker.com/?&lt;/code&gt; so FileSystem.Open parses it as a legitimate directory, but http.Redirect outputs it as an external URL; combined with render endpoint and plugin-app explore client-side path traversal, the three-stage chain delivers Account Takeover.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>CVE-2025-30406 CentreStack Deserialization to RCE: Hard-coded Machine Key &#43; ASP.NET ViewState Exploitation</title>
      <link>https://blog.1sec.day/en-gb/posts/2025-04-01-cve-2025-30406-centrestack-deserialize/</link>
      <pubDate>Tue, 01 Apr 2025 00:00:00 +0000</pubDate>
      <author>Thinking</author>
      <guid>https://blog.1sec.day/en-gb/posts/2025-04-01-cve-2025-30406-centrestack-deserialize/</guid>
      
      <description>&lt;p&gt;CentreStack hard-codes ASP.NET&amp;rsquo;s MachineKey (the validation key for ViewState signing) into the product configuration — attackers only need to extract this key from the product source or binary, use ysoserial to craft a malicious ViewState, and trigger ASP.NET-side deserialization to execute arbitrary commands; the entire attack chain requires no authentication.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>CVE-2025-29927 Next.js Authentication Bypass: x-middleware-subrequest Recursion Depth Evasion</title>
      <link>https://blog.1sec.day/en-gb/posts/2025-03-22-cve-2025-29927-nextjs-auth-bypass/</link>
      <pubDate>Sat, 22 Mar 2025 00:00:00 +0000</pubDate>
      <author>Thinking</author>
      <guid>https://blog.1sec.day/en-gb/posts/2025-03-22-cve-2025-29927-nextjs-auth-bypass/</guid>
      
      <description>&lt;p&gt;Next.js uses the x-middleware-subrequest header with recursion depth (MAX_RECURSION_DEPTH=5) to decide &amp;ldquo;is the current request a legitimate subrequest?&amp;rdquo; — attackers only need to put 5 repeated middleware paths in the header to trigger the &amp;ldquo;internal subrequest&amp;rdquo; judgment and completely skip middleware&amp;rsquo;s authentication, authorization and CSP checks.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>CVE-2025-24813 Apache Tomcat Path Equivalence &#43; Persistent Session RCE: Partial PUT and Default Servlet Converging</title>
      <link>https://blog.1sec.day/en-gb/posts/2025-03-15-cve-2025-24813-tomcat-path/</link>
      <pubDate>Sat, 15 Mar 2025 00:00:00 +0000</pubDate>
      <author>Thinking</author>
      <guid>https://blog.1sec.day/en-gb/posts/2025-03-15-cve-2025-24813-tomcat-path/</guid>
      
      <description>&lt;p&gt;Tomcat&amp;rsquo;s default servlet serves as a &amp;ldquo;static file server&amp;rdquo; with both read and write capability exposed — the attacker uses a Content-Range partial PUT to write a JSP payload into Tomcat&amp;rsquo;s work directory, then a GET request makes default servlet compile and execute it as JSP. The whole RCE chain completes on the public internet.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>CVE-2025-27415 Nuxt.js Cache Poisoning DoS: Newline Bypass on Route Regex</title>
      <link>https://blog.1sec.day/en-gb/posts/2025-03-15-cve-2025-27415-nuxt-cache-dos/</link>
      <pubDate>Sat, 15 Mar 2025 00:00:00 +0000</pubDate>
      <author>Thinking</author>
      <guid>https://blog.1sec.day/en-gb/posts/2025-03-15-cve-2025-27415-nuxt-cache-dos/</guid>
      
      <description>&lt;p&gt;Nuxt.js&amp;rsquo;s Nitro route regex treats newline (\n) as a legal character — the attacker stuffs newlines and spaces into the URL, bypasses the route regex&amp;rsquo;s key extraction, and makes Nitro write an empty key into the cache. Repeated requests grow the cache without bound and exhaust server memory for DoS.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>CVE-2024-12877 GiveWP PHP Object Injection: When unserialize Meets Magic Methods</title>
      <link>https://blog.1sec.day/en-gb/posts/2025-02-15-cve-2024-12877-givewp-pop/</link>
      <pubDate>Sat, 15 Feb 2025 00:00:00 +0000</pubDate>
      <author>Thinking</author>
      <guid>https://blog.1sec.day/en-gb/posts/2025-02-15-cve-2024-12877-givewp-pop/</guid>
      
      <description>&lt;p&gt;GiveWP calls unserialize() on user-controlled fields, and PHP automatically fires magic methods when deserializing. An attacker only needs to ship an object with the right magic method — PHP itself will run the attacker&amp;rsquo;s code, bypassing the early is_serialized regex that only recognized array and object types.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>CVE-2024-12877 GiveWP PHP Object Injection: unserialize vs. Regex, a Futile Fight</title>
      <link>https://blog.1sec.day/en-gb/posts/2025-01-15-cve-2024-12877-givewp-deserialization/</link>
      <pubDate>Wed, 15 Jan 2025 00:00:00 +0000</pubDate>
      <author>Thinking</author>
      <guid>https://blog.1sec.day/en-gb/posts/2025-01-15-cve-2024-12877-givewp-deserialization/</guid>
      
      <description>&lt;p&gt;GiveWP calls unserialize() on user input and tries to gate it with a regex &amp;ldquo;is this serialized?&amp;rdquo; check. But as long as the underlying call is unserialize, regex is decoration. Once the attacker slips past the regex, magic methods like __wakeup() take over execution flow — and the chain rolls from injection to RCE.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>CVE-2024-10793 WP Activity Log: Stored XSS to RCE in the Audit Page</title>
      <link>https://blog.1sec.day/en-gb/posts/2024-11-15-cve-2024-10793-wp-activity-log-rce/</link>
      <pubDate>Wed, 25 Dec 2024 00:00:00 +0000</pubDate>
      <author>Thinking</author>
      <guid>https://blog.1sec.day/en-gb/posts/2024-11-15-cve-2024-10793-wp-activity-log-rce/</guid>
      
      <description>&lt;p&gt;WP Activity Log writes user behavior into the log page with zero sanitization. Once the stored XSS fires, the attacker grabs the admin nonce and uploads a PHP webshell — the entire chain goes from a single log entry all the way to RCE.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>CVE-2024-10793 WP Activity Log Stored XSS to RCE: Unsanitized Writes to the Admin Render Plane</title>
      <link>https://blog.1sec.day/en-gb/posts/2024-12-19-cve-2024-10793-wp-activitylog-xss/</link>
      <pubDate>Thu, 19 Dec 2024 00:00:00 +0000</pubDate>
      <author>Thinking</author>
      <guid>https://blog.1sec.day/en-gb/posts/2024-12-19-cve-2024-10793-wp-activitylog-xss/</guid>
      
      <description>&lt;p&gt;WP Activity Log treats the admin&amp;rsquo;s &amp;ldquo;activity log&amp;rdquo; panel as a trusted render plane, but leaves the write path unsanitized — an attacker injects HTML through admin-ajax, and any admin who opens the panel is compromised. With stolen nonce credentials plus a plugin upload, the chain from anonymous POST to RCE is complete.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>Three npm Vulnerabilities in lunary-ai: SAML XSS, IDOR, and Privilege Escalation on the Same Trust Chain</title>
      <link>https://blog.1sec.day/en-gb/posts/2024-12-19-lunary-3-cves/</link>
      <pubDate>Thu, 19 Dec 2024 00:00:00 +0000</pubDate>
      <author>Thinking</author>
      <guid>https://blog.1sec.day/en-gb/posts/2024-12-19-lunary-3-cves/</guid>
      
      <description>&lt;p&gt;The same npm package &lt;code&gt;lunary-ai/lunary&lt;/code&gt; (before 1.6.7) exposed three CVEs at once — Stored XSS in SAML metadata, IDOR in the PATCH score endpoint, and Privilege Escalation in the PATCH model endpoint. All three trace to the same root: &lt;strong&gt;the boundary between authentication and authorization, the one that&amp;rsquo;s so easy to overlook&lt;/strong&gt;.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>CVE-2024-52875 Kerio Control CRLF Injection to 1-click RCE: silent firewall takeover</title>
      <link>https://blog.1sec.day/en-gb/posts/2024-12-16-cve-2024-52875-kerio-crlf/</link>
      <pubDate>Mon, 16 Dec 2024 00:00:00 +0000</pubDate>
      <author>Thinking</author>
      <guid>https://blog.1sec.day/en-gb/posts/2024-12-16-cve-2024-52875-kerio-crlf/</guid>
      
      <description>&lt;p&gt;The Kerio Control firewall&amp;rsquo;s web admin interface does not filter CRLF characters. An attacker crafts a malicious link, lures the admin to click, and gets a shell on the firewall with 1-click.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>CVE-2024-46982 Next.js Cache Poisoning: silent hijacking of non-dynamic SSR pages</title>
      <link>https://blog.1sec.day/en-gb/posts/2024-11-15-cve-2024-46982-nextjs-cache/</link>
      <pubDate>Fri, 15 Nov 2024 00:00:00 +0000</pubDate>
      <author>Thinking</author>
      <guid>https://blog.1sec.day/en-gb/posts/2024-11-15-cve-2024-46982-nextjs-cache/</guid>
      
      <description>&lt;p&gt;Next.js non-dynamic SSR pages do not isolate user-specific data at the cache layer. An attacker poisons the cache with a malicious Host header, and all subsequent users receive the poisoned response.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>CVE-2024-9264 Grafana DuckDB SQLi to RCE: authenticated database piercing</title>
      <link>https://blog.1sec.day/en-gb/posts/2024-10-15-cve-2024-9264-grafana-sqli/</link>
      <pubDate>Tue, 15 Oct 2024 00:00:00 +0000</pubDate>
      <author>Thinking</author>
      <guid>https://blog.1sec.day/en-gb/posts/2024-10-15-cve-2024-9264-grafana-sqli/</guid>
      
      <description>&lt;p&gt;Grafana 11.0.0-11.2.1&amp;rsquo;s SQL query interface allows authenticated users to inject DuckDB commands, read arbitrary files, and under specific configurations, achieve RCE directly.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>CVE-2024-5420 SEH UTN Server XSS: cross-site scripting in USB device management interface</title>
      <link>https://blog.1sec.day/en-gb/posts/2024-08-15-cve-2024-5420-utnserver-xss/</link>
      <pubDate>Thu, 15 Aug 2024 00:00:00 +0000</pubDate>
      <author>Thinking</author>
      <guid>https://blog.1sec.day/en-gb/posts/2024-08-15-cve-2024-5420-utnserver-xss/</guid>
      
      <description>&lt;p&gt;The SEH UTN Server&amp;rsquo;s USB device management web interface does not filter user input. An attacker crafts a malicious URL to inject JavaScript and steal the admin session.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>CVE-2024-27956 WP Automatic SQL Injection: from 9.9 plugin bug to admin account takeover</title>
      <link>https://blog.1sec.day/en-gb/posts/2024-07-15-cve-2024-27956-wp-automatic-sqli/</link>
      <pubDate>Mon, 15 Jul 2024 00:00:00 +0000</pubDate>
      <author>Thinking</author>
      <guid>https://blog.1sec.day/en-gb/posts/2024-07-15-cve-2024-27956-wp-automatic-sqli/</guid>
      
      <description>&lt;p&gt;The WordPress valvePress/Automatic plugin does not filter %0a or null bytes in the auth parameter. An attacker bypasses auth, runs SQL injection through the q parameter, and eventually creates an eviladmin account to take over the site.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>CVE-2024-38475 Apache HTTPD mod_rewrite path traversal: from BlackHat 2024 to RCE</title>
      <link>https://blog.1sec.day/en-gb/posts/2024-07-15-cve-2024-38475-apache-rewrite/</link>
      <pubDate>Mon, 15 Jul 2024 00:00:00 +0000</pubDate>
      <author>Thinking</author>
      <guid>https://blog.1sec.day/en-gb/posts/2024-07-15-cve-2024-38475-apache-rewrite/</guid>
      
      <description>&lt;p&gt;A path-matching logic flaw in Apache HTTPD mod_rewrite, CVSS 9.1, disclosed at BlackHat 2024. An attacker crafts a special URL to bypass rewrite rules and access restricted files.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>CVE-2024-40725 Apache HTTPD HTTP request smuggling: Content-Length parsing inconsistency</title>
      <link>https://blog.1sec.day/en-gb/posts/2024-07-15-cve-2024-40725-apache-smuggling/</link>
      <pubDate>Mon, 15 Jul 2024 00:00:00 +0000</pubDate>
      <author>Thinking</author>
      <guid>https://blog.1sec.day/en-gb/posts/2024-07-15-cve-2024-40725-apache-smuggling/</guid>
      
      <description>&lt;p&gt;Apache HTTPD processes Content-Length headers with special characters differently from the proxy/backend, letting an attacker craft a special request to perform HTTP request smuggling.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>CVE-2024-4956 Sonatype Nexus OSS Path Traversal: from artifact repository to arbitrary file read</title>
      <link>https://blog.1sec.day/en-gb/posts/2024-07-15-cve-2024-4956-nexus-traversal/</link>
      <pubDate>Mon, 15 Jul 2024 00:00:00 +0000</pubDate>
      <author>Thinking</author>
      <guid>https://blog.1sec.day/en-gb/posts/2024-07-15-cve-2024-4956-nexus-traversal/</guid>
      
      <description>&lt;p&gt;Sonatype Nexus Repository OSS does not sufficiently filter paths, letting an attacker craft a special URL to read arbitrary files on the server without authentication.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>CVE-2024-38094 Microsoft SharePoint RCE: unauthenticated remote code execution</title>
      <link>https://blog.1sec.day/en-gb/posts/2024-07-09-cve-2024-38094-sharepoint-rce/</link>
      <pubDate>Tue, 09 Jul 2024 00:00:00 +0000</pubDate>
      <author>Thinking</author>
      <guid>https://blog.1sec.day/en-gb/posts/2024-07-09-cve-2024-38094-sharepoint-rce/</guid>
      
      <description>&lt;p&gt;A remote code execution vulnerability in Microsoft SharePoint Server, CVSS 6.3, lets an attacker bypass authentication via a crafted request and execute arbitrary code, affecting a large number of enterprise SharePoint deployments.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>CVE-2023-7137 Client Details System 1.0 SQL Injection: classic boolean-based bug in uemail</title>
      <link>https://blog.1sec.day/en-gb/posts/2024-07-04-cve-2023-7137-client-details-sqli/</link>
      <pubDate>Thu, 04 Jul 2024 00:00:00 +0000</pubDate>
      <author>Thinking</author>
      <guid>https://blog.1sec.day/en-gb/posts/2024-07-04-cve-2023-7137-client-details-sqli/</guid>
      
      <description>&lt;p&gt;Client Details System 1.0 concatenates the uemail parameter directly into a SQL query. An attacker uses the classic OR 1=1 to bypass login, then hands the request to SQLmap to dump the entire database.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>CVE-2024-7954 Prote_plume Plugin RCE: from open-source security tool to unauthenticated RCE</title>
      <link>https://blog.1sec.day/en-gb/posts/2024-05-20-cve-2024-7954-prote-plume-rce/</link>
      <pubDate>Mon, 20 May 2024 00:00:00 +0000</pubDate>
      <author>Thinking</author>
      <guid>https://blog.1sec.day/en-gb/posts/2024-05-20-cve-2024-7954-prote-plume-rce/</guid>
      
      <description>&lt;p&gt;The Prote_plume security scanning plugin itself contains an unauthenticated RCE, CVSS 9.8. An attacker can execute arbitrary commands on the server with a simple request.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>CVE-2023-50164 Apache Struts File Upload Path RCE: A Classic Bug in a Classic Framework</title>
      <link>https://blog.1sec.day/en-gb/posts/2024-05-15-cve-2023-50164-struts-rce/</link>
      <pubDate>Wed, 15 May 2024 00:00:00 +0000</pubDate>
      <author>Thinking</author>
      <guid>https://blog.1sec.day/en-gb/posts/2024-05-15-cve-2023-50164-struts-rce/</guid>
      
      <description>&lt;p&gt;Apache Struts&amp;rsquo; file upload parameter handling allows path manipulation — an attacker uploads a file to an arbitrary location and triggers RCE via OGNL injection.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>CVE-2023-46943 JWT Token Verification Bypass: from missing signature checks to identity spoofing</title>
      <link>https://blog.1sec.day/en-gb/posts/2024-05-01-cve-2023-46943-jwt-bypass/</link>
      <pubDate>Wed, 01 May 2024 00:00:00 +0000</pubDate>
      <author>Thinking</author>
      <guid>https://blog.1sec.day/en-gb/posts/2024-05-01-cve-2023-46943-jwt-bypass/</guid>
      
      <description>&lt;p&gt;JWT libraries do not enforce signature checks by default — developers have to opt in. An attacker changes alg to none or swaps the key to bypass authentication directly.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>CVE-2024-4439 WordPress Core Unauthenticated Stored XSS: Block Editor rendering chain</title>
      <link>https://blog.1sec.day/en-gb/posts/2024-04-09-cve-2024-4439-wp-xss/</link>
      <pubDate>Tue, 09 Apr 2024 00:00:00 +0000</pubDate>
      <author>Thinking</author>
      <guid>https://blog.1sec.day/en-gb/posts/2024-04-09-cve-2024-4439-wp-xss/</guid>
      
      <description>&lt;p&gt;WordPress Core versions prior to 6.5 do not sufficiently filter content when rendering in the Block Editor. An attacker-crafted post can trigger an unauthenticated stored XSS.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>CVE-2024-23724 Ghost CMS SVG Stored XSS: from avatar upload to Owner takeover</title>
      <link>https://blog.1sec.day/en-gb/posts/2024-03-22-cve-2024-23724-ghost-xss/</link>
      <pubDate>Fri, 22 Mar 2024 00:00:00 +0000</pubDate>
      <author>Thinking</author>
      <guid>https://blog.1sec.day/en-gb/posts/2024-03-22-cve-2024-23724-ghost-xss/</guid>
      
      <description>&lt;p&gt;Ghost CMS lets users upload SVG files as avatars without sanitization. An attacker uses a JavaScript-bearing SVG to hijack the Owner&amp;rsquo;s session and escalate from Contributor to Admin to Owner.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>CVE-2024-29291 Laravel database credential leakage: the PDOException logging mistake</title>
      <link>https://blog.1sec.day/en-gb/posts/2024-03-22-cve-2024-29291-laravel-cred-leak/</link>
      <pubDate>Fri, 22 Mar 2024 00:00:00 +0000</pubDate>
      <author>Thinking</author>
      <guid>https://blog.1sec.day/en-gb/posts/2024-03-22-cve-2024-29291-laravel-cred-leak/</guid>
      
      <description>&lt;p&gt;When a PDO exception is thrown, Laravel writes the full database connection information, including the password, to the log. Anyone who gets the log can connect to the database with the leaked DSN, user, and password.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>CVE-2023-7028 GitLab Account Takeover: dual-recipient password reset</title>
      <link>https://blog.1sec.day/en-gb/posts/2024-03-14-cve-2023-7028-gitlab-ato/</link>
      <pubDate>Thu, 14 Mar 2024 00:00:00 +0000</pubDate>
      <author>Thinking</author>
      <guid>https://blog.1sec.day/en-gb/posts/2024-03-14-cve-2023-7028-gitlab-ato/</guid>
      
      <description>&lt;p&gt;GitLab&amp;rsquo;s password reset flow lets a single request deliver mail to multiple addresses. The attacker appends their own inbox to the victim&amp;rsquo;s reset request and takes over the account.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>CVE-2023-6553 WordPress Backup Migration Unauthenticated RCE: PHP filter chain weaponized</title>
      <link>https://blog.1sec.day/en-gb/posts/2024-02-29-cve-2023-6553-backup-migration-rce/</link>
      <pubDate>Thu, 29 Feb 2024 00:00:00 +0000</pubDate>
      <author>Thinking</author>
      <guid>https://blog.1sec.day/en-gb/posts/2024-02-29-cve-2023-6553-backup-migration-rce/</guid>
      
      <description>&lt;p&gt;The WordPress Backup Migration plugin&amp;rsquo;s &lt;code&gt;includes/backup-heart.php&lt;/code&gt; endpoint mishandles user input. An attacker uses a PHP filter chain to write a shell to disk and take over the server without authentication.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>CVE-2023-4357 Chrome XEE on WebBrowsers: from XML external entity to arbitrary file read</title>
      <link>https://blog.1sec.day/en-gb/posts/2024-01-15-cve-2023-4357-chrome-xee/</link>
      <pubDate>Mon, 15 Jan 2024 00:00:00 +0000</pubDate>
      <author>Thinking</author>
      <guid>https://blog.1sec.day/en-gb/posts/2024-01-15-cve-2023-4357-chrome-xee/</guid>
      
      <description>&lt;p&gt;The Chrome browser&amp;rsquo;s XML parser does not disable external entity loading when processing user-controlled XML. An attacker crafts malicious XML to read local files.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>CVE-2024-22144 WordPress GOTMLS Plugin Code Injection: a 200k-install string concatenation bug</title>
      <link>https://blog.1sec.day/en-gb/posts/2024-01-15-cve-2024-22144-gotmls-rce/</link>
      <pubDate>Mon, 15 Jan 2024 00:00:00 +0000</pubDate>
      <author>Thinking</author>
      <guid>https://blog.1sec.day/en-gb/posts/2024-01-15-cve-2024-22144-gotmls-rce/</guid>
      
      <description>&lt;p&gt;The WordPress GOTMLS plugin (200k+ active installs) does not parameterize user input. An attacker can run arbitrary PHP on the server through simple string concatenation.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>CVE-2024-34351 Next.js SSRF: Server Actions and the Host Header&#39;s Quiet Collusion</title>
      <link>https://blog.1sec.day/en-gb/posts/2024-01-15-cve-2024-34351-nextjs-ssrf/</link>
      <pubDate>Mon, 15 Jan 2024 00:00:00 +0000</pubDate>
      <author>Thinking</author>
      <guid>https://blog.1sec.day/en-gb/posts/2024-01-15-cve-2024-34351-nextjs-ssrf/</guid>
      
      <description>&lt;p&gt;Next.js&amp;rsquo; Server Actions trust the user-controlled Host header during a redirect flow. An apparently innocent internal fetch exposes internal HTTP services to any external attacker — and a Flask pivot upgrades the SSRF from a ping to a full read.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>CVE-2023-50164 Apache Struts: Path Traversal in File Upload to RCE</title>
      <link>https://blog.1sec.day/en-gb/posts/2023-05-15-cve-2023-50164-struts-rce/</link>
      <pubDate>Fri, 15 Dec 2023 00:00:00 +0000</pubDate>
      <author>Thinking</author>
      <guid>https://blog.1sec.day/en-gb/posts/2023-05-15-cve-2023-50164-struts-rce/</guid>
      
      <description>&lt;p&gt;Apache Struts&amp;rsquo; ActionSupport does not strictly validate upload paths, so changing a single multipart field name lets attackers drop a webshell straight into Tomcat webapps — yet another round of the old path-traversal-to-RCE story hitting Struts in 2023.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>CVE-2023-49103 &#43; CVE-2023-49105 ownCloud Info Leak &#43; Privilege Escalation to RCE Chain: How PHPinfo Exposure Became the Attacker&#39;s Key</title>
      <link>https://blog.1sec.day/en-gb/posts/2023-11-15-cve-2023-49103-49105-owncloud-rce/</link>
      <pubDate>Wed, 15 Nov 2023 00:00:00 +0000</pubDate>
      <author>Thinking</author>
      <guid>https://blog.1sec.day/en-gb/posts/2023-11-15-cve-2023-49103-49105-owncloud-rce/</guid>
      
      <description>&lt;p&gt;ownCloud exposes the full PHPinfo page on a few endpoints such as &lt;code&gt;/settings/phpinfo&lt;/code&gt; (CVSS 10), and at the same time the WebDAV URL signature defaults to an empty string when the user has not configured a signing key, allowing the attacker to forge a request for any username (CVSS 9.8) — the two CVEs combine into a complete attack chain: PHPinfo exposure gives away ImageMagick / GraphQL information → WebDAV signature forgery lets the attacker impersonate any user → old ImageMagick vulnerability triggers RCE.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>CVE-2023-43341 Evolution CMS Reflected XSS: Reflected Attack Surface in the Admin Panel</title>
      <link>https://blog.1sec.day/en-gb/posts/2023-09-15-cve-2023-43341-evolution-xss/</link>
      <pubDate>Fri, 15 Sep 2023 00:00:00 +0000</pubDate>
      <author>Thinking</author>
      <guid>https://blog.1sec.day/en-gb/posts/2023-09-15-cve-2023-43341-evolution-xss/</guid>
      
      <description>&lt;p&gt;Evolution CMS lacks escape on multiple parameters in the admin panel — URLs crafted by attackers directly trigger XSS when an admin clicks them, giving full backend control.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>CVE-2023-38286 Spring Boot Admin SSTI: Thymeleaf Expression Injection to RCE</title>
      <link>https://blog.1sec.day/en-gb/posts/2023-08-22-cve-2023-38286-spring-ssti/</link>
      <pubDate>Tue, 22 Aug 2023 00:00:00 +0000</pubDate>
      <author>Thinking</author>
      <guid>https://blog.1sec.day/en-gb/posts/2023-08-22-cve-2023-38286-spring-ssti/</guid>
      
      <description>&lt;p&gt;Spring Boot Admin&amp;rsquo;s UI view layer uses Thymeleaf — but Thymeleaf prior to 3.1.0&amp;rsquo;s view name resolution allows attackers to inject SpEL expressions via request headers, and the template engine executes arbitrary Java code when parsing the view path.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>CVE-2023-4357 Chrome LibXSLT XEE: The XML External Entity Surface Browsers Forgot</title>
      <link>https://blog.1sec.day/en-gb/posts/2023-01-15-cve-2023-4357-chrome-xee/</link>
      <pubDate>Tue, 22 Aug 2023 00:00:00 +0000</pubDate>
      <author>Thinking</author>
      <guid>https://blog.1sec.day/en-gb/posts/2023-01-15-cve-2023-4357-chrome-xee/</guid>
      
      <description>&lt;p&gt;WebKit-based browsers like Chrome ship LibXSLT as their default XSL engine, but its document() function still allows loading external entities — so file:// resources outside the sandbox quietly get read. This is a browser-side XEE writeup built around a consistency gap.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>CVE-2023-25157 GeoServer SQLi: Property Injection in OGC API Filters</title>
      <link>https://blog.1sec.day/en-gb/posts/2023-02-15-cve-2023-25157-geoserver-sqli/</link>
      <pubDate>Sat, 22 Apr 2023 00:00:00 +0000</pubDate>
      <author>Thinking</author>
      <guid>https://blog.1sec.day/en-gb/posts/2023-02-15-cve-2023-25157-geoserver-sqli/</guid>
      
      <description>&lt;p&gt;GeoServer&amp;rsquo;s WFS/WMS GetFeature requests accept OGC Filter parameters — but the property name field has zero SQL escape, and attackers can splice arbitrary SQL subqueries straight into it to harvest the entire database.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>CVE-2023-24488 QR Code Generator XSS: A Stored XSS on code-projects.org</title>
      <link>https://blog.1sec.day/en-gb/posts/2023-02-21-cve-2023-24488-qrcode-xss/</link>
      <pubDate>Tue, 21 Feb 2023 00:00:00 +0000</pubDate>
      <author>Thinking</author>
      <guid>https://blog.1sec.day/en-gb/posts/2023-02-21-cve-2023-24488-qrcode-xss/</guid>
      
      <description>&lt;p&gt;The open-source QR Code Generator on code-projects.org concatenates user input directly into an &lt;code&gt;href&lt;/code&gt; link when generating the QR Code preview — write a &lt;code&gt;javascript:alert(1)&lt;/code&gt; in, and the moment the QR Code is scanned, XSS fires.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>CVE-2022-48110 CKEditor 5 XSS: Sanitizer Gaps in data: URL Schemes</title>
      <link>https://blog.1sec.day/en-gb/posts/2022-12-10-cve-2022-48110-ckeditor5-xss/</link>
      <pubDate>Sat, 10 Dec 2022 00:00:00 +0000</pubDate>
      <author>Thinking</author>
      <guid>https://blog.1sec.day/en-gb/posts/2022-12-10-cve-2022-48110-ckeditor5-xss/</guid>
      
      <description>&lt;p&gt;After CKEditor 5 switched to the model + view two-layer architecture, the XSS risk should have been eliminated — but the sanitizer still missed URL forms like the &lt;code&gt;data:&lt;/code&gt; protocol header during model→view deserialization.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>CVE-2021-39316 DZS Zoomsounds: Unauthenticated Arbitrary File Read</title>
      <link>https://blog.1sec.day/en-gb/posts/2021-08-15-cve-2021-39316-zoomsounds/</link>
      <pubDate>Sun, 15 Aug 2021 00:00:00 +0000</pubDate>
      <author>Thinking</author>
      <guid>https://blog.1sec.day/en-gb/posts/2021-08-15-cve-2021-39316-zoomsounds/</guid>
      
      <description>&lt;p&gt;The DZS Zoomsounds plugin has a download endpoint that &lt;strong&gt;reads whatever path the client passes, with no permission check&lt;/strong&gt; — crafting &lt;code&gt;../../../wp-config.php&lt;/code&gt; is enough to read the database password.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>CVE-2021-3129 Laravel Ignition RCE: Phar Deserialization Path in Debug Mode</title>
      <link>https://blog.1sec.day/en-gb/posts/2021-02-02-cve-2021-3129-laravel-ignition-rce/</link>
      <pubDate>Tue, 02 Feb 2021 00:00:00 +0000</pubDate>
      <author>Thinking</author>
      <guid>https://blog.1sec.day/en-gb/posts/2021-02-02-cve-2021-3129-laravel-ignition-rce/</guid>
      
      <description>&lt;p&gt;Laravel&amp;rsquo;s Ignition error page gives developers a &amp;ldquo;click to fix&amp;rdquo; button — but the underlying logic is phar deserialization. If an attacker can write a PHP-serialized payload into a file Laravel treats as a log, they get control of the entire process.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>CVE-2020-981 CKEditor 4 XSS: Sanitizer Boundaries in Rich Text Editors</title>
      <link>https://blog.1sec.day/en-gb/posts/2020-05-12-cve-2020-981-ckeditor4-xss/</link>
      <pubDate>Tue, 12 May 2020 00:00:00 +0000</pubDate>
      <author>Thinking</author>
      <guid>https://blog.1sec.day/en-gb/posts/2020-05-12-cve-2020-981-ckeditor4-xss/</guid>
      
      <description>&lt;p&gt;CKEditor 4&amp;rsquo;s sanitizer has a gap in handling certain HTML tag-attribute combinations prior to v4.13 — a single crafted HTML snippet is enough to inject Stored XSS into every application that uses CKEditor 4.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>CVE-2019-15107 Webmin Unauthenticated RCE: command injection in password_change.cgi</title>
      <link>https://blog.1sec.day/en-gb/posts/2019-08-28-cve-2019-15107-webmin-rce/</link>
      <pubDate>Wed, 28 Aug 2019 00:00:00 +0000</pubDate>
      <author>Thinking</author>
      <guid>https://blog.1sec.day/en-gb/posts/2019-08-28-cve-2019-15107-webmin-rce/</guid>
      
      <description>&lt;p&gt;Webmin&amp;rsquo;s password_change.cgi does not filter the old parameter when &lt;code&gt;passwd_mode=2&lt;/code&gt; is set, letting unauthenticated attackers inject a pipe into the unix_crypt shell path and execute arbitrary commands.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>Code Audit: Z-BlogPHP 1.5.1 Zero GetShell Vulnerability Analysis</title>
      <link>https://blog.1sec.day/en-gb/posts/2018-04-19-zblogphp-1-5-1-getshell/</link>
      <pubDate>Thu, 19 Apr 2018 00:00:00 +0000</pubDate>
      <author>Thinking</author>
      <guid>https://blog.1sec.day/en-gb/posts/2018-04-19-zblogphp-1-5-1-getshell/</guid>
      
      <description></description>
      
    </item>
    
    <item>
      <title>Code Audit: YXCMS 1.4.6 Vulnerability Collection</title>
      <link>https://blog.1sec.day/en-gb/posts/2018-02-08-yxcms-1-4-6-vulnerability-collection/</link>
      <pubDate>Thu, 08 Feb 2018 00:00:00 +0000</pubDate>
      <author>Thinking</author>
      <guid>https://blog.1sec.day/en-gb/posts/2018-02-08-yxcms-1-4-6-vulnerability-collection/</guid>
      
      <description></description>
      
    </item>
    
    <item>
      <title>Code Audit: DedeCMS V5.7 SP2 Vulnerability Collection</title>
      <link>https://blog.1sec.day/en-gb/posts/2018-01-23-dedecms-v5-7-sp2-vulnerability-collection/</link>
      <pubDate>Tue, 23 Jan 2018 00:00:00 +0000</pubDate>
      <author>Thinking</author>
      <guid>https://blog.1sec.day/en-gb/posts/2018-01-23-dedecms-v5-7-sp2-vulnerability-collection/</guid>
      
      <description></description>
      
    </item>
    
    <item>
      <title>XXE Learning Path: Step by Step</title>
      <link>https://blog.1sec.day/en-gb/posts/2017-12-07-xxe-learning-step-by-step/</link>
      <pubDate>Thu, 07 Dec 2017 00:00:00 +0000</pubDate>
      <author>Thinking</author>
      <guid>https://blog.1sec.day/en-gb/posts/2017-12-07-xxe-learning-step-by-step/</guid>
      
      <description>&lt;p&gt;This post is a 2017 systematic write-up on XXE (XML External Entity Injection). The original motivation was OWASP TOP 10 2017 adding XXE as a dedicated entry (A4:2017-XML External Entities), so I consolidated scattered notes on DTD, entity declarations, in-band / out-of-band exploitation, and XML Schema extension attacks into a step-by-step reference. The original payloads and test conclusions are preserved verbatim; notes added at key points reflect version changes and modern hardening advice accumulated since 2017, so the two layers can be read side by side.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>A First Look at PHP Deserialization and POP CHAIN</title>
      <link>https://blog.1sec.day/en-gb/posts/2017-11-14-deserialization-pop-chain/</link>
      <pubDate>Tue, 14 Nov 2017 00:00:00 +0000</pubDate>
      <author>Thinking</author>
      <guid>https://blog.1sec.day/en-gb/posts/2017-11-14-deserialization-pop-chain/</guid>
      
      <description>&lt;p&gt;I recently revisited a deserialization and POP CHAIN primer I wrote back in 2017 — at the time it was a beginner-friendly walkthrough. Re-reading it now, the core mechanics still hold up, but the attack surface around PHP deserialization has expanded substantially over the past few years. The phar stream wrapper has pushed deserialization triggers well beyond the &lt;code&gt;unserialize()&lt;/code&gt; entry point, PHP 8 introduced &lt;code&gt;__serialize&lt;/code&gt;/&lt;code&gt;__unserialize&lt;/code&gt; to replace the &lt;code&gt;Serializable&lt;/code&gt; interface, and tools like phpggc have turned mainstream framework gadget chains into an &amp;ldquo;plug-and-play&amp;rdquo; arsenal. Taking the chance of this revision, I&amp;rsquo;m keeping the original three examples as the introductory skeleton and supplementing the key turning points with side notes that fill in what has happened since — so this 2017 write-up does not stay frozen in 2017.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>A Brief Summary of File Inclusion and PHP Pseudo Protocols</title>
      <link>https://blog.1sec.day/en-gb/posts/2017-09-21-file-inclusion-pseudo-protocols/</link>
      <pubDate>Thu, 21 Sep 2017 00:00:00 +0000</pubDate>
      <author>Thinking</author>
      <guid>https://blog.1sec.day/en-gb/posts/2017-09-21-file-inclusion-pseudo-protocols/</guid>
      
      <description>&lt;p&gt;This post is a 2017 write-up summarising PHP file inclusion vulnerabilities and the abuse of stream wrappers. It was first published under a &amp;ldquo;PHP Advanced Learning&amp;rdquo; section. The original test matrix and conclusions are preserved here, with annotations added at key points to reflect PHP version changes and modern hardening advice — those updates are marked as notes for easy comparison.&lt;/p&gt;
&lt;p&gt;The protocols covered are &lt;code&gt;file://&lt;/code&gt;, &lt;code&gt;php://filter&lt;/code&gt;, &lt;code&gt;php://input&lt;/code&gt;, &lt;code&gt;zip://&lt;/code&gt;, &lt;code&gt;compress.bzip2://&lt;/code&gt;, &lt;code&gt;compress.zlib://&lt;/code&gt;, and &lt;code&gt;data://&lt;/code&gt;. A follow-up post will dive into the individual inclusion functions.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>Thoughts from a CTF Challenge: A Few MySQL Quirks</title>
      <link>https://blog.1sec.day/en-gb/posts/2017-05-19-mysql-ctf-features/</link>
      <pubDate>Fri, 19 May 2017 00:00:00 +0000</pubDate>
      <author>Thinking</author>
      <guid>https://blog.1sec.day/en-gb/posts/2017-05-19-mysql-ctf-features/</guid>
      
      <description></description>
      
    </item>
    
    <item>
      <title>CVE-2017-9841 PHPUnit eval-stdin.php Remote Code Execution: When a PHP Testing Framework Becomes a Web Entry Point</title>
      <link>https://blog.1sec.day/en-gb/posts/2017-05-15-cve-2017-9841-phpunit-rce/</link>
      <pubDate>Mon, 15 May 2017 00:00:00 +0000</pubDate>
      <author>Thinking</author>
      <guid>https://blog.1sec.day/en-gb/posts/2017-05-15-cve-2017-9841-phpunit-rce/</guid>
      
      <description>&lt;p&gt;PHPUnit is one of the most popular unit testing frameworks in the PHP ecosystem, but its &lt;code&gt;eval-stdin.php&lt;/code&gt; file is designed as a tool to &amp;ldquo;accept PHP code via the CLI&amp;rdquo; — if this file is accidentally deployed to the production environment&amp;rsquo;s web directory, an attacker can execute arbitrary PHP code through a simple POST request, CVSS 9.8, no authentication required.&lt;/p&gt;</description>
      
    </item>
    
  </channel>
</rss>
