<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>SSRF on RORO's blog</title><link>https://blog.rodolpheg.xyz/fr/tags/ssrf/</link><description>Recent content in SSRF on RORO's blog</description><generator>Hugo</generator><language>fr</language><managingEditor>contact@rodolpheg.xyz (0xRo)</managingEditor><webMaster>contact@rodolpheg.xyz (0xRo)</webMaster><lastBuildDate>Sat, 07 Feb 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://blog.rodolpheg.xyz/fr/tags/ssrf/index.xml" rel="self" type="application/rss+xml"/><item><title>Enketo 6.2.1 - Auth-Bypass, SSRF et abus de XXE navigateur pour lecture de fichiers</title><link>https://blog.rodolpheg.xyz/fr/posts/enketo-auth-bypass-ssrf-xxe-and-file-read/</link><pubDate>Sat, 07 Feb 2026 00:00:00 +0000</pubDate><author>contact@rodolpheg.xyz (0xRo)</author><guid>https://blog.rodolpheg.xyz/fr/posts/enketo-auth-bypass-ssrf-xxe-and-file-read/</guid><description>&lt;h2 id="introduction">Introduction&lt;/h2>
&lt;p>Article original : &lt;a href="https://offenskill.com/blog/enketo-arbitrary-file-read/">OffenSkill - Enketo 6.2.1 - Auth-Bypass, SSRF, and XXE Browser Abuse to File Read&lt;/a>&lt;/p>
&lt;p>Cette session de &lt;a href="https://offenskill.com/training">formation&lt;/a> était axée sur la revue de code en boîte blanche, l&amp;rsquo;application et l&amp;rsquo;introspection runtime du système.&lt;br>
Nous voulions travailler sur un framework backend JavaScript et &lt;a href="https://enketo.org/">Enketo Express&lt;/a> semblait être un bon candidat.
Le code source est disponible sur &lt;a href="https://github.com/enketo/enketo-express">GitHub - enketo/enketo-express&lt;/a> et la version que nous avons évaluée était la &lt;a href="https://github.com/enketo/enketo-express/releases/tag/6.2.1">version 6.2.1&lt;/a>, construite avec les Dockerfiles officiels.&lt;/p></description></item><item><title>Amazon AppSec CTF : PageOneHTML</title><link>https://blog.rodolpheg.xyz/fr/posts/pageronehtlm/</link><pubDate>Sun, 21 Sep 2025 00:00:00 +0000</pubDate><author>contact@rodolpheg.xyz (0xRo)</author><guid>https://blog.rodolpheg.xyz/fr/posts/pageronehtlm/</guid><description>&lt;h2 id="résumé-exécutif">Résumé exécutif&lt;/h2>
&lt;ul>
&lt;li>&lt;strong>Défi&lt;/strong> : PageOneHTML&lt;/li>
&lt;li>&lt;strong>Catégorie&lt;/strong> : Sécurité Web&lt;/li>
&lt;li>&lt;strong>Vulnérabilité&lt;/strong> : Server-Side Request Forgery (SSRF) via le protocole gopher://&lt;/li>
&lt;li>&lt;strong>Impact&lt;/strong> : Accès à un endpoint d&amp;rsquo;API interne menant à la divulgation du flag&lt;/li>
&lt;li>&lt;strong>Flags&lt;/strong> :
&lt;ul>
&lt;li>Local : &lt;code>HTB{f4k3_fl4g_f0r_t3st1ng}&lt;/code>&lt;/li>
&lt;li>Distant : &lt;code>HTB{l1bcurL_pla7h0r4_0f_pr0tocOl5}&lt;/code>&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ul>
&lt;h2 id="analyse-source-to-sink">Analyse Source-to-Sink&lt;/h2>
&lt;h3 id="1-point-dentrée---entrée-utilisateur-source">1. Point d&amp;rsquo;entrée - Entrée utilisateur (Source)&lt;/h3>
&lt;p>La vulnérabilité commence au endpoint &lt;code>/api/convert&lt;/code> qui accepte du contenu markdown contrôlé par l&amp;rsquo;utilisateur :&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-javascript" data-lang="javascript">&lt;span class="line">&lt;span class="cl">&lt;span class="c1">// routes/index.js:15-28
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span>&lt;span class="nx">router&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">post&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;/api/convert&amp;#39;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="kr">async&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="nx">req&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="nx">res&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="p">=&amp;gt;&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kr">const&lt;/span> &lt;span class="p">{&lt;/span> &lt;span class="nx">markdown_content&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="nx">port_images&lt;/span> &lt;span class="p">}&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="nx">req&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">body&lt;/span>&lt;span class="p">;&lt;/span> &lt;span class="c1">// User input
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> 
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">if&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="nx">markdown_content&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">html&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="nx">MDHelper&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">makeHtml&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="nx">markdown_content&lt;/span>&lt;span class="p">);&lt;/span> &lt;span class="c1">// Convert MD to HTML
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="k">if&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="nx">port_images&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="p">{&lt;/span> &lt;span class="c1">// If port_images is true
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="k">return&lt;/span> &lt;span class="nx">ImageConverter&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">PortImages&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="nx">html&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="c1">// Process images
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="p">.&lt;/span>&lt;span class="nx">then&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="nx">newHTML&lt;/span> &lt;span class="p">=&amp;gt;&lt;/span> &lt;span class="nx">res&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">json&lt;/span>&lt;span class="p">({&lt;/span> &lt;span class="nx">content&lt;/span>&lt;span class="o">:&lt;/span> &lt;span class="nx">newHTML&lt;/span> &lt;span class="p">}))&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">.&lt;/span>&lt;span class="k">catch&lt;/span>&lt;span class="p">(()&lt;/span> &lt;span class="p">=&amp;gt;&lt;/span> &lt;span class="nx">res&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">json&lt;/span>&lt;span class="p">({&lt;/span> &lt;span class="nx">content&lt;/span>&lt;span class="o">:&lt;/span> &lt;span class="nx">html&lt;/span> &lt;span class="p">}));&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">return&lt;/span> &lt;span class="nx">res&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">json&lt;/span>&lt;span class="p">({&lt;/span> &lt;span class="nx">content&lt;/span>&lt;span class="o">:&lt;/span> &lt;span class="nx">html&lt;/span> &lt;span class="p">});&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">return&lt;/span> &lt;span class="nx">res&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">status&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mi">403&lt;/span>&lt;span class="p">).&lt;/span>&lt;span class="nx">send&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="nx">response&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;Missing parameters!&amp;#39;&lt;/span>&lt;span class="p">));&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">});&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="2-traitement-des-images---confusion-de-protocole">2. Traitement des images - Confusion de protocole&lt;/h3>
&lt;p>Le module &lt;code>ImageConverter&lt;/code> extrait toutes les balises &lt;code>&amp;lt;img&amp;gt;&lt;/code> et traite leurs attributs &lt;code>src&lt;/code> :&lt;/p></description></item></channel></rss>