概述 (Overview)
- MACHINE TAGS
- Web
- Outdated Software
攻击链 (Kiillchain)
TTPs (Tactics, Techniques & Procedures)
- nmap
- exploit-db
- command injection
- pspy
阶段1:枚举
老规矩,还是先通过 nmap 枚举下目标服务开放的端口和服务:
暴露的端口很少,浏览器访问下 5000 端口,看看是不是http服务:
很好,在这个端口上确实部署的是一个http服务。通过操作页面上的功能,获悉这可能是调用后端服务的一个Web脚本,尝试用nmap扫一下本地地址,返回的端口信息与我们直接扫的信息一致:
这里我开始对表单尝试命令注入,但尝试了很久发现并没有利用成功,只有是一个非IP地址就会提示错误。
尝试 payloads
功能,发现是通过它实际上就是最终执行的 msfvenom
,生成需要系统的反弹脚本。对表单尝试命令注入,失败。尝试文件上传提示内容错误,失败。对下载地址进行 lfi fuzzing,失败。
os
选项支持三种类型的选项:windows
、linux
、android
尝试 sploits
功能,实际上就是执行的 searchsploit
搜索。对表单尝试命令注入失败,并提示让你停止攻击,说会反击你。 有点意思哈…
阶段2:工具和利用
阶段2.1:msfvenom APK template command injection
在没有更多收获的情况下,开始对上诉三个服务进行 exploit-db 搜索,最终发现一个有意思的:Metasploit Framework 6.0.11 - msfvenom APK template command injection
。 刚好也能与目标服务上的 payloads
功能对应上。
将 49491.py
下载后,修改里面的 payload
内容来进行验证,我这里是通过wget来判断是否能成功执行命令注入:
留意到 http 被目标服务请求了一次,证明漏洞存在,注入反弹shell命令成功获取 kid
用户的shell:
并在 kid 用户目录下发现了 user flag。
阶段3:权限提升
为方便后续操作,先加入免登录公钥然后直接ssh登录到目标服务器上:
随后我将 LinEnum
脚本通过NC暴露在9901端口上,接着在目标服务器上通过bash执行该脚本(这样做有一个好处,就是脚本不落地,除非存在流量分析类工具才能还原出执行脚本):
根据收集到的信息发现存在 /home/pwn
目录,随后在目中发现 scanlosers.sh
可疑的脚本。
通过 /etc/passwd 目录可以得知三个可登录用户:root、pwn、kid
通过阅读脚本代码,发现是一个类似反制的一个脚本,通过查询 hackers
文件内容,排序IP并对其进行 nmap 端口扫描… 有意思… 接着用 pspy
查看下有没有什么可疑的内容。
发现每五分钟会删除 payloads
目录内的变更内容,看来是一个自动清理 msfvenom 生成的定时任务,没什么实际意义,还是继续研究 scanlosers.sh
脚本。
找到站点部署的目录,对代码进行查看,当输入的 text
内容符合正则时将会执行 searchsploit
进行 exploit 的查询,反之将会往 hacker
文件中写入内容,可知占位符第一段是时间戳,第二段是 srcip
,也就是来源IP的意思。
对脚本内容进行测试:
cut -d' ' -f3
的意思就是将空格作为分隔符,取第三个元素,而第三个元素 123
将传递成 ip
变量,被注入到执行nmap的语句中去。同时还观察到,每隔2分钟都会有一个未知的定时任务被执行,会不会就是执行scanlosers.sh
脚本呢?
让我们来尝试一下,将带有反弹shell的内容写入到 hackers
中,并开一个新的监听:
可以看到,得到了 pwn 用户shell,查看下 sudo -l
发现存在 msfconsole
:
这下就好办了,众所周知 msfconsole
是可以执行python命令的:
好吧,是我想多了每2分钟执行的是删除 payload
内容…
参考
- https://gtfobins.github.io/