靶机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 ...
随机推荐
- 开发小技巧之:unicode的排序和正则匹配
目录 简介 ASCII字符的排序 本地字符的排序 为什么不使用unicode进行排序 emoji的正则匹配 总结 简介 我们知道计算机最先兴起是在国外,出于当时计算机性能的考虑和外国常用字符的考虑,最 ...
- Vue 前端权限控制的优化改进版
1.前言 之前<Vue前端访问控制方案 >一文中提出,使用class="permissions"结合元素id来标识权限控制相关的dom元素,并通过公共方法check ...
- 易车网实战+【保姆级】:Feapder爬虫框架入门教程
今天辰哥带大家来看看一个爬虫框架:Feapder,看完本文之后,别再说你不会Feapder了.本文辰哥将带你了解什么是Feapder?.如何去创建一个Feapder入门项目(实战:采集易车网轿车数据) ...
- 解决CentOS下service 功能 不能使用 bash: service: command not found
首先检查自己是否 使用的是root用户 在centos系统中,如果/sbin目录下没有service这个命令,就会出现 bash: service: command not found 解决步骤如下: ...
- 如何用Redis统计独立用户访问量
拼多多有数亿的用户,那么对于某个网页,怎么使用Redis来统计一个网站的用户访问数呢? 使用Hash 哈希是Redis的一种基础数据结构,Redis底层维护的是一个开散列,会把不同的key映射到哈希表 ...
- CTF反序列化逃逸
刷了一下CTF反序列化的题,去年没有好好了解.又补了一次PHP,害太菜了.每天看看别人的博客真的可以鼓舞人.简单记录一下两道字符串逃逸问题 推荐一个反序列化总结的很好的笔记https://www.cn ...
- Sharding+SpringBoot+Mybatis 读写分离
基于Sharding JDBC的读写分离 1.引入pom.xml <dependencies> <!-- mybatis --> <dependency> < ...
- I-Identical Day[题解]
原题目地址(牛客) Identical Day 题目大意 给定一个长度为 \(n\) 的 \(01\) 串,对于每段长度为 \(l\) 的连续的 \(1\) ,其权值为 \(\frac{l\times ...
- 嵌入式Redis服务器在Spring Boot测试中的使用
1.概述 Spring Data Redis提供了一种与Redis实例集成的简单方法. 但是,在某些情况下,使用嵌入式服务器比使用真实服务器创建开发和测试环境更方便. 因此,我们将学习如何设置和使用嵌 ...
- C语言:随机抽奖
#include <stdio.h> #include <stdlib.h> //<stdlib.h>用于调用 rand(), #include <time. ...