superLeeH
- 关注
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
环境搭建
项目地址:
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 root@172.17.0.2
定时任务Getshell
创建定时任务文件,文件内容如下:
畅读付费文章
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)