对于vulnhub中的靶机,我们都需先下载镜像,然后导入VM,并将网络连接改为NAT模式。首先我们再来看一下靶机渗透的步骤:信息收集-漏洞分析-漏洞利用-提权。基本都是这个三个步骤,接下来开始我们今天的靶机渗透吧!
信息收集
主机发现
端口扫描
21/tcp FTP: 文件传输协议,用于在网络之间进行文件上传/下载。
80/tcp HTTP: 超文本传输协议,用于运行网络服务器提供网页等内容。这里为Apache HTTP服务器。
111/tcp rpcbind: RPC散列服务,用于映射RPC程序号到程序名称,统一RPC服务管理。
2049/tcp NFS: 网络文件系统协议,支持不同主机间共享文件系统。
7822/tcp SSH: 安全Shell协议,用于安全地远程登录和执行命令。这里为OpenSSH程序。
漏洞扫描
根据nmap扫描结果分析:
目标主机192.168.11.135上开放了21/tcp(ftp)、80/tcp(http)、111/tcp(rpcbind)、2049/tcp(nfs)几个端口
http服务上存在SQL注入漏洞,有可能利用的URL已给出,需进一步验证和利用
http服务器可能存在内部IP泄露的问题
nmap使用的脚本检测出一些其他可能的安全问题,如存储型XSS和CSRF,但未确定真实存在
111/tcp(rpcbind)和2049/tcp(nfs)服务可能存在一定的安全隐患
目录扫描
后续漏洞分析可以用到扫描出来的目录。
漏洞分析
信息收集知道有nfs,,ftp服务,先尝试登录ftp,啥也找不到。
用showmount尝试查看一下是否有共享目录(-e参数用于导出挂载目录):
要注意细节!这可能是一个用户名morris,
将NFS服务器的一个共享目录以本地文件系统的形式挂载到客户端进行访问。
查看里面文件
- 白色:表示普通文件
- 蓝色:表示目录
- 绿色:表示可执行文件
- 红色:表示压缩文件
- 浅蓝色:链接文件
读取权限都不够,看不了。
再打开首页面看看
查看源代码
可以得到的信息:“他们给我起名叫M,给你起名叫N。嗯,除了名字的首字母外,我们的名字完全一样
你除了备份什么都找不到“
接着打开目录扫描得到的文件
确实是图片,没有什么信息
没什么发现
再尝试/mysite这个目录,看看有没有发现。看到好几个文件。其中关注一下min.cs。
下载一下
下载之后会发现是JSfuck编码,让我看解密一下看看
有一个提示为TryToGuessThisNorris@2k19,感觉像是登录密码之类的,先收下。
在首页的时候,有过一个提示“他们给我起名叫M,给你起名叫N”所以
由此就知道两个用户名Norris,morris。
由开放端口可以知道有服务ssh,ftp.来根据用户名登陆一下
用户名为norris 密码为TryToGuessThisNorris@2k19
登录成功
查看目录下有哪些文件,看到有user.Txt。得到第一个flag
接下来就提权
提权
首先寻找有s位的文件:
重点关注这个/usr/lib/policykit-1/polkit-agent-helper-1,该文件的属主和数组都是root,且具有s位权限,可以以属主的身份运行,应该可以提权:
polkit是linux系统中针对文件权限管理的一套机制,而helper相当于是充当一个介于操作者与被操作文件的一个中介,会通过这个helper去调用执行文件。因此如果我们能够借助helper的高权限,以root的身份调用bash,即可实现提权。可以通过如下的命令实现触发polkit-agent-helper-1,并借用polkit-agent-helper-1的root高权限启动bash进行提权。
可以使用systemd-run -r启动伪终端,此时会通过polkit-agent-helper-1启动,而polkit-agent-helper-1具有高权限,因此就有可能实现提权。
如图所示,输入norris的凭据TryToGuessThisNorris@2k19后提权成功,也得到了第二个flag。
总结
这个靶机有点难度,首先在信息收集部分了解到开放的端口和对应的服务,可以看到有ftp,ssh,nfs,可以从这几个角度进行靶机渗透。然后就到了漏洞分析,首先就是先从登录ftp入手,最后也失败。然后就是看有无共享文件夹,最后从这里面找到一个用户名,这个需要很细心才能注意到,而且这个也是从后面登录首页面提示中得到证实,他就是其中的一个用户名。最后就在一个目录中找到了一个被jsfuck编码的,然后解码之后得到了另一个用户名以及密码。最后就利用得到的用户名及其密码进行登录,找到了第一个flag。最后就是提权,我第一次见这种提权方法,就先找到具有s位的文件,最后利用 polkit来提权,总之不是很容易。最后,如果哪里有问题还请大家帮忙指出!