靶机Cyberry
工具
hydra、crunch、dirbuster
涉及到的点
Port knocking(端口试探)
Brainfuck编码
ftp爆破
ssh爆破
openssl enc加密
命令执行漏洞
Linux awk 命令
渗透过程
靶机地址192.168.1.10。开放的端口21、22、80。

访问80端口,在源码里面存在base64加密的字符串,拿到一个secretfile.html。

给了一串二进制数据,没懂什么意思。利用dirbuster和dirb扫到了一些可以访问的页面。整理一下应该用得到的页面
ftp://192.168.1.10:21
http://192.168.1.10/.bashrc
http://192.168.1.10/berrypedia.html
http://192.168.1.10/secretfile.html
http://192.168.1.10/login.php
http://192.168.1.10/register.php
http://192.168.1.10/welcome.php
http://192.168.1.10/phpmyadmin/index.php
http://192.168.1.10/placeho1der.jpg
//点击berrypedia.html页面Elderberry,图片是倒过来的,文字也是镜面对称的,用手机的前置摄像头拍一下,内容是port of tacoma(塔科马港)
http://192.168.1.10/hidden.gif
自己在做的时候一直把注意力放在登录之后的welcom.php页面,但是实在不会做看WP的时候我惊了。突破点在http://192.168.1.10/placeho1der.jpg这这张图片上面。

图片是四个人物和一个港口。突破点在四个人物上面。这四个人分别是Smiley Lewis, Dave Edmunds, Fats Domino和Gale Storm,首先,他们都是艺术家,都演奏了同一首歌曲,名字叫,”I hear you knocking”,年份分别是,1970,1955,1955,1961,原来跟knock有关,linux下有个命令knock可供安装使用。port knocking(端口试探)是一种通过连接尝试,从外部打开原先关闭端口的方法。一旦收到正确顺序的连接尝试,防火墙就会动态打开一些特定的端口给允许尝试连接的主机。涨姿势!!!那么显然说明了有个端口没有开,需要我们knock。knock的顺序就是前面提到的年份。
在使用knock前需要安装这个命令。
sudo apt install knockd
sudo vim /etc/knockd.conf
修改第7行内容为:command = /sbin/iptables -I INPUT 1 -s %IP% -p tcp --dport 22 -j ACCEPT
sudo vi /etc/default/knockd
修改:START_KNOCKD = 1
sudo service knockd start
更多port knocking知识可以看http://einverne.github.io/post/2019/07/how-to-use-port-knocking-hide-ssh-daemon-port.html
然后在我们的kali进行端口试探

再次扫描靶机开放的端口,可以看到新开放了一个61955端口。

扫描这个端口的目录

扫描这个端口下的目录文件,拿到一个看起来特别的目录。

拿到一段Brainfuck编码,解密网站https://www.splitbrain.org/services/ook

解码出来是这样的,估计是用户名,pw是密码。
Hello World!
team members
chuck
halle
nick
terry
mary
kerry
pw: bakeoff
前面在扫80端口的时候开放了ftp和ssh,拿这些用户名和密码去爆破。
先爆破ssh

拿到账号密码,但是无法连接

接着爆破ftp,账号密码一样

成功连接上ftp

在.bash_history中存在.reminder.enc 和.trash两个文件,get .reminder.enc,get .trash到kali。
因为是点号开头属于隐藏文件,在kali的桌面看不到。直接file查看两个文件的文件类型。

第一个是openssl enc加密,第二个是文本,查看第二个文本,试一些密码,结合第一个是加密,

网上找了个脚本,直接放在命令行用,这里会产生大量的文件。
for i in `openssl enc -ciphers | tail -n +2` ; do for j in `cat .trash`; do openssl ${i:1} -d -salt -md md5 -in .reminder.enc -out "decrypted$i$j" -k $j; done;done 2>/dev/null
然后在产生的文件中寻找text类型的文件

拿到一个登陆密码。

在前面对61955端口进行信息收集的时候我们还发现了login.php,用mary/dangleberry69登陆

第一个页面是视频播放,第二个页面给了一些DNS解析地址

在这个地方存在命令执行漏洞。我们尝试在前端修改提交的内容

得到的回应,执行了whoami的命令

确定存在命令执行漏洞,我们利用它来反弹一个shell到kali上。
先监听kali上的8848端口,然后在命令执行处写上反弹shell的语句

反弹拿到shell,并利用Python建立一个交互式的shell

在当前目录下拿到nb-latin文件,看起来是用户名或者密码。

把nb-latin从靶机下到kali上去

把新拿到的这个字典当成密码和前面得到的用户名字典结合继续爆破ssh。

拿到ssh的账号密码。ssh连接

列出当前的目录发现一个invoke.sh文件,想执行,但是权限不够,用sudo -l列出当前用户可执行的指令,我们就发现terry有权限可以执行invoke.sh。

尝试用terry的权限去执行sudo -u terry ./invoke.sh /bin/bash,用户切换到了terry

同样查看当前用户可以执行的命令,可以看到halle可以执行一个awk,AWK 是一种处理文本文件的语言,是一个强大的文本分析工具。

那么我们可以通过awk的命令将用户从terry变成halle。用BEGIN命令,引入system全局变量,执行/bin/bash,sudo -u halle awk 'BEGIN{system("/bin/bash")}'

用户切换到了halle。再次sudo -l,chuck可以执行php文件

那我们可以写php文件去读取chuck目录下的一些东西。echo "" > /tmp/1.php,然后用chuck用户去打开。

然后以同样的方法读取.deleted目录,发现两个文件。

看看ssh_stuff里面有什么。

id_rsa.pub里面是一串rsa的公钥

在看看deleted里面的内容,是一份邮件。

把最重要的内容提取出来,告诉我们密码开头是che,结尾是rry,用到的字母的次数,用到一次的字母,baca一定有。

根据特征我们可以知道密码一共15位,前三位和后三位固定,中间插baca,baca的位置可以变化,剩下没用到的字符在剩余的位置随机组合,我们用crunch生成字典 ,
然后每两个合并成一个大文件,接着爆破root用户的密码。
先生成字典
crunch 15 15 -t che@@@@@bcacrry > password6.txt
crunch 15 15 -t chebcac@@@@@rry > password5.txt
crunch 15 15 -t che@bcac@@@@rry > password4.txt
crunch 15 15 -t che@@bcac@@@rry > password3.txt
crunch 15 15 -t che@@@bcac@@rry > password2.txt
crunch 15 15 -t che@@@@bcac@rry > password1.txt
那么接着爆破root用户的密码。
hydra -l root -P big_password1.txt ssh://192.168.1.10 -f -t 6

歇着吧。字典太大了,等不起了。直接用大神的图

然后ssh连接root用户。

总结
这个靶机非常奇妙,切入的点也让我惊讶,端口试探,没听过,我太菜了。AWK是啥,没听过,果然小白还是小白。言归正传,这个靶机让我最大的感触就是细心,一开始我是忽略了人物肖像那张图的,不懂端口试探是一回事,但是我竟然对这张图片完全没有怀疑,这是最让我感到挫败感的点,信息收集真的需要很细心,渗透测试需要有怀疑和开放的精神,脑洞要大,思路要奇特。这是我这次最深刻的感受
参考链接
https://www.anquanke.com/post/id/154504#h2-2
靶机Cyberry的更多相关文章
- CTF线下防御战 — 让你的靶机变成“铜墙铁壁”
本文首发安全客,未经允许禁止转载.原文链接 一. 前言 随着CTF的普及,比赛的形式也有了越来越多的花样,对于线下赛来说,开始出现了安全加固或者防御战之类的环节,亦或者因为拿下靶机后不希望其他攻击者进 ...
- Ms17-010进行WEB提权之实践下某培训靶机服务器
前言:该机器为某个其他培训机构的靶机,说实话在这里没炫耀啥,只是给各位学习Ms17010的同学指一条路,我原先也折腾这玩意儿好久,但是就是不行,最近才找到了出路,所以多写两篇文章,把各种需要注意的地方 ...
- metasploit利用漏洞渗透攻击靶机
1.网络测试环境构建 首先需要先配置好一个渗透测试用的网络环境,包括如图1所示的运行Kali Linux系统的计算机,如图2所示的老师给的Windows Server 2000系统的计算机.这两台计算 ...
- web 攻击靶机解题过程
sql注入靶机攻击过程请参考 https://pentesterlab.com/exercises/from_sqli_to_shell/course http://www.sohu.com/a/12 ...
- Fowsniff: 1靶机入侵
一.信息收集 1.存活主机扫描 arp-scan -l 发现192.168.1.13是目标靶机的IP地址 2.端口扫描 接下来用nmap神器来扫描目标IP地址,命令如下: root@kali2018 ...
- digitalworld.local: MERCY靶机入侵
0x01 前言 MERCY是一个致力于PWK课程安全的靶机系统.MERCY是一款游戏名称,与易受攻击的靶机名称无关.本次实验是攻击目标靶机获取root权限并读系统目录中的proof.txt信息 靶机的 ...
- Moonraker:1靶机入侵
0x01 前言 攻击Moonraker系统并且找出存在最大的威胁漏洞,通过最大威胁漏洞攻击目标靶机系统并进行提权获取系统中root目录下的flag信息. Moonraker: 1镜像下载地址: h ...
- FourAndSix: 2.01靶机入侵
0x01 前言 FourAndSix2是易受攻击的一个靶机,主要任务是通过入侵进入到目标靶机系统然后提权,并在root目录中并读取flag.tx信息 FourAndSix2.镜像下载地址: htt ...
- Typhoon-v1.02 靶机入侵
0x01 前言 Typhoon VM包含多个漏洞和配置错误.Typhoon可用于测试网络服务中的漏洞,配置错误,易受攻击的Web应用程序,密码破解攻击,权限提升攻击,后期利用步骤,信息收集和DNS ...
随机推荐
- testt
一级标题 二级标题 三级标题 四级标题 l 1
- VS 2017 RC .net core ef+ MySql 出现错误
在di注入时会出现错误 MySql.Data.EntityFrameworkCore.Storage.Internal.MySQLCommandBuilderFactory..ctor(ISensit ...
- 闲聊,Python中的turtle
写在前面 其实我也不知道为什么我会写这个,本文涉及信号与传递,Python 正题 近期看到一个3年前的视频,1000个圆一笔画出一个Miku 在观看完源码了以后,我发现这是这调用的是基本的goto,用 ...
- Dubbo:dubbo管理界面安装
首先需要Tomcat.Zookeeper安装后在进行安装Dubbo管理界面 提供Dubbo-admin管理界面war包: https://github.com/zhaoyue123ABC/Publi ...
- Springboot:单元测试Junit基本注解@BeforeClass、@AfterClass、@Before、@After、@Test、
一.unit中集中基本注解,是必须掌握的. @BeforeClass – 表示在类中的任意public static void方法执行之前执行 @AfterClass – 表示在类中的任意public ...
- Leetcode547 朋友圈解题报告 (DFS
题目描述: 班上有 N 名学生.其中有些人是朋友,有些则不是.他们的友谊具有是传递性.如果已知 A 是 B 的朋友,B 是 C 的朋友,那么我们可以认为 A 也是 C 的朋友.所谓的朋友圈,是指所有朋 ...
- lua环境搭建
前言: Linux & Mac上安装 Lua 安装非常简单,只需要下载源码包并在终端解压编译即可,本文介绍Linux 系统上,lua5.3.0版本安装步骤: ↓ 1. Linux 系统上安装 ...
- 「AGC029C」Lexicographic constraints
「AGC029C」Lexicographic constraints 传送门 好像这个题非常 easy. 首先这个答案显然具有可二分性,所以问题转化为如何判定给定的 \(k\) 是否可行. 如果 \( ...
- css列表属性和样式控制
如下图是360浏览器主页的内容,上边有导航,下边是新闻列表,这种布局很常见,今天就来学习css列表属性之后并制作它. 列表属性 html有三种类型的列表:无序列表,有序列表和自定义列表.设置列表标记有 ...
- Java基础00-字符串14
1. API 1.1 API概述 2. String String常用类的常用方法 String字符串变量的创建: 声明: String 变量名; String str; 声明并初始化: Str ...