靶场介绍

这是一个vulnhub里的一个初级的渗透靶场,主要是为了熟悉一下各个信息搜集工具的使用,以及跟着红队笔记的视频来学习一下渗透思路打一下基础。

这里的环境就一台靶机,直接打开vmx即可进行测试。

信息搜集

主机存活探测

渗透第一步需要做的就是信息搜集,我们先要确定主机的存活,确认我们要攻击的主机。

这里用几种方式来进行探测主机存活

namp

namp -sn 192.168.20.0/24 # -sn 采用四种不同类型的数据包探测目标主机是否在线,只进行主机探测不进行端口扫描

image-20240419192322268

arp-scan

arp-scan -l

image-20240419192521545

经过上面两种探测之后可以知道我们的目标靶机就是192.168.20.129,接下来就是对端口进行扫描搜集一下有哪些服务

端口扫描探测

nmap -sT 192.168.20.129 # -sT 使用TCP进行端口扫描
#还可以用这个命令扫描制定其他要求
nmap -sT --min-rate 10000 -p- 192.168.20.129 -oA nmap/ports# --min-rate,设置最低发包速率,这里为每秒一万次;-p- 是扫描1-65535端口的简化写法;-oA 将结果的所有格式都导出来,如果端口多的话可以方便我们查看保存下来

image-20240419192855002

image-20240419222045487

image-20240419222030200

发现这里开启了ftp、ssh、http、mysql服务

红队笔记这里还有一个很好的习惯,就是把端口提取出来,如果端口太多的话这样就会会很方便,现在我们从文件中将这四个端口提取出来,然后我们将其赋值给一个变量就可以直接用就会方便很多

grep open ports.nmap 
grep open ports.nmap| awk -F '/' '{print $1}' #就是以斜杠为分隔符,然后打印第一个字段
grep open ports.nmap| awk -F '/' '{print $1}' | paste -sd ',' #将字符合并到一行并以逗号为分隔符
# 这里 awk 默认会将每一行作为一个记录来处理

image-20240419223441495

image-20240419223456921

image-20240419223537108

这样就可以赋值给一个变量,然后-p参数就能直接探测该变量中的端口了

接下来确认端口之后就对这些端口的具体服务信息进行扫描

ports=$(grep open ports.nmap| awk -F '/' '{print $1}' | paste -sd ',')
nmap -sT -sV -sC -O -p $ports -oA nmap/details
# -sV 探测服务版本;-sC 使用默认脚本扫描 -O 探测操作系统版本

image-20240419224852873

这样我们就搜集到了相关的信息就可以开始选择性开始对具体端口进行渗透

还可以使用fscan直接一条命令扫出来

./fscan_amd64 -h 192.168.20.129

image-20240419225047643

开始渗透

ftp服务

从上面可以看是一个ftp匿名服务器,我们就可以直接登陆看看有什么东西

ftp 192.168.20.129 #匿名ftp用户名都是anonymous

这里列一下ftp常用命令:

查看指定后缀文件
dir .jpg

删除单个文件
delete 文件名

删除多个文件
# 格式:mdelete remote-files [ ...]
mdelete 文件名

重命名文件
# 格式:rename filename newfilename
rename test atest

上传文件
# 格式:put local-file [remote-file]
put /home/a.txt /mydata/b.txt

下载单个文件
# 格式:get [remote-file] [local-file]
get /mydata/a.txt /apps/b.txt

下载多个文件
# 格式:mget filename [filename ....]
mget *.*

输入?可以查看所有指令

登陆之后看看都有什么

image-20240419225708258

我们可以输入binary切换成二进制传输模式,防止有些可执行文件损坏

image-20240419230254565

然后我们进去这些目录把文件都下载下来,我们可以使用prompt命令关掉交互模式,这样下载文件就不需要我们确认更加方便

image-20240419230904141

然后去查看一下文件内容看有没有什么提示

image-20240419231041052

给了一串md5和base64的字符串,去解码看一下有什么用

md5解密出来为

This is not a password

image-20240419231247620

base64解密出来

image-20240419231341272

然后就是一些员工名单:

Naomi.W - Manager
Hector.A - IT Dept
Joseph.G - Web Design
Albert.O - Web Design
Gina.L - Inventory
Rico.D - Human Resources

然后就是下面的翻转文字,这里截图旋转一下

image-20240419231602348

似乎就是提示从这里入手不太行

然后还发现了一个有意思的,这些文字logo网上可以找到ascii转logo的网站,这里是一个网站:https://patorjk.com/software/taag/#p=testall&f=Isometric2&t=helloworld%0A

image-20240419231939106

80端口

这里不太行就开始看一些他的http页面吧

进去之后是一个apache的页面

image-20240419232336159

找不到什么能用的东西就直接开始端口扫描

dirsearch -u "http://192.168.20.129/"

image-20240419232812060

这里还学到一个新的目录扫描工具gobuster,他的扫描命令如下:

gobuster dir -u "http://192.168.20.129/" --wordlist=/usr/share/dirbuster/wordlists/directory-list-2.3-medium.txt
# 其他的字典可以去该目录下查看

gobuster的三种模式

dir:传统的目录爆破模式;
dns:DNS子域名爆破模式;
vhost:虚拟主机爆破模式;

image-20240419233246596

现在去相关端口看看有什么东西

前面两个都访问不了,最后一个有东西,似乎是一个cms的安装界面

http://192.168.20.129/administrator/installation/

image-20240419233413396

image-20240419233448024

这里吓得我不敢继续了,要是覆盖了这咋整正常人谁把这玩意放上来啊(

然后随便填了东西试了一下

image-20240419233619820

root用户是无法创建的

emmm然后有点无从入手了,因为也不知道是什么cms,这是我把鼠标移到问号上在底下突然有了提示,是Cuppa CMS

image-20240419234002096

这样就好办了,可以去搜一下这个CMS有没有漏洞,难绷搜了一下都是直接指向这个靶场的wp。。

那这里就学习红队笔记里的搜索方法,用到了searchsploit工具

searchsploit是一个用于Exploit-DB的命令行搜索工具,可以帮助我们查找渗透模块。

Exploit-DB是一个漏洞库,Kali Linux中保存了一个该漏洞库的拷贝,利用上面提到的命令就可以查找需要的渗透模块,它将搜索所有的漏洞和shellcode而且该漏洞库是保存在本地的,在没有网络的情况下也可以使用。

这里copy一下别人翻译的选项,参考文章:https://juejin.cn/post/7026899204446355486

Usage: searchsploit [options] term1 [term2] ... [termN]

==========
Examples
==========
searchsploit afd windows local
searchsploit -t oracle windows
searchsploit -p 39446
searchsploit linux kernel 3.2 --exclude="(PoC)|/dos/"

For more examples, see the manual: https://www.exploit-db.com/searchsploit/

=========
Options
=========
  -c, --case     [Term]     区分大小写(默认不区分大小写)
  -e, --exact   [Term]     对exploit标题进行EXACT匹配 (默认为 AND) [Implies "-t"].
  -h, --help                 显示帮助
  -j, --json     [Term]     以JSON格式显示结果
  -m, --mirror   [EDB-ID]   把一个exp拷贝到当前工作目录,参数后加目标id
  -o, --overflow [Term]     Exploit标题被允许溢出其列
  -p, --path     [EDB-ID]   显示漏洞利用的完整路径(如果可能,还将路径复制到剪贴板),后面跟漏洞ID号
  -t, --title   [Term]     仅仅搜索漏洞标题(默认是标题和文件的路径)
  -u, --update               检查并安装任何exploitdb软件包更新(deb或git)
  -w, --www     [Term]     显示Exploit-DB.com的URL而不是本地路径(在线搜索)
  -x, --examine [EDB-ID]   使用$ PAGER检查(副本)Exp
      --colour               搜索结果不高亮显示关键词
      --id                   显示EDB-ID
      --nmap     [file.xml] 使用服务版本检查Nmap XML输出中的所有结果(例如:nmap -sV -oX file.xml)
                              使用“-v”(详细)来尝试更多的组合
      --exclude="term"       从结果中删除值。通过使用“|”分隔多个值
                            例如--exclude=“term1 | term2 | term3”。

=======
Notes
=======
* 你可以使用任意数量的搜索词。
* Search terms are not case-sensitive (by default), and ordering is irrelevant.
  * 搜索术语不区分大小写(默认情况下),而排序则无关紧要。
  * 如果你想用精确的匹配来过滤结果,请使用用 -e 参数
* 使用' - t '将文件的路径排除,以过滤搜索结果
  * 删除误报(特别是在搜索使用数字时 - i.e. 版本).
* 当更新或显示帮助时,搜索项将被忽略。

那我们就直接搜索cuppa cms相关的漏洞

searchsploit cuppa cms

image-20240419235101032

发现有一条exp我们可以把他下载下来看一下利用方式

searchsploit cuppa cms -m 25971
cat 25971.txt

image-20240419235525664

我们看到了关键的利用路径和方式,是一个本地/远程文件包含漏洞,外加一个目录穿越,那现在我们就去测试一下

但是直接使用cuppa的路径是无效的

image-20240419235900623

联想到我们刚刚的安装页面是administrator/installation,猜测cuppa被替换成administrator

image-20240420000029674

发现能够访问,但是没有东西读回来,我们burp抓包看一下

image-20240420000345099

发现还是没什么东西,换个请求方式看看

image-20240420000423856

发现能读了,我们去读一下/etc/shadow

image-20240420000532005

发现密码都出来了,我们可以用john去爆破一下,把shadow的内容都copy下来保存成文件

image-20240420000813947

john pass.txt

image-20240420000853870

看到两个用户的密码被爆出来了,www-data一般是低权限的用户,我们就去试一下w1r3s这个用户,前面扫出来22的ssh服务,那我们就可以用ssh去连接看看

ssh连接

拿到账户密码之后去ssh连接

ssh w1r3s@192.168.20.129

image-20240420001327741

成功登陆!

id #打印真实以及有效的用户和所在组的信息
sudo -l #查看有哪些系统权限,列出目前用户可执行与无法执行的指令

image-20240420001652163

发现拥有所有sudo权限,那我们就可以直接切换root用户了!

image-20240420001824485

最后查看root目录下的flag.txt

image-20240420001906178

成功拿下这台主机!

hydra

这里还可以用hydra来爆破ssh,来学习一下

Hydra是一款非常强大的暴力破解工具,它是由著名的黑客组织THC开发的一款开源暴力破解工具。

参考文章:https://zhuanlan.zhihu.com/p/397779150

这里贴一下基本使用语法和参数

语法:Hydra 参数 IP 服务
参数:
-l login 小写,指定用户名进行破解
-L file 大写,指定用户的用户名字典
-p pass 小写,用于指定密码破解,很少使用,一般采用密码字典。
-P file 大写,用于指定密码字典。
-e ns 额外的选项,n:空密码试探,s:使用指定账户和密码试探
-M file 指定目标ip列表文件,批量破解。
-o file 指定结果输出文件
-f 找到第一对登录名或者密码的时候中止破解。
-t tasks 同时运行的线程数,默认是16
-w time 设置最大超时时间,单位
-v / -V 显示详细过程
-R 恢复爆破(如果破解中断了,下次执行 hydra -R /path/to/hydra.restore 就可以继续任务。)
-x 自定义密码。
service:指定服务名,支持的服务跟协议有:telnet,ftp,pop3等等。
注意:
1.自己创建字典,然后放在当前的目录下或者指定目录。
2.参数可以统一放在最后,格式比如hydra ip 服务 参数。
3.如果能确定用户名一项时候,比如web登录破解,直接用 -l就可以,然后剩余时间破解密码。
4.缺点,如果目标网站登录时候需要验证码就无法破解。
5.man hydra最万能。
6.或者hydra -U http-form等查看具体帮助。

可以先构造一个用户字典用于爆破:

vim user.list

image-20240420002455502

hydra -L user.list -P /usr/share/wordlists/rockyou.txt -t 4 ssh://192.168.20.129

难绷没跑出来,这我也不知道为什么了,这字典明明很大

image-20240420010700256

搜了一下发现也是有computer密码的

image-20240420010802330

然后我把w1r3s放到第一个,跑了好一会终于有了

image-20240420012002198

mysql服务

这里可能会存在没有设置密码直接登陆的情况,可以试一下,不过基本都是不可能的,所以一开始就没想着先试它

mysql 192.168.20.129 -u root -p 

image-20240420002113439