环境搭建
项目地址:
https://github.com/cym1102/nginxWebUI
这里使用docker进行项目部署,通过java -jar xxx.jar
的方式进行各种版本的启动
Dockerfile
如下:
FROM ubuntu
RUN sed -i 's/archive.ubuntu.com/mirrors.ustc.edu.cn/g' /etc/apt/sources.list \
&& apt update \
&& apt -y install openjdk-11-jdk \
&& apt -y install nginx \
&& apt -y install wget \
&& apt -y install git \
&& apt -y install maven \
&& apt -y install vim
这里搭建的是3.7.1
版本的项目
项目结构和依赖分析
结构比较简单,可以清晰的发现每个接口的路由,也就是在controller
包下
可以使用MurphySec进行依赖安全扫描,当然版本比较老,存在很多第三方导致的漏洞问题,这里不分析对应的漏洞成因,仅仅分析项目本身导致的安全风险
漏洞分析
任意文件上传
在文件上传功能,也即是controller.adminPage.MainController
这个控制器中存在有文件上传的实现方法upload(Context context, UploadedFile file)
其路由映射的路由为/adminPage/main/upload
该方法为自己实现的文件上传的逻辑
-
首先是未对文件的后缀等进行限制或过滤,导致能够上传脚本文件等等
-
其次未对上传文件的文件名进行检查及处理,直接将文件名同
FileUtil.getTmpDir() + "/"
拼接后创建一个新的文件,若存在恶意的文件上传行为,可能会导致以下问题-
能够上传任意文件、任意内容到任意位置(需具备权限),例如可以上传脚本文件、覆盖已有文件、上传ssh公钥进行getshell、新增系统定时任务文件等等
-
ssh公钥Getshell
-
在攻击机中生成ssh公私钥对
ssh-keygen -t rsa
-
进入
/root/.ssh
目录,将生成的公钥id_rsa.pub
保存到文件authorized_keys
,并通过目录穿越上传到被攻击端的/root/.ssh/
文件夹下
上传文件:
上传文件后:
成功通过目录穿越上传ssh公钥 -
最后可以直接在攻击机上进行ssh连接
ssh -i id_rsa [email protected]
定时任务Getshell
-
创建定时任务文件,文件内容如下:
4A评测 - 免责申明
本站提供的一切软件、教程和内容信息仅限用于学习和研究目的。
不得将上述内容用于商业或者非法用途,否则一切后果请用户自负。
本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑或手机中彻底删除上述内容。
如果您喜欢该程序,请支持正版,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。敬请谅解!
程序来源网络,不确保不包含木马病毒等危险内容,请在确保安全的情况下或使用虚拟机使用。
侵权违规投诉邮箱:4ablog168#gmail.com(#换成@)