zoukankan      html  css  js  c++  java
  • i春秋实验--struts2远程命令执行S2-045漏洞利用与修复

    实验环境

    操作机:Windows XP

    目标机:CentOS 6.5

    实验目的

    了解S2-045 Struts2远程命令执行漏洞的危害

    掌握检测修复S2-045 Struts远程命令执行漏洞技术

    实验内容

    Apache Struts 2被曝存在远程命令执行漏洞,漏洞编号S2-045,CVE编号CVE-2017-5638,在使用基于Jakarta插件的文件上传功能时,有可能存在远程命令执行,导致系统被黑客入侵。

    恶意用户在上传文件时通过修改HTTP请求头中的Content-Type值来触发该漏洞,进而执行系统命令。

    影响范围

    Struts 2.3.5 --Struts 2.3.31

    Struts 2.5 --Struts 2.5.10

    不受影响的范围

    Struts 2.3.32 Struts 2.5.10.1

    快速检测方式

    使用知道创宇SeeBug照妖镜可以直接检测该站点是否存在漏洞。

    漏洞危害

    在default.properties文件中,struts.multipart.parser的值有两个选项分别是jakarta和pell。其中的jakarta解析器是Struts 2框架的标准组成部分。默认情况下jakarta是启用的,所以该漏洞的严重性需得到正视。

    攻击者可以通过远程命令注入执行,另系统执行恶意命令,导致黑客入侵,从而威胁服务器安全,影响极大。

    实验步骤

    步骤一:验证漏洞

    打开目标网站:http://172.16.12.2/

    发现目标网站跳转至:http://172.16.12.2/example/HelloWorld.actiond

    打开cmd并切换至poc.exe所在目录,执行下列命令:

    poc.exe http://172.16.12.2/example/HelloWorld.action "ifconfig"

    成功执行,说明漏洞存在。可以尝试其他命令:

    poc.exe http://172.16.12.2/example/HelloWorld.action "cat /etc/passwd"

    步骤二:修复漏洞

    修改Struts2的Multipart parser

    1,使用ssh登陆到目标主机172.16.12.2,用户名root,密码123456

    2,将struts2-core-2.3.31.jar(路径:/var/www/apache-tomcat-7.0.14/webapps/ROOT/WEB-INT/lib/)下载到桌面,修改文件扩展名为struts2-core-2.3.31.zip,解压并打开文件夹orgapachestruts2。

      编辑struts.multipart parser文件,该选项就是Struts2的Multipart parser应用配置,默认值是jakarta,即此次出现命令执行漏洞的上传框架。

      将其修改为pell,相当于将存在漏洞的jakarta框架禁用了。

      修改值struts.multipart parser,保存,退出。(在struts.multipart parser=jakarta前加上#,去掉struts.multipart parser=pell前面的#)

    3,重新打包.jar文件

      在struts2-core-2.3.31文件夹全部选中,压缩打包为struts2-core-2.3.31.jar

    4,替换.jar文件

      使用SSH工具中的Xftp,将原有的文件mov至/目录,将新打包的文件放到该目录下。

    5,重启tomcat

    1 cd /var/www/apache-tomcat-7.0.14/bin
    2 ./shutdow.sh
    3 ./startup.sh

    6,漏洞验证

    poc.exe http://172.16.12.2/example/HelloWorld.action "ifconfig"

     此时poc程序已无法成功利用了。

  • 相关阅读:
    Flask基础
    Scrapy框架(持久化,去重,深度控制,cookie)
    scrapy框架 简易整理
    BeautifulSoup 模块
    requests模块
    复习第三天
    在Django中使用原生Sql
    ajax跨域简单请求和复杂请求
    复习第二天
    IOS
  • 原文地址:https://www.cnblogs.com/solozhou/p/6538285.html
Copyright © 2011-2022 走看看