Mobile wallpaper 1Mobile wallpaper 2Mobile wallpaper 3Mobile wallpaper 4Mobile wallpaper 5
1498 字
7 分钟
vulnhub靶机-connect-the-dots(jsfuck、morsecode解密+断电.swp文件+polkit-agent-helper提权)

vulnhub靶机-connect-the-dots(jsfuck、morsecode解密+断电.swp文件+polkit-agent-helper提权)#

声明#

  1. 本文为个人跟随b站up主红队笔记学习vulnhub的connect-the-dots靶机的复现通关记录,旨在分享靶机和记录学习心得体会,讲解若有谬误之处欢迎指正。
  2. 该靶机下载地址为’https://vulnhub.com/entry/connect-the-dots-1,384/‘

渗透流程#

  1. 在vmware部署靶机并开机后,打开kali对靶机进行信息收集,使用nmap执行nmap -sn 192.168.245.0/24(请替换成你的网段)进行主机发现,发现图中的192.168.245.161为靶机。(192.168.245.136为我的kali虚拟机的地址) scan
  2. 并进行端口发现,执行nmap --min-rate 10000 -p- 192.168.245.161,并对开放端口记录用于后续渗透,发现21、80、111、2049、7822、40397、46625、51427、52883端口。 ports
  3. 对端口进行详细扫描,执行nmap -sT -sV -sC -O -p21,80,111,2049,7822,40397,46625,51427,52883 192.168.245.161,得到端口详细服务内容和系统版本,7822探测出来为ssh服务,其它就是21端口ftp服务,80端口http服务,2049端口nfs服务。 details
  4. 执行sudo nmap --script=vuln -p21,80,111,2049,7822,40397,46625,51427,52883 192.168.245.161用脚本扫一下漏洞(未探测到服务信息的部分端口这里没有加上)。 script
  5. 发现部分目录,以及sql注入可能。 dirb sqli
  6. 使用ftp尝试连接目标服务器,无法匿名登录。 ftp
  7. 对于2049端口的nfs(文件共享),执行showmount -e 192.168.245.161列出共享目录和sudo mount -t nfs 192.168.245.161:/home/morris 123链接到本地文件夹(注意这里123目录要自己创建)。 nfs
  8. 列出文件夹信息,读取各文件,最后在.ssh目录下找到公私钥相对有价值。 rsa
  9. 对于公钥列出的账户进行记录。 morris
  10. 尝试ssh远程7822端口,ssh -i id_rsa -p 7822 morris@192.168.245.161,连接需要密码,暂时走不通。 ssh
  11. 尝试还未尝试过的目录爆破,gobuster dir -u http://192.168.245.161 --wordlist=/usr/share/dirbuster/wordlists/directory-list-2.3-medium.txt,简单查看一遍各目录,发现/backups,/mysite可能有探索价值。 gobuster
  12. /backups是一段视频,网页源码探索也没有特殊发现。(这里用windows系统的浏览器可能出现打不开情况) backups
  13. 对/mysite目录进行探索。 mysite
  14. register.html为一个注册页面。 register
  15. .cs后缀的这个文件点开看看。 cs
  16. 此文件为jsfuck语言(介绍见末尾补充),可能存在某些信息,可以尝试破解。 jsfuck
  17. 删去多余字符,去jsfuck.com解密,第二行疑似为密码,先记录下来。 decode
  18. 将其作为密码尝试可能用户,成功获得初始shell。 shell

提权过程#

  1. 用已知用户(norris)连接ftp,下载文件到本机。 pwd
  2. 图片文件中comment包含莫尔斯码,存在图片隐写,可在在线网站或工具解码内容。 comment morsecode
  3. morsecode解码内容提示有一个secretfile可公开访问,继续查看其它几个备份文件,内容意义不大。 writein
  4. 对于公开访问的提示,想到查看/var/www目录下,并成功找到该文件,没有很有用的信息,但还有一个.secretfile.swp,可以将其下载到本地使用strings解读。 strings
  5. 或者也可以使用vim -r .secretfile.swp打开(使用vim编辑器的recovery恢复异常退出之前状态)。 recovery
  6. 怀疑该内容某个用户密码,成功切换用户为morris。 pwd
  7. 对比用户,norris 用户被加入sudo组,意味着有权限执行sudo命令,可能更有助于提权。 morris
  8. 寻找自动任务未果,执行/sbin/getcap -r / 2>/dev/nul,给出的tar权限cap_dac_read_search+ep表示可以无视文件或目录的 r/x 权限限制,直接读取或遍历任何文件或目录,但无法修改写入。 getcap
  9. 这也意味着可以通过打包拿到root内的文件包括flag(不多介绍)。 flag
  10. 我们继续想其它提权办法,如查找suid文件:find / -perm -u=s -type f 2>/dev/nullfindsuid
  11. 尝试利用polkit-agent-helper的权限提权,执行systemd-run -t /bin/bash,调用polkit-agent-helper-1,输入密码,打开了一个root权限的shell,提权结束。 rooted

其它补充与收获总结#

  1. jsfuck是JavaScript的一种编码方式,尝试用六种字符完全实现JavaScript逻辑,实现代码混淆,但很容易被反混淆,更多用于娱乐和挑战,逻辑实现原理详见文章’https://blog.csdn.net/gitblog_00443/article/details/150851764’介绍。
  2. polkit提权原理:polkit-agent-helper作为一个代理工具,协助应用程序向PolicyKit发送授权请求,并处理来自 PolicyKit 的响应。当一个应用程序需要执行特权操作时,它会调用polkit-agent-helper,该工具会弹出一个对话框,提示用户输入其凭证(如密码),然后将这些凭证发送给PolicyKit进行验证。如果用户提供的凭证被验证成功,PolicyKit 就会授权该请求,如果Polkit配置不当,会出现提权利用点。
  3. 经过我对该靶机检查,policykit对于管理员验证仍然严格,仍可以执行systemd-run -t /bin/bash提权的原因是:PolicyKit配置错误地将sudo组普通用户(norris)识别为管理员,导致原本要求验证root密码的操作,接受了普通用户密码通过验证,以下为各配置情况: (1) cd /usr/share/polkit-1/actions/,该目录存在polkit各类操作验证策略文件。 conf (2) cat org.freedesktop.systemd1.policy查看systemd验证配置,执行systemd各类命令均如选中区域,需要管理员用户密码验证,且默认保留5min无需验证。 conf (3) cat /etc/polkit-1/localauthority.conf.d,在51-debian-sudo.conf中定义了:“AdminIdentities=unix-group”,指出了验证身份为sudo组(若改为AdminIdentities=unix-user:0,则仅可以用root身份验证),由前面执行id指令所见,norris用户包含于sudo组,故可通过个人用户密码执行systemd-run -t /bin/bash,以root身份开启一个shell。 conf
  4. 本靶机提权时,看到pkexec为suid文件,也可以使用PwnKit提权漏洞(CVE-2021-4034)的脚本提权,该漏洞核心原理程序对命令行参数处理的一个越界读取,以及由此引发的环境变量写入。具体原理参考文章’https://cloud.tencent.com/developer/article/2625314’ conf
vulnhub靶机-connect-the-dots(jsfuck、morsecode解密+断电.swp文件+polkit-agent-helper提权)
http://124.70.202.140/posts/post-12/12/
作者
Ne+N3k_O
发布于
2026-03-08
许可协议
CC BY-NC-SA 4.0

部分信息可能已经过时