【白帽子学习笔记】CTF实践

0x01 实验知识点

1x01 什么是CTF?

CTF(Capture The Flag)中文一般译作夺旗赛,在网络安全领域中指的是网络安全技术人员之间进行技术竞技的一种比赛形式。CTF起源于1996年DEFCON全球黑客大会,以代替之前黑客们通过互相发起真实攻击进行技术比拼的方式。发展至今,已经成为全球范围网络安全圈流行的竞赛形式,2013年全球举办了超过五十场国际性CTF赛事。而DEFCON作为CTF赛制的发源地,DEFCON CTF也成为了目前全球最高技术水平和影响力的CTF竞赛,类似于CTF赛场中的“世界杯”。

1x02 CTF竞赛模式

(1)解题模式(Jeopardy)在解题模式CTF赛制中,参赛队伍可以通过互联网或者现场网络参与,这种模式的CTF竞赛与ACM编程竞赛、信息学奥赛比较类似,以解决网络安全技术挑战题目的分值和时间来排名,通常用于在线选拔赛。题目主要包含逆向、漏洞挖掘与利用、Web渗透、密码、取证、隐写、安全编程等类别。

(2)攻防模式(Attack-Defense)在攻防模式CTF赛制中,参赛队伍在网络空间互相进行攻击和防守,挖掘网络服务漏洞并攻击对手服务来得分,修补自身服务漏洞进行防御来避免丢分。攻防模式CTF赛制可以实时通过得分反映出比赛情况,最终也以得分直接分出胜负,是一种竞争激烈,具有很强观赏性和高度透明性的网络安全赛制。在这种赛制中,不仅仅是比参赛队员的智力和技术,也比体力(因为比赛一般都会持续48小时及以上),同时也比团队之间的分工配合与合作。

(3)混合模式(Mix)结合了解题模式与攻防模式的CTF赛制,比如参赛队伍通过解题可以获取一些初始分数,然后通过攻防对抗进行得分增减的零和游戏,最终以得分高低分出胜负。采用混合模式CTF赛制的典型代表如iCTF国际CTF竞赛。

1.2 CTF各大题型简介

1x03 CTF各大题型简介

MISC(安全杂项)
全称Miscellaneous。题目涉及流量分析、电子取证、人肉搜索、数据分析、大数据统计等等,覆盖面比较广。我们平时看到的社工类题目;给你一个流量包让你分析的题目;取证分析题目,都属于这类题目。主要考查参赛选手的各种基础综合知识,考察范围比较广。

PPC(编程类)
全称Professionally Program Coder。题目涉及到程序编写、编程算法实现。算法的逆向编写,批量处理等,有时候用编程去处理问题,会方便的多。当然PPC相比ACM来说,还是较为容易的。至于编程语言嘛,推荐使用Python来尝试。这部分主要考察选手的快速编程能力。

CRYPTO(密码学)
全称Cryptography。题目考察各种加解密技术,包括古典加密技术、现代加密技术甚至出题者自创加密技术。这样的题目汇集的最多。这部分主要考查参赛选手密码学相关知识点。

REVERSE(逆向)
题目涉及到软件逆向、破解技术等,要求有较强的反汇编、反编译扎实功底。需要掌握汇编,堆栈、寄存器方面的知识。有好的逻辑思维能力。主要考查参赛选手的逆向分析能力。此类题目也是线下比赛的考察重点。

STEGA(隐写)
全称Steganography。题目的Flag会隐藏到图片、音频、视频等各类数据载体中供参赛选手获取。载体就是图片、音频、视频等,可能是修改了这些载体来隐藏flag,也可能将flag隐藏在这些载体的二进制空白位置。有时候需要你侦探精神足够的强,才能发现。此类题目主要考查参赛选手的对各种隐写工具、隐写算法的熟悉程度。

PWN(溢出)
PWN在黑客俚语中代表着攻破,取得权限,在CTF比赛中它代表着溢出类的题目,其中常见类型溢出漏洞有栈溢出、堆溢出。在CTF比赛中,线上比赛会有,但是比例不会太重,进入线下比赛,逆向和溢出则是战队实力的关键。主要考察参数选手漏洞挖掘和利用能力。

WEB(web类)
WEB应用在今天越来越广泛,也是CTF夺旗竞赛中的主要题型,题目涉及到常见的Web漏洞,诸如注入、XSS、文件包含、代码审计、上传等漏洞。这些题目都不是简单的注入、上传题目,至少会有一层的安全过滤,需要选手想办法绕过。且Web题目是国内比较多也是大家比较喜欢的题目。因为大多数人开始安全都是从web*站开始的。

0x02 获取Web Developer中的flag

1x01 Net Discover

首先通过namp扫描存活的主机,成功发现了Web Developer;
在这里插入图片描述

1x02 Nmap信息收集

接下来使用Nmap扫描Web Developer检查一下端口的开放情况;
nmap 10.34.80.3
在这里插入图片描述
可以看到开放了80端口和22端口,这两个端口的作用分别是http端口(网页)和ssh端口(远程登陆);

1x03 访问网站

因为网站开放了80端口,所以可以尝试登陆http端口
在这里插入图片描述
发现有一个搭建了一个个人模块网站,这个网站应该是一个比较经典的CMS了,记得我当初刚买服务器的时候@visualDust给我搭了这一个这个网站。

1x04 whatweb探寻

通过whatweb进行检测可以发现该网站的如下信息:
在这里插入图片描述
从内容信息中可以得到,该网站的CMS为WordPress;

1x05 wpscan

WPScan是Kali Linux默认自带的一款漏洞扫描工具,它采用Ruby编写,能够扫描WordPress网站中的多种安全漏洞,其中包括WordPress本身的漏洞、插件漏洞和主题漏洞。

1x06 Dirb爆破

使用dirb来爆破网站的根目录;
dirb -u http://10.34.80.3
在这里插入图片描述
找到一个 http://10.34.80.3/ipdata/ 感觉这个很像流量信息,进去看一看吧
在这里插入图片描述

1x07 wireshark数据分析

在获取了网站数据流信息后,我们尝试使用wireshark进行一次分析;尝试搜索一下login,结果有惊奇的发现;
在这里插入图片描述
成功找到了登陆界面:
在这里插入图片描述
我们随便提交一个,找到信息post去的地址:
在这里插入图片描述
确定了之后就去找发送到相应url下的post信息;

尝试筛选http请求类型为post的请求,找到了这两个:
在这里插入图片描述
可以看到账号密码就在这里,密码好像是做了一定的加密,当时这个不是问题;
在这里插入图片描述
我们把burp打开,然后随便输入一个账号和密码,在burp里面给他改一下,然后再把请求放过去就可以了;
下图是我们的请求;
在这里插入图片描述
很明显可以发现,log对应的是用户名,pwd对应的是密码;然后我们把他给改掉
在这里插入图片描述
成功进入网站后台!
在这里插入图片描述

1x08 使用wordpress的插件漏洞进行提权

这里可以使用三种方案进行实现:

首先我们先需要给这个wordpress安装reflex gallery插件;
去plugins界面搜索一下reflex,安装上去就好;
在这里插入图片描述
当然了你也可以选择本地上传安装;
安装成功之后记得把插件激活一下!
在这里插入图片描述
接下来使用msf来控制漏洞:

在这里插入图片描述
出现meterpreter>说明可以控制了,我们可以在这里输入Linux命令来查看一些文件:

回退到/var/www/html之后可以看到wp-config.php;
在这里插入图片描述
查看一下里面的内容:
在这里插入图片描述
可以在里面找到数据库的用户和密码:
在这里插入图片描述

2x02 反弹Shell

上传反弹shell。http://pentestmonkey.net/tools/web-shells/php-reverse-shell
【目的:PHP网站渗透;实现途径:上传网站后,URL访问(含有)该反弹shell的页面。
功能:该脚本会发起反弹TCP连接到攻击者(脚本中指定攻击者IP地址和端口号)。】

我们把代码稍微修改一下,ip改成10.34.80.3, 反弹端口设为4444;

首先需要把这里的theme给修改为Twenty Sixteen,记得点击Select,然后点击Leave!
在这里插入图片描述
然后将php文件复制粘贴过来==》记得upload!
注意一下,因为我实在找不到404.PHP的url路径,所以我就改了search.php,效果就是搜索的时候触发
在这里插入图片描述
还有一件事! , 因为刚才修改了theme,这里需要把对应的主界面也改了;(不改好像也行)
在这里插入图片描述

接下来我们使用kali的nc监听刚才设置的4444端口。
在这里插入图片描述
现在我们search一下就可以发现nc里面已经可以操作了!
在这里插入图片描述
在这里插入图片描述
经过路径的探寻后找到了wp_config.php 文件
在这里插入图片描述

2x03 利用文件管理插件(File manager)漏洞

这个没啥技术含量,安装了插件之后直接就可以查看了;这里就不写了

1x09 ssh登陆该网站

这里我们尝试用上一步中获取的数据库密码来登陆

结果发现遇到了这个问题:
在这里插入图片描述
这里我们进行一下修改配置文件,sudo vim /etc/ssh/ssh_config打开这个文件,然后在最下面添加:

# StrictHostKeyChecking ask改成StrictHostKeyChecking no
在这里插入图片描述
然后输入:ssh webdeveloper@10.34.80.3
在这里插入图片描述
成功登录了进来!
在这里插入图片描述
尝试查看发现权限不足:
在这里插入图片描述
查看一下可以执行的sudo命令
在这里插入图片描述
发现可以root权限执行tcpdump命令
创建攻击文件
在这里插入图片描述
tcpdump命令详解:

  • -i eth0 从指定网卡捕获数据包
  • -w /dev/null 将捕获到的数据包输出到空设备(不输出数据包结果)
  • -z [command] 运行指定的命令
  • -Z [user] 指定用户执行命令
  • -G [rotate_seconds] 每rotate_seconds秒一次的频率执行-w指定的转储
  • -W [num] 指定抓包数量

0x03 实验小结

本次的实验中完整的做了一次从发现目标主机到获取flag的过程,在实现的过程中包括了

  • 通过扫描发现目标主机
  • 根据主机开放的80端口找到其的网页
  • 通过扫描网页目录找到流量包
  • Wireshark解析流量包
  • 获取管理员密码
  • 根据网页的cms找到通用漏洞
  • tcpdump提权

总之这次的实验做的很爽