PhpMyadmin是一个图形化的mysql数据库管理工具,很能方便我们的数据库管理工作。在渗透的时候还是有机会遇到这个东东的,这里对这个组件的利用方式进行一个总结。
通过判断版本我们能可以大致了解清楚一点我们下一步应该干啥,通过搜索总结发现,获取phpmyadmin版本信息有如下两种方式:
方式一:
readme.php
changelog.php
documentation.html
documentation.txt
translator.html
change
readme
方式二:就更为简单一些了,好像搜索了很多这个组件,通过这种方式基本都能很轻松看到版本信息,点击phpmyadmin的下图中标红的位置会有惊喜哦!
如果进入phpmyadmin后台了我们在拥有root权限、网站绝对路径、数据库读写权限三者缺一不可的情况下可以直接写入shell来获取一个shell
查看是否拥有导入导出的权限可以使用如下语句查询:
show variables like "secure_file_priv"
返回的值有三种情况:
情况一:为null,表示当前用户禁止导入导出的操作
情况二:为/tmp/,表示导入导出的操作仅能发生在tmp目录下
情况三:为空,恭喜!肆意搞我吧~对导入导出没有任何限制
备注:这个配置可以在mysql安装目录下面的my.ini中修改哦~
在我们拥有网站绝对路径、值为空、权限root的情况下,可以直接使用select语句写入一句话到网站目录下:
这里路径需要两个反斜杠,不然会被转义哦~
select "<?php phpinfo();?>" into outfile "D:\phpstudy_pro\WWW\1.php"
通过将我们的shell写入日志中然后配置日志文件为一个php文件从而获取服务器权限,这种方式也需要网站的绝对路径、root权限,不再需要写入权限了
查看phpmyadmin是否开启日志记录:
show variables like "general_log%";
问题:如果开启日志记录是否可以直接写入shell呢?
当然是不可以的!第一即使你可以写入一句话shell,然后日志也记录了,但是你知道日志的路径?你知道日志的路径一定是在网站目录?不在网站目录那怎么访问呢?这是其一;第二如果日志文件不是一个php文件,你咋用菜刀连接呢?这.......
当然日志是默认不开启的。开启日志记录:
#开启日志记录
set global general_log="on";
#设置日志路径且日志文件类型
set global general_log_file="D:\phpstudy_pro\WWW\log.php"
#OK啦!这里使用两个反斜杠和上述是一样的作用,防止被转义
最后,有两点需要注意一下:
第一:自己在用小皮面板测试的时候才发现,日志的路径设置之后并不是一层不变的,当mysql重启一次,这个日志文件路径就会发生变化一次。
第二:PHP的magic_quotes_gpc对这个phpmyadmin获取shell的影响:php的这个函数如果设置为on(开启),会对单引号、双引号、null、反斜杠进行转义,变成一个'',因此我们写入shell的时候,不管是直接写入还是日志写入,都会受到影响,好消息是:php5之后并没有继续采用这个函数并且对于php5,他不会过来$_SERVER这个全局变量。至于遇到了gpc处于开启状态的情况如何getshell放在下一篇文章吧!
原文始发于微信公众号(增益安全):PhpMyadmin常见利用方式
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论