nfs挂载+jsfuck编码+s位提权:ConnectTheDots靶机

admin 2024年4月19日21:55:13评论3 views字数 2400阅读8分0秒阅读模式

特色:这个靶机有难度。一是通过nfs挂载发现第一个用户;二是从主页源码提示推测出第二个用户;三是扫描目录发现文件是jsfuck编码解密后得到第二个用户的密码;四是ssh登录后得到flag1;五是提权(上篇是dirtycow提权),这里通过寻找s位的文件、利用polkit来systemd-run提权,最终找到flag2;六是拓展通过vim强行修复swp文件得到第一个用户密码。

靶机地址:https://www.vulnhub.com/entry/connect-the-dots-1,384/

1、靶机ip:192.168.137.134

2、扫描ip

nfs挂载+jsfuck编码+s位提权:ConnectTheDots靶机

开放端口很多,重点看的是111和2049端口都涉及到nfs网络文件系统的挂载。同时ssh端口修改到了7822。后面的端口是动态端口,没什么有用信息。

3、nmap带漏洞扫描

nmap --script=vuln -p21,80,111,2049,7822 192.168.137.134

nfs挂载+jsfuck编码+s位提权:ConnectTheDots靶机

发现一个sql注入。

4、存在111和2049端口,可能有nfs挂载系统,默认情况下,RPC服务使用的端口通常是 111 和 2049。

nfs挂载+jsfuck编码+s位提权:ConnectTheDots靶机

显示有个用户名为morris;

挂载一下,mount -t nfs 192.168.137.134:/home/morris mor

nfs挂载+jsfuck编码+s位提权:ConnectTheDots靶机

挂载后有很多文件;但没有权限

nfs挂载+jsfuck编码+s位提权:ConnectTheDots靶机

5、主页,源代码查看,发现一句话,

nfs挂载+jsfuck编码+s位提权:ConnectTheDots靶机

可以得到的信息:“他们给我起名叫M,给你起名叫N。嗯,除了名字的首字母外,我们的名字完全一样,你除了备份什么都找不到“

那另一个用户名可能为:norris;

6、扫描目录,gobuster dir -w /usr/share/dirbuster/wordlists/directory-list-2.3-medium.txt -u http://192.168.137.134

nfs挂载+jsfuck编码+s位提权:ConnectTheDots靶机

捡重要的,192.168.137.133/mysite

nfs挂载+jsfuck编码+s位提权:ConnectTheDots靶机

nfs挂载+jsfuck编码+s位提权:ConnectTheDots靶机

7、通过检索,发现上面这是JSFuck加密方式,注意观察,这是一串从b1到b10的相连的字符串,将它们连接起来,放到网站:https://js-fuck-and-hieroglyphy-decoder-and-encoder.vercel.app/来解密,得出:

nfs挂载+jsfuck编码+s位提权:ConnectTheDots靶机

alert("You're smart enough to understand me. Here's your secret, TryToGuessThisNorris@2k19")

这里有个Norris,可能是个用户名;

由开放端口可以知道有服务ssh,ftp.来根据用户名登陆一下

用户名为norris 密码为TryToGuessThisNorris@2k19   

8、ssh登录,注意这里的端口号改成7822

ssh [email protected] -p 7822 

nfs挂载+jsfuck编码+s位提权:ConnectTheDots靶机

9、flag1:

查看目录下有哪些文件,看到有user.Txt。得到第一个flag

nfs挂载+jsfuck编码+s位提权:ConnectTheDots靶机

10、提权

nfs挂载+jsfuck编码+s位提权:ConnectTheDots靶机

有两个用户:norris知道密码,但另一个用户morris不知道密码(见最后第11项,找到它的密码);

(1)linux 提权主要有两种一种是脏牛ditrycow提权(上篇就是这个),另外一种比较简单就是sid linux提权。

(2)linux的权限主要是有r w x 这三种,也就是读权限,写权限和执行权限;linux 提权涉及到一个s权限。每当这个文件有s权限的,当运行这个文件时,以文件的拥有者去执行这个文件;所以我们要知道root用户拥有的具有s的执行权限的文件。

寻找:find / -perm -u=s -type f 2>/dev/null

含义:

-perm -u=s 查找拥有s权限的文件

-type f 指定类型为文件

2>/dev/null 是将报错信息输出到空,也就是不输出报错信息

nfs挂载+jsfuck编码+s位提权:ConnectTheDots靶机

(3)s位文件

nfs挂载+jsfuck编码+s位提权:ConnectTheDots靶机

比较一下,列了三个,前两个都可以,重点关注这个/usr/lib/policykit-1/polkit-agent-helper-1,该文件的属主和数组都是root,且具有s位权限,可以以属主的身份运行,应该可以提权;

(3)systemd-run -t

polkit是linux系统中针对文件权限管理的一套机制,而helper相当于是充当一个介于操作者与被操作文件的一个中介,会通过这个helper去调用执行文件。因此如果我们能够借助helper的高权限,以root的身份调用bash,即可实现提权。可以通过如下的命令实现触发polkit-agent-helper-1,并借用polkit-agent-helper-1的root高权限启动bash进行提权。

可以使用systemd-run 启动伪终端,此时会通过polkit-agent-helper-1启动,而polkit-agent-helper-1具有高权限,因此就有可能实现提权。

nfs挂载+jsfuck编码+s位提权:ConnectTheDots靶机

systemd-run -t /bin/bash,输入密码TryToGuessThisNorris@2k19   

nfs挂载+jsfuck编码+s位提权:ConnectTheDots靶机

得到 flag2。

11、虽然题目学习完了,但还有要拓展的;

(1)漏洞提权

上面提到的Linux Polkit 有个权限提升漏洞,这个漏洞通杀很多老版本的linux靶机,可以直接在Exploit-DB上搜索CVE-2021-4034。

nfs挂载+jsfuck编码+s位提权:ConnectTheDots靶机

(2).secretfile.swp文件

nfs挂载+jsfuck编码+s位提权:ConnectTheDots靶机

由于swp文件是一种临时的交换文件,通常在特殊异常退出的情况时会产生。结合strings中看到的字符串中存在vim,再考虑到先前我们看到的好多提示都与快没电了!电池耗尽相关。因此我们大胆猜测这个文件就是vim编辑时断点异常退出产生的,我们可以使用vim -r参数读取损坏的swp文件:

nfs挂载+jsfuck编码+s位提权:ConnectTheDots靶机

vim -r .secretfile.swp

nfs挂载+jsfuck编码+s位提权:ConnectTheDots靶机

我们又得到了一串字符串blehguessme090,通过尝试我们发现,这就是morris账户的密码,

nfs挂载+jsfuck编码+s位提权:ConnectTheDots靶机

morris用户ssh登录成功。

原文始发于微信公众号(MicroPest):nfs挂载+jsfuck编码+s位提权:ConnectTheDots靶机

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年4月19日21:55:13
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   nfs挂载+jsfuck编码+s位提权:ConnectTheDots靶机https://cn-sec.com/archives/2661951.html

发表评论

匿名网友 填写信息