当前位置: 代码迷 >> 综合 >> vulnhub Gigachad 靶场练习
  详细解决方案

vulnhub Gigachad 靶场练习

热度:16   发布时间:2023-12-21 00:00:57.0

前言

这次我们练习的靶机是从vulnhub下载的靶机Gigachad:1,该靶机的难易程度为简单。

下载地址为https://www.vulnhub.com/entry/gigachad-1,657/。

首先下载下来,导入虚拟机。官网建议使用的虚拟机为Virtualbox,但是我平时用的VMware,所以这次练习就用VMware做演示。

导入虚拟机

导入虚拟机后把网络连接改为NAT连接模式。桥接模式和NAT模式都是可以的,这里不使用桥接模式是为了避免扫描到C段的其他物理主机。

NAT模式下,虚拟机与物理机所在的网段不同,物理机和虚拟机同时连接在一个虚拟路由器上。

在桥接模式下,物理机与虚拟机都在同一个网段,他们都同时连接在一个虚拟交换机上。

更详细的的内容可以自行百度。

请添加图片描述

然后打开虚拟机Gigachad。提示让我们输入账号和密码登陆,但是我们不知道密码。我们现在的目的就是通过漏洞获取到它的密码。首先我们需要找到这台靶机的IP地址。

请添加图片描述

活力全开,对C段进行存活主机扫描。

nmap -sn --min-parallelism 100 --min-hostgroup 256 192.168.119.0/24

-sn 代表存活主机扫描,不进行端口测探。

–min-parallelism 代表调整探测报文的并行度,也就是在扫描同一台主机时会发送很多个探测数据包,这个参数指定的数即nmap一次至少要发多少个数据包。

–min-hostgroup 代表调整并行扫描组的大小,也就是一次性同时对多少台主机进行扫描。

更详细内容可以参考:https://zhuanlan.zhihu.com/p/322244582,关于nmap的一些性能参数的学习

请添加图片描述

配置网络

扫描没有发现靶机的IP,应该是没有分配到IP地址,我们需要打开靶机的终端看一下网络配置。首先重新启动靶机,在出现下面这个界面时按e。

请添加图片描述

按e后就进入了配置页面,注意那个ro quiet,我们要把它修改为 rw signie init=/bin/bash,然后按Ctrl+X启动系统。

ro 代表read only,只读模式。

rw 代表read write,读写模式。

signie init= 代表启动系统后自动运行的程序。

/bin/bash 是系统shell的位置。

在这里插入图片描述

在这里插入图片描述

然后就成功的调出了shell,我们执行 ifconfig看一下ip,系统提示没发现这个命令。我们换另一个命令 ip address查看一下ip,果然网卡ens33是没有自动分配到IP地址。

ip address 这个命令类似于路由器和交换机里的命令,可以省略一部分命令,例如 ip a也是可以的。

在这里插入图片描述

查看一下网络的配置,发现配置的网卡是 enp0s3,但是我们在靶机中之发现有网卡 ens33,所以把 enp0s3改成 ens33

cat /etc/network/interfaces
vi /etc/network/interfaces
:wq

请添加图片描述

在这里插入图片描述

修改完成之后保存,并重启网络。

/etc/init.d/networking restart

请添加图片描述

再次查看ip时发现已经分配到了IP地址。下面就重启靶机,还是用nmap扫描出靶机的地址。

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

获取shell

通过nmap的C段扫描我们已经知道靶机的IP地址为 192.168.119.124,下面我们就针对性的对这个IP进行扫描。

nmap -A --min-parallelism 100 192.168.119.124

-A 代表扫描综合性扫描,会扫描出很多内容。

注意下图红色框中内容,这句话的意思是说明ftp可以匿名登陆。

在这里插入图片描述

尝试一下匿名登陆ftp服务器。该ftp客户端匿名登陆的方式是在输入用户名时输入 anonymous,在输入密码是直接按回车即可。登陆后查看一下服务器上的文件,发现了chadinfo。

ftp 192.168.119.124
anonymous
ls

在这里插入图片描述

把chadinfo下载下来,查看 一下这个文件的类型,发现是一个zip压缩文件。

file chadinfo

在这里插入图片描述

解压该压缩文件,并查了文件里面的内容。

unzip chadinfo
r
chadinfo_out
file chadinfo_out
cat chadinfo_out

在这里插入图片描述

这个文件里面给出了账号 chad,还有提示去 /drippinchad.png这个页面。

在这里插入图片描述

有提示:why yes,this is my favorite place to relax.how could you tell?他说这个地方是他最喜欢去的地方。我也不知道这是啥地方,直接上google。

在这里插入图片描述

仙女塔?尝试用这个密码通过ssh登陆靶机。尝试一下这个这两个单词的各种组合,最后发现密码是 maidenstower

ssh chad@192.168.119.124

在这里插入图片描述

登陆成功,现在有了普通用户权限并成功获取第一个flag。

cat user.txt

在这里插入图片描述

提权

查看一下哪些命令能用超级用户权限,执行 sudo -l,发现没有这个命令。

在这里插入图片描述

查看一下内核的版本,根据经验应该可以使用suid提权。

suid提权详细内容可以参考:https://cloud.tencent.com/developer/article/1600994

uname -a

在这里插入图片描述

尝试寻找一下有suid权限的文件。

find / -perm -u=s -type f -exec ls -la {
    } \; 2>/dev/null

-perm 是代表按指定权限搜索。

-u=s 其中u代表当前用户的权限,s代表suid权限,-号代表至少需要满足指定的权限,可以有更多的权限,但是不能少了这个指定权限。关于这个参数更详细的内容可以参考:https://blog.csdn.net/weixin_44061169/article/details/105784760

-tpye 代表搜索指定的类型,f代表文件。

-exec 代表搜索完后执行指定的命令,其中{}代表所搜到的结果,命令以;为结束标识。更详细内容可以参考:https://www.pianshen.com/article/86691137271/

2>/dev/null 代表将不显示错误信息,详细介绍已经在前面的博客讲了,可以参考我前面的博文。

在这里插入图片描述

搜索出来这么多文件,我通过 strings命令以文本的形式显示每个二进制文件,但是经过分析后没有看出可以利用的文件。然后我通过搜索引擎逐个搜索每一个文件,发现s-nail-privesep可以用来提权。在msf的漏洞库里面搜索一下有么有这个文件的利用程序。

searchsploit s-nail

在这里插入图片描述

发现有一个利用脚本,位于/usr/share/exploitdb/exploits/multiple/local/中,但是这个s-nail程序的版本需要小于14.8.16。我们查看一下靶机上这个程序的版本 s-nail -V

在这里插入图片描述

版本为14.8.6,这个版本的程序应该是有这个漏洞的,把这个利用文件上传到靶机。

scp /usr/share/exploitdb/exploits/multiple/local/47172.sh chad@192.168.119.124:/tmp/

这个是上传命令,如果将本地文件与服务器的位置反过来就是下载命令。注意是在本地执行这条命令,而不是已经连接ssh的命令窗口。

在这里插入图片描述

上传已经成功,下面就执行这个文件吧。

cd /tmp./47172.sh

在这里插入图片描述

执行失败,提示 /bin/sh^M bad interpreter,很明显这个是换行符不兼容导致的。在这个文件里的换行符是 \r\n,而这个系统能识别的换行符是 \n,我已我们需要将 /r/n转换成 /n。首先用vi查看一个这个文件里面显示了什么。

vi 47172.sh

在这里插入图片描述

在每一行的结尾出现了 ^M,这不是 ^M的组合,而是一个控制字符,只占一个字节,表示的就是windows中的 \r。现在可以通过下面这条命令把这些字符去掉。

sed -i "s/\r//" 47172.sh

其中参数i中的参数指定内容的格式是"s/字符1/字符2/",也就是把指定文件中的字符1替换成字符2。

查看一下文件发现 ^M已经没有了,下面可以执行该文件了。

./47172.shwhoami

在这里插入图片描述

提权成功,现在可以查看root的flag了。

cat /root/root.txt

需要注意的是,该网站随便访问一个地址后就会生成一个新页面。如果你用目录扫描软件扫描过该网站,则 /var这个盘全部占满,导致没有剩余空间来执行提权程序。所以我们需要修改一下代码,把提权程序的活动目录改为/tmp即可。

在这里插入图片描述

参考文献

[1] https://zhuanlan.zhihu.com/p/322244582,关于nmap的一些性能参数的学习

[2] https://www.pianshen.com/article/86691137271/,Find 命令详解

[3] https://blog.csdn.net/weixin_44061169/article/details/105784760,find 查找指定权限的文件

[4] https://cloud.tencent.com/developer/article/1600994,Linux下利用SUID提权

[5] http://blog.chinaunix.net/uid-27034868-id-3375746.html,文件从windows到linux如何解决中多余的^M