freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

VulnHub-HACKLAB: VULNIX-靶机渗透学习
2020-12-29 01:18:15

靶机地址:https://www.vulnhub.com/entry/hacklab-vulnix,48/

靶机难度:初级(CTF)

靶机发布日期:2012年9月10日

靶机描述:在这里,我们有一台易受攻击的Linux主机,该主机具有配置缺陷,而不是有目的的易受攻击的软件版本(无论如何,在发布之时就如此!)

目标:得到root权限&找到flag.txt

作者:DXR嗯嗯呐

信息收集

nmap扫描靶机地址

1609175197_5fea109d17f36d468d9dc.png!small?1609175196878

nmap端口扫描

1609175203_5fea10a30f7bfc982dfa5.png!small?1609175202940

22 ssh OpenSSH 5.9

25 smtp

79 Finger Finger原是UNIX系统中用于查询用户情况的实用程序(DOS系统也包含此命令)。UNIX系统保存了每个用户的详细资料,包括E-mail地址、帐号、真实姓名、登录时间等信息。

110 pop3

111 rpcbind

143 imap

…..太多了就不一一列举了

首先从25端口开始

nc连接端口,VRFY验证用户是否存在

  • VRFY---用于验证给定的用户邮箱是否存在,以及接收关于该用户的详细信息。
  • 220--服务就绪。
  • 502--命令尚未实现。
  • 421--无法提供正常服务,关闭传输管道。邮件保留在本地,可能会尝试重新投递。通常这种情况发生在服务器遇到问题,必须关闭传输。
  • 500--命令格式错误,不可识别。当命令行太长时也会发生这样的错误。

1609175214_5fea10aeb1d909547a7dd.png!small?1609175214391

这里我们通过脚本快速测试存在的用户,首先安装smtp-user-enum

1609175232_5fea10c02444a459e34b4.png!small?1609175232044

执行smtp-user-enum命令测试用户

smtp-user-enum -M VRFY -U /usr/share/wordlists/metasploit/namelist.txt -t 192.168.16.145

  • -M 用户名猜测EXPN、VRFY或RCPT的方法(默认为VRFY)
  • -U 通过smtp服务检查的用户名文件
  • -t 服务器运行smtp服务的主机

1609175257_5fea10d99a9c455aa01ea.png!small?1609175257522

kail自带的字典很多,我这是随便找的,找到不少用户呢

finger命令查一下用户

finger用于查找并显示用户信息,包括本地与远端主机的用户皆可,帐号名称没有大小写的差别。单独执行finger指令,它会显示本地主机现在所有的用户的登陆信息,包括帐号名称,真实姓名,登入终端机,闲置时间,登入时间以及地址和电话。

1609175296_5fea1100be8dc4ad8c685.png!small?1609175296548

将这两个用户放在一个文件里爆破一下密码试试

1609175302_5fea110620d9c194f2ead.png!small?1609175301814

执行命令

hydra -L 1.txt -P /usr/share/wordlists/rockyou.txt -t 4 ssh://192.168.16.145

1609175307_5fea110b0810924203d6f.png!small?1609175306795

获得user/letmein

ssh登陆,发现home目录下有两个用户,之后就没有获得什么可以提权的信息了

1609175318_5fea11161ad3a2b6bf8e5.png!small?1609175317811

先退出,再看其他端口

nfs服务配置

在前面的端口扫描时,发现过端口2049的nfs服务

1609175325_5fea111daef7184d442ce.png!small?1609175325438

NFS(Network File System)即网络文件系统,它允许网络中的计算机之间通过TCP/IP网络共享资源。在NFS的应用中,本地NFS的客户端应用可以透明地读写位于远端NFS服务器上的文件,就像访问本地文件一样。最早由sun公司开发,是类unix系统间实现磁盘共享的一种方法。

首先查看一下NFS目录列表

showmount命令用于查询NFS服务器的相关信息

  • -e  显示目录列表

1609175348_5fea113427c7a48c533eb.png!small?1609175347858

这里我们看到了靶机将vulnix用户的家目录共享

我们将共享目录挂着到kail攻击者电脑的tmp目录下

mount -t nfs 192.168.16.145:/home/vulnix  /tmp/nfs

1609175354_5fea113a5e958aab95766.png!small?1609175354161

1609175358_5fea113eab868697be43a.png!small?1609175358503

但是不能访问

1609175368_5fea114831bcc5ba47d1b.png!small?1609175368065

估计设置了root_squash

  • no_root_squash:登入 NFS 主机使用分享目录的使用者,如果是 root 的话,那么对于这个分享的目录来说,他就具有 root 的权限。
  • root_squash:在登入 NFS 主机使用分享目录的使用者如果是 root 时,那么这个使用者的权限将被压缩成为匿名使用者,通常他的 UID 与 GID 都会变成 nobody 那个系统账号的身份。

在此登陆user用户,查看vulnix用户的UID和GID,在攻击者终端建立一个和靶机UID和GID用户一致的vulnix用户,应该就可以访问上面挂载的目录了,

1609175410_5fea11722dfb760f9aa28.png!small?1609175409871

建立一个临时vulnix用户

groupadd -g 2008 vulnix #创建一个组并指定组的GID

adduser vulnix -uid 2008 -gid 2008  #创建一个用户指定UID和GID

1609175428_5fea1184eefec02c23940.png!small?1609175428736

切换用户,访问成功,没有获得有用的信息

1609175443_5fea11931851e98d0e011.png!small?1609175442974

我们这里可以在这个网络目录中生成一个ssh秘钥,用来登陆vulnix用户

在root用户下,执行ssh-keygen命令生成秘钥

ssh-keygen用来生成ssh公钥认证所需的公钥和私钥文件。

1609175452_5fea119cf3dddf8661eb2.png!small?1609175452734

在nfs目录创建一个.ssh目录,将刚才生成的公钥id_rsa.pub复制到/tmp/nfs/.ssh目录下,并重命名为authorized_keys

1609175471_5fea11af0931299b74275.png!small?1609175470856

使用私钥,登陆成功

ssh -i id_rsa vulnix@192.168.16.145

1609175484_5fea11bc73f69da40b031.png!small?1609175484338

提权

用户具备sudo权限

1609175494_5fea11c6cc69547e0aad0.png!small?1609175494525

使用sudoedit 命令打开/etc/exports看一下,是一个nsf配置文件,添加/root目录共享,将no_root_squash

  • Ro 只读权限
  • Rw读写权限
  • Sync数据同步写入内存硬盘
  • no_root_squash 访问共享目录时,用户如果是root权限,对共享目录也具有root权限(最好不要设置,增加服务安全隐患,稍后再提)
  • root_squash 如果访问共享目录是root的权限用户,对共享目录的权限会被压缩为nfsnobody用户的权
  • all_squash 不管你访问共享目录的用户是谁,都必须压缩为nfsnobody用户的权限

1609175512_5fea11d88470bf8c4d1ed.png!small?1609175512355

让配置文件生效有两个办法:

  • 1、使用root权限执行exportfs -a,但是我们没有权限
  • 2、重启目标靶机(在现实渗透中很不现实)

重启靶机,showmount -e 我们看到了/root的共享目录

1609175531_5fea11eb22b3c81be787f.png!small?1609175530851

挂载目录,可以root用户访问nfs目录了

1609175537_5fea11f1eaea0a9294ce4.png!small?1609175537673

将本地的/bin/bash文件放在/tmp/nfs共享目录中

1609175544_5fea11f8c4dc40d5602f4.png!small?1609175544857

赋4777权限

1609175549_5fea11fdbbbaa735cca37.png!small?16091755494431609175553_5fea12014d38de9d6c72b.png!small?1609175552970

登陆靶机执行bash文件,获得root权限并获得flag

1609175765_5fea12d575790d3a89313.png!small?16091757652681609175770_5fea12dade2c8ad758691.png!small?1609175770620

完成!!!

总结

这个靶机虽然很是初级的,但是包含了很多服务,收益良多

  • 1、nmap扫描很多端口,利用finger 79端口查询靶机存在的用户(虽然上面写道用smtp-user-enum扫描用户,但是只是扫描的是SMTP用户,而且没用到。)
  • 2、hydra爆破到user用户的密码,并发现nfs服务存在共享目录/home/vulnix目录。
  • 3、将/home/vulnix网络共享目录挂载到本地目录下,发现nfs配置了root_squash,限制了必须和共享目录拥有者相同的SID和GID。
  • 4、在本地建立一个SID和GID为2008的vulnix用户,即可访问挂载的目录。
  • 5、在nfs网络目录下建立.ssh文件,通过ssh-keygen命令创建一个秘钥。将公钥复制到.shh目录,使用ssh命令通过秘钥登陆vulinx用户。
  • 6、vulnix用户具有sudo权限,可以sudoedit修改nfs配置文件,将nfs配置文件中,/home/vulnix的访问限制root_squash修改为no_root_squash,重启靶机,就可以任何用户访问了。
  • 7、将/bin/bash复制到nfs目录,使用root权限赋4777权限。登陆靶机执行bash文件,获得root权限。
# NFS # mount # 系统安全 # linux安全 # SSH私钥
本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者