CTF训练笔记系列 - 快速导航



一、环境搭建

1.攻击机

VMware环境下的kali linux虚拟机(本次渗透测试使用kali-linux-2020.4-vmware-amd64版本,初始用户名、密码均为:kali)

2.靶机

本次靶机的搭建遇到了一些问题,现已解决,详见<.vbox>和<.vmdk>格式文件的使用方法
(靶机文件链接: https://pan.baidu.com/s/1n-DT3CORmKzP0PvWgRoLcA 提取码: vkqs)

3.网络配置

攻击机与靶机桥接于同一网卡上,便于查找靶机ip地址。【同笔记(一)】

二、CTF介绍

CTF是一种流行的信息安全竞赛形式,其英文名可直译为“夺得Flag”,也可意译为“夺旗赛”。其大致流程是:参赛团队之间进行攻防对抗、程序分析等形式,率先从主办方给出的比赛环境中得到一串具有一定格式的字符串或其他内容,并将其提交给主办方,从而夺得分数。为了方便称呼,我们把这样的内容称之为“Flag”。

三、信息收集

使用sudo指令登录root权限(需输入密码:kali)

sudo -s

获取靶机ip
在攻击机的终端中使用“ifconfig”指令获取攻击机的网络地址(此时靶机也在同一网段,因为刚才桥接在了同一网卡上),

ifconfig

利用得到的ip地址与子网掩码可构造网段:192.168.43.0/24作为参数,使用netdiscover工具搜索同一网段内所有主机(若主机较多则等待时间可能较长,有时虽然显示‘Finished’但实际上程序依然在运行只是还没有输出结果),

netdiscover -r 192.168.43.0/24

在这里插入图片描述
结果如下,其中"PCS Systemtechnik GmbH"一行即为靶机,靶机ip为192.168.43.213。

在这里插入图片描述

四、深入挖掘

1.使用nmap工具

使用nmap工具扫描靶机

nmap -p- -T4 192.168.43.213  //使用最大线程数扫描靶机全部开放端口
//也可使用 nmap -A -v -T4 192.168.43.213 扫描更详细的信息

在这里插入图片描述
Ⅰ.发现靶机开放了21端口的FTP服务,于是想到:
①尝试寻找该版本是否有可利用漏洞(如利用远程溢出漏洞可导致远程命令执行);

Ⅱ.发现靶机开放了22端口的ssh服务,于是想到:
①是否有私钥泄露?
②能否找到私钥的用户名?
③束手无策时考虑暴力破解密码;

Ⅲ.发现靶机开放了80端口的http服务,于是想到:
①尝试直接用浏览器访问靶机开放了http服务的端口;
②使用dirb、nikto等工具探测http的目录;

Ⅳ.发现特殊端口(大端口)9090、13337、22222、60000开放,于是想到:
①对于大端口开放的http服务,尝试直接用浏览器访该端口,查看网页源代码,寻找flag值;
②对于大端口开放的非http服务,尝试使用nc工具探测该端口的banner信息,再根据banner信息判断如何深入利用该服务;

2.使用nikto工具

使用nikto工具进一步探测靶机敏感信息

nikto -host http://192.168.43.213:80
nikto -host http://192.168.43.213:9090
//详细探测靶机开放了http服务的端口,格式为(nikto -host http://靶机ip:端口号)

在这里插入图片描述
在这里插入图片描述

3.使用dirb工具

使用dirb工具探测靶机http服务对应的目录

dirb http://192.168.43.213:80
dirb http://192.168.43.213:9090
//详探测靶机http服务对应的目录,格式为(dirb http://靶机ip:端口号)

在这里插入图片描述
在这里插入图片描述

4.使用nc工具

4.1 Banner信息

  • Banner信息,即欢迎语,在banner信息中可以得到软件开发商,软件名称、版本、服务类型等信息,通过这些信息可以使用某些工具直接去利用相对应的exp。
  • 需要和目标建立链接才能获取对应的banner信息,但目标服务器可以对banner进行隐藏或者禁止读取。

4.2 使用nc工具探测banner信息

有多种工具【如:netcat(即nc),dmitry,namp等】可以探测banner信息,此处以nc工具为例。

nc 192.168.43.213 13337
//使用nc工具探测开放了非http服务的大端口的banner信息,格式为(nc 靶机ip 端口号)

在这里插入图片描述
得到一个flag

nc 192.168.43.213 22222

在这里插入图片描述
发现该端口运行的是ssh服务。

nc 192.168.43.213 60000

在这里插入图片描述
得到一个flag

5.使用浏览器

在这里插入图片描述
根据之前用‘nmap -A -v -T4 192.168.43.213’扫描得到的信息(上图),直接访问:
https://192.168.43.213:9090/
在这里插入图片描述
得到一个flag

在这里插入图片描述
根据之前用‘dirb http://192.168.43.213:80’扫描得到的信息(上图),
浏览器访问:
https://192.168.43.213:80/
http://192.168.43.213:80/cgi-bin/
http://192.168.43.213:80/index.html
以上三个网址均无有效信息。


Ⅰ.浏览器访问:
http://192.168.43.213:80/passwords/
在这里插入图片描述
得到两个文件,
㈠首先打开passwords.html,无有效信息:
在这里插入图片描述
但事实果真如此吗?尝试查看源代码(右键单击空白处,选择‘View Page Source’):
在这里插入图片描述
Amazing!
在这里插入图片描述
得到一个密码:winter,尚不清楚是哪里的密码,先记下。
㈡然后打开FLAG.txt:
在这里插入图片描述
得到一个flag
Ⅱ.浏览器访问:
https://192.168.43.213/robots.txt:
在这里插入图片描述
得到三个禁止爬虫访问的地址,构造链接并访问:
http://192.168.43.213/cgi-bin/root_shell.cgi
http://192.168.43.213/cgi-bin/tracertool.cgi
http://192.168.43.213/cgi-bin/
其中‘root_shell.cgi’与‘cgi-bin/’无法找到有效信息,但在访问‘tracertool.cgi’时:
在这里插入图片描述
发现该页面可以输入指令!立刻想到是否存在命令注入漏洞。
文本框中输入‘127.0.0.1’,点击‘Trace!’,分析URL:
在这里插入图片描述
得知命令执行过程为:将文本框中语句以get方法传递给服务器的‘tracertool.cgi’文件并执行,随后将结果返回客户端网页。
故试探性输入:
127.0.0.1;id
在这里插入图片描述
发现‘id’命令得到执行,但当前用户不具有root权限。考虑到之前得到了一个密码(winter),尝试打开‘/etc/passwd’文件,查看是否有用户名可以使用该密码登录ssh。
【备注:linux系统中所有用户名都存储在‘/etc/passwd’文件中,所有用户均可访问;所有用户名对应的密码都加密存储在‘/etc/shadow’文件中,仅允许root权限访问。】
构造命令:
127.0.0.1;cat /etc/passwd
在这里插入图片描述
这啥输出啊?!Σ(⊙▽⊙)
于是怀疑‘cat’命令被服务器过滤,为了绕开这种过滤规则尝试使用相近命令达到同样效果,构造相近命令:
127.0.0.1;more /etc/passwd
在这里插入图片描述
哦豁还真绕过去了!
分析该文件:
在这里插入图片描述
在这里插入图片描述
发现只有root、RickSanchez、Morty、Summer四个用户名可以用于登录,于是尝试使用ssh远程登录服务器。

6.使用SSH远程登录服务器

ssh root@192.168.43.213
//使用ssh远程登录服务器,格式为(ssh 用户名@靶机ip)

在这里插入图片描述
发现无法通过22号端口使用ssh远程登录,但注意到之前用‘nc 192.168.43.213 22222’扫描得到的信息:

在这里插入图片描述
说明可以通过22222号端口使用ssh远程登录:

ssh -p 22222 root@192.168.43.213
ssh -p 22222 RickSanchez@192.168.43.213
ssh -p 22222 Morty@192.168.43.213
ssh -p 22222 Summer@192.168.43.213
//使用ssh通过特定端口远程登录服务器,格式为(ssh -p 端口号 用户名@靶机ip)

经尝试,成功使用{用户名:Summer;密码:winter}远程登录到服务器。发现当前目录下存在‘FLAG.txt’文件,但‘cat’命令疑似被过滤,遂使用‘more’命令代替:

在这里插入图片描述
得到一个flag

7.使用FTP匿名登录服务器

在这里插入图片描述
根据之前用‘nmap -p- -T4 192.168.43.213’扫描得到的信息(上图),可尝试匿名登录ftp服务器根目录,用浏览器访问:

ftp://192.168.43.213

在这里插入图片描述
打开FLAG.txt:
在这里插入图片描述
得到一个flag
打开pub文件夹,无文件。


五、总结

  • 注意开放了未知服务的端口,可以使用nc工具获取对应的Banner信息;
  • 当命令疑似被过滤时,尝试使用相近的shell命令绕开过滤,如‘cat’换成‘more’;
  • 不放过任何可利用服务和细节,哪怕可能会做无用功;
  • 该靶机共13处flag,已找到6处,剩余7处以后找时间补充(而且root也还没拿到,希望自己不要咕咕咕)。
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐