laipower/wp-content/plugins/wpscan/security-checks/debuglog-files/check.php

76 lines
1.6 KiB
PHP

<?php
/**
* Classname: WPScan\Checks\debuglogFiles
*/
namespace WPScan\Checks;
// Exit if accessed directly.
defined( 'ABSPATH' ) || exit;
/**
* DebuglogFiles.
*
* Checks for debug.log files.
*
* @since 1.0.0
*/
class debuglogFiles extends Check {
/**
* Title.
*
* @since 1.0.0
* @access public
* @return string
*/
public function title() {
return __( 'Debug Log Files', 'wpscan' );
}
/**
* Description.
*
* @since 1.0.0
* @access public
* @return string
*/
public function description() {
return __( 'Search the file system for debug log files that are publicly accessible.', 'wpscan' );
}
/**
* Success message.
*
* @since 1.0.0
* @access public
* @return string
*/
public function success_message() {
return __( 'No publicly accessible debug log files were found', 'wpscan' );
}
/**
* Perform the check and save the results.
*
* @since 1.0.0
* @access public
* @return void
*/
public function perform() {
$vulnerabilities = $this->get_vulnerabilities();
$file = ABSPATH . 'wp-content/debug.log';
if ( file_exists( $file ) ) {
$url = esc_url( get_site_url() . '/' . str_replace( ABSPATH, '', $file ) );
$response = wp_remote_head( $url, array( 'timeout' => 5 ) );
$code = wp_remote_retrieve_response_code( $response );
if ( 200 === $code ) {
$this->add_vulnerability( __( 'A publicly accessible debug.log file was found in', 'wpscan' ) . " <a href='$url' target='_blank'>$url</a>", 'high', sanitize_title( $file ), 'https://blog.wpscan.com/wordpress-debug-log-files/' );
}
}
}
}