<?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/"
	>

<channel>
	<title>pdf - Mynavi TechTus Vietnam</title>
	<atom:link href="https://mynavitechtus.com/tag/pdf/feed/" rel="self" type="application/rss+xml" />
	<link>https://mynavitechtus.com</link>
	<description></description>
	<lastBuildDate>Fri, 25 Jul 2025 03:32:51 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.8.1</generator>

<image>
	<url>https://mynavitechtus.com/wp-content/uploads/2024/01/Logo-34-150x150.png</url>
	<title>pdf - Mynavi TechTus Vietnam</title>
	<link>https://mynavitechtus.com</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>The Amazing PDF-man Pt. 1: XSS vs. the Firewall</title>
		<link>https://mynavitechtus.com/the-amazing-pdf-man-pt-1-xss-vs-firewall/</link>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Tue, 20 May 2025 03:48:51 +0000</pubDate>
				<category><![CDATA[Blogs]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[firewall]]></category>
		<category><![CDATA[pdf]]></category>
		<guid isPermaLink="false">https://mynavitechtus.com/?p=991948</guid>

					<description><![CDATA[<p>Nowadays, it's important for all kinds of activities, including travel, to be more eco-friendly and considerate of communities and nature.</p>
<p>The post <a href="https://mynavitechtus.com/the-amazing-pdf-man-pt-1-xss-vs-firewall/">The Amazing PDF-man Pt. 1: XSS vs. the Firewall</a> first appeared on <a href="https://mynavitechtus.com">Mynavi TechTus Vietnam</a>.</p>]]></description>
										<content:encoded><![CDATA[<div data-elementor-type="wp-post" data-elementor-id="991948" class="elementor elementor-991948" data-elementor-post-type="post">
				<div class="elementor-element elementor-element-538445f e-flex e-con-boxed e-con e-parent" data-id="538445f" data-element_type="container">
					<div class="e-con-inner">
				<div class="elementor-element elementor-element-eb5d4ca elementor-widget elementor-widget-text-editor" data-id="eb5d4ca" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p><span style="font-weight: 400;"><i>Credit: Sonvh (Pentester)</i></span></p><p><span style="font-weight: 400;">October 2024. Cold winds began rustling the trees, and dry leaves fell in flurries onto the windowsill. They seemed desperate to sneak into the warmth of the room, seeking shelter before winter fully arrived. But all attempts were stopped cold by the unfeeling glass. Under my sight, I couldn’t help but relate—wondering, </span><i><span style="font-weight: 400;">&#8220;Am I any different from those leaves? Can I slip past the firewall that’s blocking me?&#8221;</span></i></p>
<p><span style="font-weight: 400;">Turns out… I could.</span><span style="font-weight: 400;"><br></span><span style="font-weight: 400;">This wasn’t just another random vulnerability. This was one of those moments where creativity meets research—where bypassing WAF and pulling off RCE wasn&#8217;t just the goal, it became the statement. More than just a win, it was a chance to help the client update their understanding of modern attack surfaces.</span></p>
<p><span style="font-weight: 400;">This particular client was no slouch when it came to security: Cloudflare WAF was fully enabled, bot detection was on for both staging and production, DNS redirection was in place, and there was even basic auth layered in. Before we could properly dig into the scope, we had to jump through some serious setup hoops.</span></p>
<p><span style="font-weight: 400;">Eventually, I found my golden ticket: a file upload feature for PDFs, user-role only, but wide open enough to make it worth investigating. Naturally, as a handsome and responsible security professional, I started with a standard best-practice review. Soon enough, I realized the only real path left was to slip in something malicious.</span></p>								</div>
				</div>
					</div>
				</div>
		<div class="elementor-element elementor-element-574812a e-flex e-con-boxed e-con e-parent" data-id="574812a" data-element_type="container">
					<div class="e-con-inner">
				<div class="elementor-element elementor-element-569de19 elementor-widget elementor-widget-image" data-id="569de19" data-element_type="widget" data-widget_type="image.default">
				<div class="elementor-widget-container">
															<img fetchpriority="high" decoding="async" width="1156" height="356" src="https://mynavitechtus.com/wp-content/uploads/2025/05/Screenshot-2025-05-20-at-10.32.35 AM.png" class="attachment-large size-large wp-image-991951" alt="Security at Mynavi Techtus Vietanm" srcset="https://mynavitechtus.com/wp-content/uploads/2025/05/Screenshot-2025-05-20-at-10.32.35 AM.png 1156w, https://mynavitechtus.com/wp-content/uploads/2025/05/Screenshot-2025-05-20-at-10.32.35 AM-1024x315.png 1024w, https://mynavitechtus.com/wp-content/uploads/2025/05/Screenshot-2025-05-20-at-10.32.35 AM-768x237.png 768w, https://mynavitechtus.com/wp-content/uploads/2025/05/Screenshot-2025-05-20-at-10.32.35 AM-18x6.png 18w" sizes="(max-width: 1156px) 100vw, 1156px" />															</div>
				</div>
					</div>
				</div>
		<div class="elementor-element elementor-element-020123a e-flex e-con-boxed e-con e-parent" data-id="020123a" data-element_type="container">
					<div class="e-con-inner">
				<div class="elementor-element elementor-element-a98104f elementor-widget elementor-widget-text-editor" data-id="a98104f" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p><span style="font-weight: 400;">First step, I traced the PDF’s journey. Turns out, the final stop for these files was rendering in Google Docs </span><span style="font-weight: 400;">gview</span><span style="font-weight: 400;">. And from what I know, if the site isn’t doing any heavy sanitizing, you can sometimes sneak JavaScript execution right through a PDF.</span></p><p><span style="font-weight: 400;">Side note: it&#8217;s not just </span><span style="font-weight: 400;">gview</span><span style="font-weight: 400;"> you have to worry about. </span><span style="font-weight: 400;">PDF.js</span><span style="font-weight: 400;">, the well-known PDF rendering library from Mozilla, was hit with a critical vulnerability in April of the same year.</span></p><p><span style="font-weight: 400;">So yeah, no matter what rendering engine you&#8217;re using, if you&#8217;re not properly validating input, you&#8217;re basically playing with fire, without wearing any protective gear.</span></p>								</div>
				</div>
					</div>
				</div>
		<div class="elementor-element elementor-element-60a7b23 e-flex e-con-boxed e-con e-parent" data-id="60a7b23" data-element_type="container">
					<div class="e-con-inner">
				<div class="elementor-element elementor-element-efae1f4 elementor-widget elementor-widget-image" data-id="efae1f4" data-element_type="widget" data-widget_type="image.default">
				<div class="elementor-widget-container">
															<img decoding="async" width="1126" height="476" src="https://mynavitechtus.com/wp-content/uploads/2025/05/Screenshot-2025-05-20-at-10.33.52 AM.png" class="attachment-large size-large wp-image-991952" alt="Security at Mynavi Techtus Vietanm" srcset="https://mynavitechtus.com/wp-content/uploads/2025/05/Screenshot-2025-05-20-at-10.33.52 AM.png 1126w, https://mynavitechtus.com/wp-content/uploads/2025/05/Screenshot-2025-05-20-at-10.33.52 AM-1024x433.png 1024w, https://mynavitechtus.com/wp-content/uploads/2025/05/Screenshot-2025-05-20-at-10.33.52 AM-768x325.png 768w, https://mynavitechtus.com/wp-content/uploads/2025/05/Screenshot-2025-05-20-at-10.33.52 AM-18x8.png 18w" sizes="(max-width: 1126px) 100vw, 1126px" />															</div>
				</div>
					</div>
				</div>
		<div class="elementor-element elementor-element-7a526fb e-flex e-con-boxed e-con e-parent" data-id="7a526fb" data-element_type="container">
					<div class="e-con-inner">
				<div class="elementor-element elementor-element-ec1cf6e elementor-widget elementor-widget-text-editor" data-id="ec1cf6e" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p><span style="font-weight: 400;">That reminded me of a classic PDF XSS trick. I crafted a normal-looking file, cracked it open in a text editor, and dropped in a payload, hoping to get a PoC to pop.</span></p>								</div>
				</div>
					</div>
				</div>
		<div class="elementor-element elementor-element-fcb1318 e-flex e-con-boxed e-con e-parent" data-id="fcb1318" data-element_type="container">
					<div class="e-con-inner">
				<div class="elementor-element elementor-element-ee90d56 elementor-widget elementor-widget-image" data-id="ee90d56" data-element_type="widget" data-widget_type="image.default">
				<div class="elementor-widget-container">
															<img decoding="async" width="1124" height="292" src="https://mynavitechtus.com/wp-content/uploads/2025/05/Screenshot-2025-05-20-at-10.36.00 AM.png" class="attachment-large size-large wp-image-991953" alt="Security at Mynavi Techtus Vietanm" srcset="https://mynavitechtus.com/wp-content/uploads/2025/05/Screenshot-2025-05-20-at-10.36.00 AM.png 1124w, https://mynavitechtus.com/wp-content/uploads/2025/05/Screenshot-2025-05-20-at-10.36.00 AM-1024x266.png 1024w, https://mynavitechtus.com/wp-content/uploads/2025/05/Screenshot-2025-05-20-at-10.36.00 AM-768x200.png 768w, https://mynavitechtus.com/wp-content/uploads/2025/05/Screenshot-2025-05-20-at-10.36.00 AM-18x5.png 18w" sizes="(max-width: 1124px) 100vw, 1124px" />															</div>
				</div>
					</div>
				</div>
		<div class="elementor-element elementor-element-3e0e7fd e-flex e-con-boxed e-con e-parent" data-id="3e0e7fd" data-element_type="container">
					<div class="e-con-inner">
				<div class="elementor-element elementor-element-e5572b0 elementor-widget elementor-widget-text-editor" data-id="e5572b0" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p><span style="font-weight: 400;">Uploaded. Traced. Viewed.</span><span style="font-weight: 400;"><br /></span><span style="font-weight: 400;">In the test environment, it hit. Full RCE.</span></p>								</div>
				</div>
					</div>
				</div>
		<div class="elementor-element elementor-element-22b1413 e-flex e-con-boxed e-con e-parent" data-id="22b1413" data-element_type="container">
					<div class="e-con-inner">
				<div class="elementor-element elementor-element-20dc93b elementor-widget elementor-widget-image" data-id="20dc93b" data-element_type="widget" data-widget_type="image.default">
				<div class="elementor-widget-container">
															<img loading="lazy" decoding="async" width="1118" height="414" src="https://mynavitechtus.com/wp-content/uploads/2025/05/Screenshot-2025-05-20-at-10.36.51 AM.png" class="attachment-large size-large wp-image-991954" alt="Security at Mynavi Techtus Vietanm" srcset="https://mynavitechtus.com/wp-content/uploads/2025/05/Screenshot-2025-05-20-at-10.36.51 AM.png 1118w, https://mynavitechtus.com/wp-content/uploads/2025/05/Screenshot-2025-05-20-at-10.36.51 AM-1024x379.png 1024w, https://mynavitechtus.com/wp-content/uploads/2025/05/Screenshot-2025-05-20-at-10.36.51 AM-768x284.png 768w, https://mynavitechtus.com/wp-content/uploads/2025/05/Screenshot-2025-05-20-at-10.36.51 AM-18x7.png 18w" sizes="(max-width: 1118px) 100vw, 1118px" />															</div>
				</div>
					</div>
				</div>
		<div class="elementor-element elementor-element-b82d5b2 e-flex e-con-boxed e-con e-parent" data-id="b82d5b2" data-element_type="container">
					<div class="e-con-inner">
				<div class="elementor-element elementor-element-ac4a6a0 elementor-widget elementor-widget-text-editor" data-id="ac4a6a0" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p><span style="font-weight: 400;">Even though by this point the client was already sweating bullets, I still wanted to test my luck, see if I could get past the production environment.</span><span style="font-weight: 400;"><br /></span><span style="font-weight: 400;">When I reproduced it there, the file just vanished. Not too surprising, with Cloudflare standing guard.</span></p><p><span style="font-weight: 400;">I was just trying my luck, planning to close the report and move on to another bug. But then… I heard it, a call from the ancestors: </span><i><span style="font-weight: 400;">&#8220;No, my child. You will not be defeated by this WAF. You will bypass it.&#8221;</span></i></p><p><span style="font-weight: 400;">Now, based on what I know, most WAFs handle malicious input in two ways:</span></p><ol><li style="font-weight: 400;" aria-level="1"><span style="font-weight: 400;">Rewrite or encode the payload to defuse it.</span></li><li style="font-weight: 400;" aria-level="1"><span style="font-weight: 400;">“If you don’t change yourself for me, I will break up with you”, drop and block.</span></li></ol><p><span style="font-weight: 400;">This case felt like option 2: no sanitizing, just outright rejection. So rather than waste time trying to reverse-engineer encoding logic, I went for the creative route, finding a payload that the WAF’s devs or their ML system hadn&#8217;t accounted for yet.</span></p><p><span style="font-weight: 400;">My approach was to systematically test a variety of payload variations, alternating them with small modifications and observing the server’s response each time. The goal was to both predict and identify:</span></p><ul><li style="font-weight: 400;" aria-level="1"><span style="font-weight: 400;">Which patterns the WAF would block or allow, providing insight into the rulesets in use.</span></li><li style="font-weight: 400;" aria-level="1"><span style="font-weight: 400;">The correlation between payload length and response time, which could reveal characteristics like regex-based inspection or deep packet analysis by the WAF.</span></li></ul><p><span style="font-weight: 400;">Trial after trial, and finally: </span><i><span style="font-weight: 400;">success</span></i><span style="font-weight: 400;">. A clean bypass, capped off with a satisfying </span><span style="font-weight: 400;">alert(1)</span><span style="font-weight: 400;">.</span></p>								</div>
				</div>
					</div>
				</div>
		<div class="elementor-element elementor-element-298b0b2 e-flex e-con-boxed e-con e-parent" data-id="298b0b2" data-element_type="container">
					<div class="e-con-inner">
				<div class="elementor-element elementor-element-db20a63 elementor-widget elementor-widget-image" data-id="db20a63" data-element_type="widget" data-widget_type="image.default">
				<div class="elementor-widget-container">
															<img loading="lazy" decoding="async" width="1120" height="274" src="https://mynavitechtus.com/wp-content/uploads/2025/05/Screenshot-2025-05-20-at-10.37.52 AM.png" class="attachment-large size-large wp-image-991956" alt="Security at Mynavi Techtus Vietanm" srcset="https://mynavitechtus.com/wp-content/uploads/2025/05/Screenshot-2025-05-20-at-10.37.52 AM.png 1120w, https://mynavitechtus.com/wp-content/uploads/2025/05/Screenshot-2025-05-20-at-10.37.52 AM-1024x251.png 1024w, https://mynavitechtus.com/wp-content/uploads/2025/05/Screenshot-2025-05-20-at-10.37.52 AM-768x188.png 768w, https://mynavitechtus.com/wp-content/uploads/2025/05/Screenshot-2025-05-20-at-10.37.52 AM-18x4.png 18w" sizes="(max-width: 1120px) 100vw, 1120px" />															</div>
				</div>
					</div>
				</div>
		<div class="elementor-element elementor-element-bc6a155 e-flex e-con-boxed e-con e-parent" data-id="bc6a155" data-element_type="container">
					<div class="e-con-inner">
				<div class="elementor-element elementor-element-0d68dbd elementor-widget elementor-widget-text-editor" data-id="0d68dbd" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p><span style="font-weight: 400;">And just like that, I’d slipped past the firewall.</span><span style="font-weight: 400;"><br /></span><span style="font-weight: 400;">The PDF-man strikes again.</span></p><p><span style="font-weight: 400;">From there, the door was open for anything: cookie theft, user behavior hijacking, even accessing internal APIs — all depending on how well the application was secured behind the firewall.</span></p>								</div>
				</div>
					</div>
				</div>
		<div class="elementor-element elementor-element-66ce226 e-flex e-con-boxed e-con e-parent" data-id="66ce226" data-element_type="container">
					<div class="e-con-inner">
				<div class="elementor-element elementor-element-77699e8 elementor-widget elementor-widget-image" data-id="77699e8" data-element_type="widget" data-widget_type="image.default">
				<div class="elementor-widget-container">
															<img loading="lazy" decoding="async" width="1126" height="332" src="https://mynavitechtus.com/wp-content/uploads/2025/05/Screenshot-2025-05-20-at-10.39.03 AM.png" class="attachment-large size-large wp-image-991957" alt="Security at Mynavi Techtus Vietanm" srcset="https://mynavitechtus.com/wp-content/uploads/2025/05/Screenshot-2025-05-20-at-10.39.03 AM.png 1126w, https://mynavitechtus.com/wp-content/uploads/2025/05/Screenshot-2025-05-20-at-10.39.03 AM-1024x302.png 1024w, https://mynavitechtus.com/wp-content/uploads/2025/05/Screenshot-2025-05-20-at-10.39.03 AM-768x226.png 768w, https://mynavitechtus.com/wp-content/uploads/2025/05/Screenshot-2025-05-20-at-10.39.03 AM-18x5.png 18w" sizes="(max-width: 1126px) 100vw, 1126px" />															</div>
				</div>
					</div>
				</div>
		<div class="elementor-element elementor-element-0ea7f6f e-flex e-con-boxed e-con e-parent" data-id="0ea7f6f" data-element_type="container">
					<div class="e-con-inner">
				<div class="elementor-element elementor-element-9b3ed46 elementor-widget elementor-widget-text-editor" data-id="9b3ed46" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p><span style="font-weight: 400;">Afterward, I worked with the client to submit a support ticket to Cloudflare. They acknowledged the issue, but due to policy limitations, couldn&#8217;t dive into it further on the technical side.</span></p><p><span style="font-weight: 400;">While none of this is particularly groundbreaking, it’s a good reminder: WAFs and other perimeter defenses aren’t silver bullets. They may slow attackers down at first, but for persistent pros, it’s just a matter of time. If the core app isn’t built with solid security in mind, WAFs are just expensive window dressing.</span></p><p><span style="font-weight: 400;">And so, the saga of the PDF-man continues.</span><span style="font-weight: 400;"><br /></span><span style="font-weight: 400;">What happens next? Stay tuned…</span></p>								</div>
				</div>
					</div>
				</div>
				</div><p>The post <a href="https://mynavitechtus.com/the-amazing-pdf-man-pt-1-xss-vs-firewall/">The Amazing PDF-man Pt. 1: XSS vs. the Firewall</a> first appeared on <a href="https://mynavitechtus.com">Mynavi TechTus Vietnam</a>.</p>]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
