ជាទូទៅហេគឃ័រ រឺជនដែលមានគំនិតអាក្រក់ប្រើប្រាស់កម្មវិធីស្កេនមួយចំនួនដើម្បីធ្វើការវិភាគទៅលើវេបសាយដែលប្រើប្រាស់ WordPress ដើម្បីធ្វើការរកចំនុចខ្សោយ ហើយចាប់ផ្តើមធ្វើការវាយប្រហារចូលទៅក្នុងវេបសាយ។ នៅពេលគេធ្វើការវាយប្រហារបានសម្រេច ហេគឃ័រអាចធ្វើការដាក់មេរោគទាញយកព័ត៌មានផ្សេងៗពីក្នុងវេបសាយ រឺអាចកំទេចវេបសាយនោះចោលតែម្តង …ល។
កម្មវិធី WPScan ជាកម្មវិធីដែលមានប្រសិទ្ធភាពខ្ពស់ក្នុងការរកចំនុចខ្សោយវេបសាយដែលប្រើប្រាស់ WordPress ហើយវាត្រូវបានប្រើប្រាស់ដោយហេគឃ័រជាច្រើននៅជុំវិញពិភពលោក ប៉ុន្តែវាអាចមានសមត្ថភាពក្នុងការទាញយកព័ត៌មានផ្សេងបានតែប្រភេទវេបសាយប្រើប្រាស់ WordPress តែប៉ុណ្ណោះ។
សមត្ថភាពទូទៅ
– ស្កេនទូទៅ
– ទាយលេខសំងាត់ Login WordPress
– រកមើល Plugin អ្នកប្រើប្រាស់
– មើល Theme
– ទាញយក Username Login WordPress
– មើល Timthumbs
– ប្រើប្រាស់ជាមួយ Proxy ដើម្បីការពារខ្លួន [ HTTP proxy & SOCKS5 proxy ]
– រកមើល Custom Content Directory
– និងអាចទាញយកព័ត៍មានផ្សេងៗទៀតពី Robot, XML …ល។
អ្នកអាចប្រើប្រាស់វិធីការពារ WPScan និងកម្មវិធីស្កេនមួយចំនួនផ្សេងទៀត ដូចខាងក្រោមៈ
1. បិទលើការស្កេន robots.txt
ចូលទៅ wp-includes -> functions.php រួចធ្វើការ edite ហើយស្កូលចុះក្រោម រួចដាក់កូដខាងក្រោមចូល
/** Block Robot Information */
add_action(‘do_robots’, ‘hook_robots’, 1);
function hook_robots() {
// Return 404
status_header(404);
// End script
die();
}
2. បិទលើការទាញយកព័ត៍មានពី readme.html
Readme.html ប្រើសំរាប់ទាញយកព័ត៍មានពីជំនាន់ WordPress ។ យើងអាចបិទវាតាមរយៈ .htaccess ដោយដាក់កូដខាងក្រោម
RewriteRule ^readme\.html$ – [R=404,L,NC]
3. ការពារ Full Path Disclosure
នៅពេល Server មានការកំណត់មិនបានល្អ ( Badly Configured ) វាអាចធ្វើអោយគេអាចទាញយកព័ត៌មានទីតាំងឯកសារយើងបានពី wp-includes/rss-functions.php ។
យើងអាចបិទវាបានតាមរយះកូដខាងក្រោមដាក់ចូលក្នុង .htaccess តាមរយៈកូដខាងក្រោមនេះ
RewriteRule ^wp-includes/rss-functions\.php$ – [R=404,L,NC]
4. ការពារ WPScan ពីការទាញយកព័ត៍មានក្នុង wp-config.php
ដាក់កូដខាងចូលទៅក្នុង .htaccess ដូចខាងក្រោម
RewriteRule ^wp-config\.php\.save$index.php?wp_config_enumeration=1 [L]
RewriteRule ^\.wp-config\.php\.swp$ index.php?wp_config_enumeration=1 [L]
RewriteRule ^wp-config\.php\.swp$ index.php?wp_config_enumeration=1 [L]
រួចដាក់កូដខាងក្រោមចូលទៅក្នុង functions.php
/** Detect this requests and temporary block user. */
$transient_name = ‘wce_block_’.$_SERVER[‘REMOTE_ADDR’];
$transient_value = get_transient($transient_name);
if ($transient_value !== false) {
die(‘BANNED!’);
}
if (isset($_GET[‘wp_config_enumeration’])) {
set_transient($transient_name, 1, DAY_IN_SECONDS);
die(‘BANNED!’);
}
5. ការពារ User Agent
ជាធម្មតា WPScan string គឺប្រើប្រាស់ដូចទៅនិង User Agent ។ យើងអាចការពារវាតាមកូដខាងក្រោមដាក់ចូលទៅក្នុង functions.php
/** Detect User Agent */
if (!empty($_SERVER[‘HTTP_USER_AGENT’]) && preg_match(‘/WPScan/i’, $_SERVER[‘HTTP_USER_AGENT’])) {
die(‘Wrong user agent’);
}
6. បិទការជ្រៀកចូលយកព័ត៍មានពី XML-RPC Server
ជាធម្មតានៅពេលយើងបើក xmlrpc.php វានិងបង្ហាញ XML-RPC Server accepts POST requests only ជាលក្ខណៈ text ។ WPScan ព្យាយាមស្វែងរក String មួយនេះដើម្បីរកមើលព័ត៍មានក្នុង xmlrpc ។
យើងអាចការពារវាបានតាមការបញ្ចូលកូដខាងក្រោមចូលទៅក្នុង functions.php
/** Remove strange XML-RPC server info. */
function add_fake_xmlrpc() {
// We don’t want to display die(‘XML-RPC server accepts POST requests only.’); on $_GET
if (!empty($_POST)) {
return ‘wp_xmlrpc_server’;
} else {
return ‘fake_xmlrpc’;
}
}
add_filter(‘wp_xmlrpc_server_class’, ‘add_fake_xmlrpc’);
class fake_xmlrpc {
function serve_request() {
// Its fake ?
die();
}
}
7. បិទ Generator info
យើងអាចដក់ ពី source code តាមរយះកូដខាងក្រោមដាក់ចូលទៅក្នុង functions.php
/** Remove generator info. */
remove_action(‘wp_head’, ‘wp_generator’);
add_filter(‘the_generator’, ‘remove_generator’);
function remove_generator() {
// Return nothing
return ”;
}
8. ការពារការស្កេនយកព័ត៍មានបែបកំរិតបច្ចេកទេសខ្ពស់ ( Advanced Fingerprinting )
នៅក្នុង wp_versions.xml គឺ WPScan រក្សាបញ្ជីរាយនាមឯកសារដែលអាចប្រើប្រាស់ដើម្បីរកមើល WordPress version ដោយកំនត់ទៅលើ hash ។
ដំបូងបញ្ចូលកូដខាងក្រោមទៅក្នុង .htaccess
RewriteRule ^wp-includes/js/tinymce/wp-tinymce\.js\.gz$ index.php?advanced_fingerprinting=1 [L]
រួចបញ្ចូលកូដខាងក្រោមទៅក្នុង functions.php
/** Prevent advanced fingerprinting */
if (isset($_GET[‘advanced_fingerprinting’])) {
switch ($_GET[‘advanced_fingerprinting’]) {
case ‘1’:
// Unpack file
$file = gzopen(ABSPATH.’wp-includes/js/tinymce/wp-tinymce.js.gz’, ‘rb’);
// Add comment
$out = ‘// ‘.uniqid(true).”\n”;
while(!gzeof($file)) {
$out .= gzread($file, 4096);
}
// Pack again
header(‘Content-type: application/x-gzip’);
echo gzencode($out);
break;
default:
status_header(404);
}
die();
}
9. ធ្វើការដកលេខជំនាន់ WordPress ពីក្នុង stylesheet
WordPress បានបន្ថែមតួរលេខ Version នៅខាងក្នុង stylesheet link, ឧទាហរណ៍
ដូច្នេះយើងអាចធ្វើការផ្លាស់ប្តូរការប្រើប្រាស់ global $wp_version តាមរយះកូដខាងក្រោមដាក់ចូលទៅក្នុង functions.php
/** Remove version number from stylesheet. */
add_action(‘init’, ‘init’);
function init() {
global $wp_version;
$wp_version = ‘some_strange_number’;
}
10. បិទ Plugin enumeration
សូមបញ្ចូលកូដខាងក្រោមទៅក្នុង .htaccess
RewriteRule ^(.*)wp-content/plugins/(.*)$ index.php?plugin_enumeration=1 [L]
រូចបញ្ចូលកូដខាងក្រោមចូលទៅក្នុង functions.php
/** Stop plugin enumeration. */
if (isset($_GET[‘plugin_enumeration’])) {
// Display something random
die(‘‘);
}
11. ការពារ Username Enumeration
នៅក្នុង WordPress នៅពេលដែលអ្នករកមើល ?author=1 វានិងនាំអ្នកទៅកាន់ author/your_username/ ។ ដូច្នេះ WPScan អាចទាញយក username login បានយ៉ាងងាយស្រួល ។
យើងអាចបិទការស្នើរ $_GET[‘author’] តាមរយះការបញ្ចូលកូដខាងក្រោមទៅក្នុង functions.php
/** Prevent username enumeration. */
if (!is_admin() && isset($_REQUEST[‘author’])) {
status_header(404);
die();
}
* ខាងក្រោមនេះជាលទ្ធផលនៃការបញ្ចូលកូដខាងលើ
ដូច្នេះអ្នកអាចជ្រើសកូដផ្នែកណាមួយដែលអ្នកពេញចិត្តដើម្បីដាក់ការពារពីរ Scanner ហើយសូមធ្វើការទទួលខុសត្រូវដោយខ្លួនឯងបើសិនជាមានការខុសឆ្គងដោយប្រការណាមួយនោះ។ ខាងលើនេះគឺគ្រាន់តែជាព័ត៌មានសម្រាប់អ្នកធ្វើជាឯកសារយោងតែប៉ុណ្ណោះ៕
![](https://i0.wp.com/www.cdn.nctc.gov.kh/2019/01/WordPressWPScan-800x450.png?resize=696%2C392&ssl=1)