内网学习的第5天呢??我就没有写,那个主要就是利用内核漏洞以及suid,来进行提权的。
我在虚拟机上面进行提权,我没有成功,我本地的虚拟机呢,扫出来的漏洞poc也没有让我提权成功。所以我就没有写。现在我们来写写今天的提权操作。
环境变量的提权:
在liunx中,管理员编译了程序,给管理运行的方案,这点我们攻击者就可以进行环境变量的提权。
攻击者在发现了这个程序过后,通过看它的运行结果或者反编译得到了源码进行判断。然后对环境变量进行覆盖,导致程序加载过后权限的继承。
简单点来说就是让程序找不到原来的环境变量的位置,它就会在当前的目录找相同命令的程序进行执行。
下面来演示:
12.c里面的程序源码是这样的:很简单的执行ps命令
#include<unistd.h>
void main()
{ setuid(0);
setgid(0);
system("ps");
}
我们进行了编译过后赋予它权限这点我出错了的,我们在要root权限进行操作,我后面就没有截图了,程序是会继承权限的,如果我们是user用户对它进行编译就会继承user用户。
然后这点我们是复制的/bin/bash 为/tmp/ps bash是命令框的形式 变为了ps
然后我们在设置环境变量 这点输多了所以有2个不影响操作
然后我们在进行执行的操作执行shell文件
没有环境变量就找当前目录对应程序名 有环境变量就找环境调用
原始:ps命令
由于环境变量加了tmp 执行ps执行/tmp/psps又是通过bash复制的 就是bashshell执行bash suid执行bash 就是直接提权
怎么找到这类问题
我们先看所以的suid的程序,然后在进行判断找到第三方的程序
看看这个程序里面执行了什么,我们就反编译或者看运行的结果是什么来猜测,然后我们思考有没有我们的环境变量命令ps su ifconfig等等 然后就进行环境变量覆盖
计划任务的提权
运维人员会定期的保存数据会使用war命令 对参数可控
他会这样来写 tar czf /var/www/打包.tar *
说简单一点就是我们对命令的参数可以控可以执行命令
echo "/bin/bash" > shell.shecho "" > "--checkpoint-action=exec=sh shell.sh"
echo "" > --checkpoint=1
tar czf a.tar * 这个是在进行打包文件 *打包所以的文件 a.tar打包文件的名字
我们主要是利用的--checkpoint这个参数来进行从提权
我们在执行tar这个命令的时候就会执行我们后面的参数来进行操作,我们也就是可以提权成功了
tar czf a.tar * --checkpoint=1 --checkpoint-action=exec=sh shell.sh
怎么找到这类问题
我们怎么查看就是看定时任务里面使用的命令我们可以进行利用没有
利用也就是说可以加参数来执行其他的命令来进行操作 也就是这里的tar命令
定时任务权限配置不当
这个就是管理员在配置计时任务的时候权限没有控制好,也就是任意的人都可以编辑计时任务
主要我们普通的用户都可以编辑计时任务,我们写一个反弹shehll进去,这样就可以获取管理员的权限。
数据库提权:
windows我写过mysql提权 liunx的数据库提权其实跟windows的差不多
多了点我们要进行编译的操作,然后windows是dll文件 liunx是.so文件
然后我们使用工具来帮助我们直接获取到提权。
MDUT这个工具可以sharpsqltools这个也行我们在进行连接的时候,mysql不是要开启外联吗,我们开启过后我们还是连接不到数据库。
说明我们不能连接内网的数据库,这个时候我们想应该是被安全设备阻止了,我们就可以让mysql数据库来连接我们,我们就要建立隧道,我们使用冰蝎来建立最简单了。
等我后面学好了建立隧道我会在写相关的博客来记录。现在只会最简单的。