79 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			79 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| 
 | |
| /**
 | |
|  * Classname: WPScan\Checks\versionControl
 | |
|  */
 | |
| 
 | |
| namespace WPScan\Checks;
 | |
| 
 | |
| // Exit if accessed directly.
 | |
| defined( 'ABSPATH' ) || exit;
 | |
| 
 | |
| /**
 | |
|  * VersionControl.
 | |
|  *
 | |
|  * Checks for version control files, such as .git and .svn.
 | |
|  *
 | |
|  * @since 1.0.0
 | |
|  */
 | |
| class versionControl extends Check {
 | |
| 	/**
 | |
| 	 * Title.
 | |
| 	 *
 | |
| 	 * @since 1.0.0
 | |
| 	 * @access public
 | |
| 	 * @return string
 | |
| 	 */
 | |
| 	public function title() {
 | |
| 		return __( 'Version Control Files', 'wpscan' );
 | |
| 	}
 | |
| 
 | |
| 	/**
 | |
| 	 * Description.
 | |
| 	 *
 | |
| 	 * @since 1.0.0
 | |
| 	 * @access public
 | |
| 	 * @return string
 | |
| 	 */
 | |
| 	public function description() {
 | |
| 		return __( 'Check if version control files, such as .git or .svn, are publicly accessible.', 'wpscan' );
 | |
| 	}
 | |
| 
 | |
| 	/**
 | |
| 	 * Success message.
 | |
| 	 *
 | |
| 	 * @since 1.0.0
 | |
| 	 * @access public
 | |
| 	 * @return string
 | |
| 	 */
 | |
| 	public function success_message() {
 | |
| 		return __( 'No version control files were found in the web root', 'wpscan' );
 | |
| 	}
 | |
| 
 | |
| 	/**
 | |
| 	 * Perform the check and save the results.
 | |
| 	 *
 | |
| 	 * @since 1.0.0
 | |
| 	 * @access public
 | |
| 	 * @return void
 | |
| 	 */
 | |
| 	public function perform() {
 | |
| 		$vulnerabilities = $this->get_vulnerabilities();
 | |
| 
 | |
| 		$files = array( '.svn', '.git' );
 | |
| 
 | |
| 		foreach ( $files as $file ) {
 | |
| 			$url = esc_html( get_site_url() . '/' . $file );
 | |
| 
 | |
| 			if ( file_exists( 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 ' . esc_html( $file ) . ' file was found. The file could expose your websites\'s source code.', 'wpscan' ), 'high', sanitize_title( $file ), 'https://blog.wpscan.com/wordpress-version-control-files/' );
 | |
| 				}
 | |
| 			}
 | |
| 		}
 | |
| 	}
 | |
| }
 |