越权跳转导致的flowable命令执行

背景

项目中遇到的问题,进行记录。

过程

在目标系统测试一段时间没有收获过后发现一个叫做学习平台功能模块处发生跳转到8092端口上去。

后续观察数据包的时候发现,跳转形式是
http://xxx.com:8092/login?username=xx&token=xxx

抱着试一试的心态试了一下,将userName换成了admin,重新访问后,直接以管理员的身份进入这个系统的后台。

后续了解到之前有人挖到过这个洞,但是甲方不收,就准备简单看一下这边的功能。
绕了半天在一个流程模板的功能点发现使用了一款叫做flowable的工作流引擎。

然后看了一下,发现了一个叫做shell任务的模块。

试了一下,在里面写入命令,但好像没有地方可以让这个任务直接运行起来,后续去看了一下文档,也没有找到特别多的可利用信息。

找了一圈得shell任务是怎么写的。

<serviceTask id="shellEcho" flowable:type="shell" >
  <extensionElements>
    <flowable:field name="command" stringValue="cmd" />
    <flowable:field name="arg1" stringValue="/c" />
    <flowable:field name="arg2" stringValue="echo" />
    <flowable:field name="arg3" stringValue="EchoTest" />
    <flowable:field name="arg4" stringValue=">" />
    <flowable:field name="arg5" stringValue="D:\content\sec.txt" />
    <flowable:field name="wait" stringValue="true" />
    <flowable:field name="outputVariable" stringValue="resultVar" />
  </extensionElements>
</serviceTask>

这边是图形化界面,可以直接进行配置,如下(当时写的是echo一个txt文件,没有截图):

但还需要让shell任务运行,后续看到他已经配好了一个完整的流程,就在开始流程后插入了这个shell任务。

然后保存后通过另一个点将这个新的模板进行部署,到现有的功能中去,意味着我只要去发起这个流程就能触发我的shell命令。

部署:

发起对应的流程:

开始尝试的是写入了一个txt文件,成功

然后尝试写入jsp文件,访问直接下载,其他目录也不行,应该是jar包那种环境

由于系统是Windows,将命令改成powershell的指令

再次发起流程,ok

总结

误打误撞,如果上次甲方接受了越权跳转的漏洞,那么可能就遇不到这个功能点了,存在运气成分。

点击收藏 | 1 关注 | 1
登录 后跟帖