写在前面
这个靶场涉及的知识点比较多,思路是大部分学习其他师傅的wp的,写复盘是想记录思路顺便回顾学好每个知识点。
启动前准备
由于网卡配置不同,我每次都需要开靶机刚开启的时候shift+e进入grub编辑,给一个root的/bin/bash启动编辑一下/etc/netwrok/interfaces里面的网卡配置,这是前置背景。
靶机信息
地址:https://hackmyvm.eu/machines/machine.php?vm=Colors
难度:medium
ip:192.168.64.92
信息搜集
nmap扫到21、22、80端口,并且22端口被过滤了(注意这里要用root扫如果用普通用户扫扫不到22端口信息)
先访问80端口
只有一张图片,扫目录一无所获,也对图片分析不出什么内容
看看21号端口
看起来可以用anonymous登陆,登陆一下
把secret.jpg下载下来,使用stegseek分析一波
搞出来一段字符,在cyberchef分析,是base85
得到一个pink的账号密码,这个时候我的思路是去登陆22端口,但是它的端口filted,后来去看了wp才知道这里有一个端口敲门,ftp那里就给了提示(好神奇的点子)
1127,1039,1081分别对应first,second,third敲门顺序,按顺序敲门端口才会打开,类似情况之前做vuln的DC系列的靶机也遇到过。
一个问题
知道了这个思路,我按照常规思路knock三个端口,然而22端口没有按照预期的打开,我试了很多次,还是失败,也不知道原因。第二天为了想实践后面的关卡,想着干脆关了防火墙,所以借助grub登陆root,按照网上给的命令总是失败,更头疼了。然后就想看看knock的配置文件,找到日志文件,一看到enp0s3我就想到要改成enp01,思路就来了。
于是经过一番搜索,找到/usr/lib/systemd/system/knockd.service,把里面的enp0s3改成enp0s1,再启动靶机
这次就可以了
虽然这个问题是针对自己的电脑产生的,别人的电脑可能不会出现这样的情况,但是整个过程是自己一点一点摸索到,最后成功解决的时候真的很开心,所以值得记录一下。
获得shell
ok解决了ssh的问题,想用之前拿到的pink账号密码登陆,还是失败
报错说publickey,说明需要密钥文件登陆。搞半天pink的账号密码可以用ftp登陆,对ftp的敏感度还不够,一直没想到,登陆后
pink目录下有.ssh目录,思路是在里面上传自己kali的id_rsa.pub(命名为authorized_keys),然后用那个文件为凭证自己kali登陆ssh
登陆成功
提权过程
拿到pink的shell后没能发现什么,接下来的思路是去到/var/www/html上传一个a.php,再在网页端访问a.php,就拿到www-data的shell
Sudo -l查看到green有vim可以利用提权
1 | sudo -u green /usr/bin/vim |
再输入’:!/bin/sh’,成功拿到green的shell
1 | green@color:/var/www/html$ cd /home/green |
到green到家目录下大致可以利用的就是test_4_green,下载到本地,ida打开查看一下
注意到有个jnz比较
大致就是比较v8和v7,这里用ida修改一下jnz为jz
保存后再执行,随便输入一个数字也会爆出密码
接着就登陆purple账户
1 | purple@color:~$ sudo -l |
sudo -l发现有个脚本可以用,就是要下载masterddos.hmv下的attack.sh然后交给/usr/bin/sh 执行
思路是利用dns欺骗,让靶机向自己的kali发送请求,自己的kali伪造一个attack.sh,让靶机访问
步骤:
先在修改/etc/ettercap/etter.dns文件,增加
1 | masterddos.hmv A 192.168.64.3 |
然后开始dns攻击
1 | ettercap -i eth0 -Tp -M arp:remote -P dns_spoof /192.168.64.92// /192.168.64.1// |
在靶机去ping masterddos.hmv,回复的ip是kali的ip,DNS欺骗执行成功
1 | purple@color:~$ ping masterddos.hmv |
接着就sudo /attack_dir/ddos.sh执行脚本
成功拿到root的shell,提权成功。
总结
第一次遇到DNS欺骗,学到了,通过ftp敲门那里思路比较清奇,要打破惯性思维,不要一看到账号密码只想到ssh的网页,还有ftp!可执行文件修改(二进制方向的魅力),knock开端口(注意网卡配置),还有一般都是先拿到www-data再拿到其他账户的shell,这次是先有个pink才有www-data。
这么理下来知识点也不是特别多,但我就要消化好久,自己做的时候没办法想到的思路无非就是因为知识面不够广,还有就是脑子不够灵活(比如没想到拿账号密码登陆ftp),路漫漫。