
Automated scanner for CVE-2019-12102 unauthenticated file upload vulnerability in Kentico CMS. Checks domains, verifies with hash parameter, and outputs potentially and confirmed vulnerable targets.
The CVE-2019-12102 Scanner is an automated tool to scan for the Unauthenticated File Upload / File Exposure vulnerability in Kentico CMS versions 11 to 12. This vulnerability is caused by improper access control on the endpoint /cmsmodules/medialibrary/formcontrols/liveselectors/insertimageormedia/tabs_media.aspx. The tool checks if a domain is vulnerable by verifying the response from the endpoint and saves the results into separate files for Potentially Vulnerable and Confirmed Vulnerable domains.
The CVE-2019-12102 vulnerability allows attackers to:
The vulnerable endpoint (/cmsmodules/medialibrary/formcontrols/liveselectors/insertimageormedia/tabs_media.aspx) can be accessed without authentication if the hash parameter is not properly validated. If the URL redirects to /CMSMessages/accessdenied.aspx?resstring=dialogs.missinghashtext&hash=, the domain is considered vulnerable.
Ctrl+C).requests, coloramaClone this repository:
git clone https://github.com/Egi08/CVE-2019-12102-Scanner.git
cd CVE-2019-12102-Scanner
Install dependencies:
pip install -r requirements.txt
(If the requirements.txt file does not exist, create it with the following content):
requests
colorama
Prepare an input file (domains.txt) containing a list of domains, one domain per line. Example:
example.com
another-example.com
vulnerable-site.com
python cve_2019_12102_scanner.py -l <input_file> -p <potentially_output_file> -c <confirmed_output_file>
-l, --list: Path to the file containing the list of domains (required).-p, --potentially: Output file for Potentially Vulnerable domains (optional, default: potentially_vulnerable.txt).-c, --confirmed: Output file for Confirmed Vulnerable domains (optional, default: confirmed_vulnerable.txt).python cve_2019_12102_scanner.py -l domains.txt -p potentially_vulnerable.txt -c confirmed_vulnerable.txt
[*] Starting vulnerability scanner for CVE-2019-12102...
[*] Checking: http://example.com
[-] Not Vulnerable: http://example.com/cmsmodules/medialibrary/formcontrols/liveselectors/insertimageormedia/tabs_media.aspx
[*] Checking: http://vulnerable-site.com
[+] Potentially Vulnerable: http://vulnerable-site.com/cmsmodules/medialibrary/formcontrols/liveselectors/insertimageormedia/tabs_media.aspx
[+] Confirmed Vulnerable: http://vulnerable-site.com/CMSMessages/accessdenied.aspx?resstring=dialogs.missinghashtext&hash=13b203251094c6c51e1f7974b22e84538003b9c23754bc7b24a19891e6d476bf
[+] Results saved:
Potentially Vulnerable domains saved to potentially_vulnerable.txt
Confirmed Vulnerable domains saved to confirmed_vulnerable.txt
potentially_vulnerable.txt)http://vulnerable-site.com/cmsmodules/medialibrary/formcontrols/liveselectors/insertimageormedia/tabs_media.aspx
confirmed_vulnerable.txt)http://vulnerable-site.com/CMSMessages/accessdenied.aspx?resstring=dialogs.missinghashtext&hash=13b203251094c6c51e1f7974b22e84538003b9c23754bc7b24a19891e6d476bf
Ethical Testing:
Timeout:
requests.get function:
response = requests.get(full_url, timeout=20) # Timeout of 20 seconds
Error Handling:
Safe Saving:
Ctrl+C).Hash Parameter:
test_hash currently uses the example hash (13b203251094c6c51e1f7974b22e84538003b9c23754bc7b24a19891e6d476bf). Adjust it if necessary.Contributions are welcome! If you'd like to contribute, please:
git checkout -b feature/your-feature-name
git commit -m "Add your changes here"
git push origin feature/your-feature-name
This project is licensed under the MIT License. See the LICENSE file for more details.
With this documentation, you can easily upload the script to GitHub and provide clear instructions for others to use the tool.