SlideShare a Scribd company logo
Teammeeting Application Security
Oktober 2016
Michael Schläpfer
Web App Security Architectures
Cracow, October 2017
Michael Schläpfer
Seite 2
The Need for a Web Application Security Architecture
Office
Home
En Route
Apps are usually embedded into a larger system
Seite 3
Workstation
Notebook
Mobile
Tablet
Email
Time Schedulie
Intranet
Applications
Users
Devices
Entry Points
Services
Employees
Field Worker
Externals
Specialists
Guests
Threat Agents
Web Application Security Architecture Components
Seite 4
Cloud Services
Internal Network
Web Applications
Web Applications
Service
Provider
Employees / Customers /
Partners (External)
Central Identity Store
Employees (Internal)
Intranet
2FA Provider
Internet
IdM Solution
WAF
Auth
IdP
United Security Providers’ Products and Services
Firewall Wide Area
Network
Remote
Access
Mail Gateway
Network
Access
Web Proxy Web
Application
Firewall
Web
Authenti-
cation
600
world wide customer locations
850’000
end users
7x24h
security operations
www.bluesec.pl
BLUEsec is a team of professionals working in the field of information security. Our goal is to
provide the highest possible level of cybernetic security for organization assets. We provide
a wide range of high-quality services and products to build an adequate to needs security
model. Our values are knowledge, responsibility and trust. We always seek to be the best.
We perform projects in the areas of critical infrastructure and in the field of systems and
special purpose infrastructure. We worked for organizations from the energy, finance, public
administration, government, health and construction sectors.
We are a part of BLUE energy, a Polish consulting company operating in the fields of
management, organization, security, strategy and development. The mission of BLUE
energy is to develop Polish entrepreneurship by providing efficient and innovative business,
organizational and IT solutions and by improve efficiency of communication between
business and the public sector.
BLUE energy – polish consulting company| BLUEsec – cybernetic security
www.bluesec.pl
www.bluesec.pl
SELECTED PROJECTS IN THE AREA OF IT SECURITY
Web Application Security Architecture Components
Seite 9
Cloud Services
Internal Network
Web Applications
Web Applications
Service
Provider
Employees / Customers /
Partners (External)
Central Identity Store
Employees (Internal)
Intranet
2FA Provider
Internet
IdM Solution
WAF
Auth
IdP
Goals
1
You know how a (typical) Web Application
Security Architecture looks like and what
components it (usually) consists of.
2
You know how to integrate your
applications into such an environment.
Agenda
1. Web Application Security Architecture
Components
2. Integration Tips & Tricks
A Practical Example of a Web Application Security Architecture
Seite 12
Field Workers
DMZ (Dual-Homed) Server Zone
USP
Client Zone
SMS-Provider /
YubiCloud / …
OWA
Portal App
AD (LDAPS)
Customer’s trusted devices
(EMM), in a «trusted» IP-
Subnet
DMZ IP
(shared)
Internal IP 1
Internal IP 2
Public IP / Port-
Forwarding (80/443)
SaaS App 1
SaaS App 2
SAML SPs
SAML IdP
BYOD, in an «untrusted»
IP-Subnet
portal.customer.com
=> WAF’s Public IP
portal.customer.com
=> WAF’s DMZ IP
Mgmt-Access
SOC
Internet
active passiveAccessWAF
Managed VPN Remote Access
Federate
A Practical Example – Network Firewalls / Network Zones
Seite 13
Field Workers
DMZ (Dual-Homed) Server Zone
USP
Client Zone
SMS-Provider /
YubiCloud / …
OWA
Portal App
AD (LDAPS)
Customer’s trusted devices
(EMM), in a «trusted» IP-
Subnet
DMZ IP
(shared)
Internal IP 1
Internal IP 2
Public IP / Port-
Forwarding (80/443)
SaaS App 1
SaaS App 2
SAML SPs
SAML IdP
BYOD, in an «untrusted»
IP-Subnet
portal.customer.com
=> WAF’s Public IP
portal.customer.com
=> WAF’s DMZ IP
Mgmt-Access
SOC
Internet
active passiveAccessWAF
Managed VPN Remote Access
Federate
A Practical Example – Web Applications and Services
Seite 14
Field Workers
DMZ (Dual-Homed) Server Zone
USP
Client Zone
SMS-Provider /
YubiCloud / …
Customer’s trusted devices
(EMM), in a «trusted» IP-
Subnet
DMZ IP
(shared)
Internal IP 1
Internal IP 2
Public IP / Port-
Forwarding (80/443)
SaaS App 1
SaaS App 2
SAML SPs
SAML IdP
BYOD, in an «untrusted»
IP-Subnet
portal.customer.com
=> WAF’s Public IP
portal.customer.com
=> WAF’s DMZ IP
Mgmt-Access
SOC
Internet
AD (LDAPS)
OWA
Portal App
active passiveAccessWAF
Managed VPN Remote Access
Federate
A Practical Example – Web Application Firewall
Seite 15
Field Workers
DMZ (Dual-Homed) Server Zone
USP
Client Zone
SMS-Provider /
YubiCloud / …
Customer’s trusted devices
(EMM), in a «trusted» IP-
Subnet
DMZ IP
(shared)
Internal IP 1
Internal IP 2
Public IP / Port-
Forwarding (80/443)
SaaS App 1
SaaS App 2
SAML SPs
SAML IdP
BYOD, in an «untrusted»
IP-Subnet
portal.customer.com
=> WAF’s Public IP
portal.customer.com
=> WAF’s DMZ IP
Mgmt-Access
SOC
Internet
AD (LDAPS)
OWA
Portal App
active passiveAccessWAF
Managed VPN Remote Access
Federate
A Practical Example – Users and Devices
Seite 16
DMZ (Dual-Homed) Server Zone
USP
Client Zone
SMS-Provider /
YubiCloud / …
OWA
Portal AppDMZ IP
(shared)
Internal IP 1
Internal IP 2
Public IP / Port-
Forwarding (80/443)
SaaS App 1
SaaS App 2
SAML SPs
SAML IdP
portal.customer.com
=> WAF’s Public IP
portal.customer.com
=> WAF’s DMZ IP
Mgmt-Access
SOC
Internet
AD (LDAPS)
Field Workers
BYOD, in an «untrusted»
IP-Subnet
Customer’s trusted devices
(EMM), in a «trusted» IP-
Subnet
active passiveAccessWAF
Managed VPN Remote Access
Federate
A Practical Example – User Identities
Seite 17
Field Workers
DMZ (Dual-Homed) Server Zone
USP
Client Zone
SMS-Provider /
YubiCloud / …
OWA
Portal App
Customer’s trusted devices
(EMM), in a «trusted» IP-
Subnet
DMZ IP
(shared)
Internal IP 1
Internal IP 2
Public IP / Port-
Forwarding (80/443)
SaaS App 1
SaaS App 2
SAML SPs
SAML IdP
BYOD, in an «untrusted»
IP-Subnet
portal.customer.com
=> WAF’s Public IP
portal.customer.com
=> WAF’s DMZ IP
Mgmt-Access
SOC
Internet
AD (LDAPS)
active passiveAccessWAF
Managed VPN Remote Access
Federate
A Practical Example – Authentication Systems (SSO)
Seite 18
Field Workers
DMZ (Dual-Homed) Server Zone
USP
Client Zone
OWA
Portal App
Customer’s trusted devices
(EMM), in a «trusted» IP-
Subnet
DMZ IP
(shared)
Internal IP 1
Internal IP 2
Public IP / Port-
Forwarding (80/443)
SaaS App 1
SaaS App 2
SAML SPs
SAML IdP
BYOD, in an «untrusted»
IP-Subnet
portal.customer.com
=> WAF’s Public IP
portal.customer.com
=> WAF’s DMZ IP
Mgmt-Access
SOC
Internet
SMS-Provider /
YubiCloud / …
AD (LDAPS)
active passiveAccessWAF
Managed VPN Remote Access
Federate
A Practical Example – Identity Federation Components (CDSSO)
Seite 19
Field Workers
DMZ (Dual-Homed) Server Zone
USP
Client Zone
SMS-Provider /
YubiCloud / …
OWA
Portal App
Customer’s trusted devices
(EMM), in a «trusted» IP-
Subnet
DMZ IP
(shared)
Internal IP 1
Internal IP 2
Public IP / Port-
Forwarding (80/443)
BYOD, in an «untrusted»
IP-Subnet
portal.customer.com
=> WAF’s Public IP
portal.customer.com
=> WAF’s DMZ IP
Mgmt-Access
SOC
Internet
SaaS App 1
SaaS App 2
SAML SPs
SAML IdP
AD (LDAPS)
active passiveAccessWAF
Managed VPN Remote Access
Federate
A Practical Example – Managed Services and SOC
Seite 20
Field Workers
DMZ (Dual-Homed) Server Zone
Client Zone
SMS-Provider /
YubiCloud / …
OWA
Portal App
Customer’s trusted devices
(EMM), in a «trusted» IP-
Subnet
DMZ IP
(shared)
Internal IP 1
Internal IP 2
Public IP / Port-
Forwarding (80/443)
SaaS App 1
SaaS App 2
SAML SPs
SAML IdP
BYOD, in an «untrusted»
IP-Subnet
portal.customer.com
=> WAF’s Public IP
portal.customer.com
=> WAF’s DMZ IP
Internet
AD (LDAPS)
USP
Mgmt-Access
SOC
active passiveAccessWAF
Managed VPN Remote Access
Federate
A Practical Example of a Web Application Security Architecture
Seite 21
Field Workers
DMZ (Dual-Homed) Server Zone
USP
Client Zone
SMS-Provider /
YubiCloud / …
OWA
Portal App
AD (LDAPS)
Customer’s trusted devices
(EMM), in a «trusted» IP-
Subnet
DMZ IP
(shared)
Internal IP 1
Internal IP 2
Public IP / Port-
Forwarding (80/443)
SaaS App 1
SaaS App 2
SAML SPs
SAML IdP
BYOD, in an «untrusted»
IP-Subnet
portal.customer.com
=> WAF’s Public IP
portal.customer.com
=> WAF’s DMZ IP
Mgmt-Access
SOC
Internet
active passiveAccessWAF
Managed VPN Remote Access
Federate
Agenda
1. Web Application Security Architecture
Components
2. Integration Tips & Tricks
Secure Gateway in the Middle
Seite 23
ApplicationSecure Entry Server
POST /web/a/start?action=login HTTP/1.1
Host: www.u-s-p.ch
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:35.0) Gecko/
20100101 Firefox/35.0
Accept-Language: en-US,en;q=0.5
Cookie: SCDID_S=2YNIgcWege5AjuNFo3jXf7W8...
Connection: keep-alive
EvilHeader: <script>attack</script>
Content-Type: application/x-www-form-urlencoded
Content-Length: 81
userid=user&password=pass&evilparam=evilvalue
HTTP/1.1 200 OK
Date: Fri, 13 Mar 2015 14:53:54 GMT
Server: Secure Entry Server
Cache-Control: no-cache,no-store,max-age=0
Content-Type: text/html;charset=UTF-8
Keep-Alive: timeout=10, max=300
Connection: Keep-Alive
<html>
<head></head>
<body>….
<a href=https://www.u-s-p.ch/test>Click me</a>
...</body>
</html>
POST /web/a/start?action=login HTTP/1.1
Host: internal.host.ch
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:35.0) Gecko/
20100101 Firefox/35.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/
*;q=0.8
Accept-Language: en-US,en;q=0.5
Cookie: Username=user
Connection: keep-alive
Content-Type: application/x-www-form-urlencoded
Content-Length: 81
userid=user&password=pass
HTTP/1.1 200 OK
Date: Fri, 13 Mar 2015 14:53:54 GMT
Server: Apache/2.0.55 (Debian) PHP/5.1.2-1+b1 mod_ssl/2.0.55
OpenSSL/0.9.8b
Cache-Control: no-cache,no-store,max-age=0
Content-Type: text/html;charset=UTF-8
Keep-Alive: timeout=10, max=300
Connection: Keep-Alive
<html>
<head></head>
<body>…
<a href=http://internal.host.ch/test>Click me</a>
….</body>
</html>
1
Follow standard HTTP specs
(RFC)
Secure Gateway in the Middle
Seite 24
ApplicationSecure Entry Server
POST /web/a/start?action=login HTTP/1.1
Host: www.u-s-p.ch
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:35.0) Gecko/
20100101 Firefox/35.0
Accept-Language: en-US,en;q=0.5
Cookie: SCDID_S=2YNIgcWege5AjuNFo3jXf7W8...
Connection: keep-alive
EvilHeader: <script>attack</script>
Content-Type: application/x-www-form-urlencoded
Content-Length: 81
userid=user&password=pass&evilparam=evilvalue
HTTP/1.1 200 OK
Date: Fri, 13 Mar 2015 14:53:54 GMT
Server: Secure Entry Server
Cache-Control: no-cache,no-store,max-age=0
Content-Type: text/html;charset=UTF-8
Keep-Alive: timeout=10, max=300
Connection: Keep-Alive
<html>
<head></head>
<body>….
<a href=https://www.u-s-p.ch/test>Click me</a>
...</body>
</html>
POST /web/a/start?action=login HTTP/1.1
Host: internal.host.ch
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:35.0) Gecko/
20100101 Firefox/35.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/
*;q=0.8
Accept-Language: en-US,en;q=0.5
Cookie: Username=user
Connection: keep-alive
Content-Type: application/x-www-form-urlencoded
Content-Length: 81
userid=user&password=pass
HTTP/1.1 200 OK
Date: Fri, 13 Mar 2015 14:53:54 GMT
Server: Apache/2.0.55 (Debian) PHP/5.1.2-1+b1 mod_ssl/2.0.55
OpenSSL/0.9.8b
Cache-Control: no-cache,no-store,max-age=0
Content-Type: text/html;charset=UTF-8
Keep-Alive: timeout=10, max=300
Connection: Keep-Alive
<html>
<head></head>
<body>…
<a href=http://internal.host.ch/test>Click me</a>
….</body>
</html>
1
Follow standard HTTP specs
(RFC)
2
Don’t create links or cookies in
the browser
Secure Gateway in the Middle
Seite 25
ApplicationSecure Entry Server
POST /web/a/start?action=login HTTP/1.1
Host: www.u-s-p.ch
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:35.0) Gecko/
20100101 Firefox/35.0
Accept-Language: en-US,en;q=0.5
Cookie: SCDID_S=2YNIgcWege5AjuNFo3jXf7W8...
Connection: keep-alive
EvilHeader: <script>attack</script>
Content-Type: application/x-www-form-urlencoded
Content-Length: 81
userid=user&password=pass&evilparam=evilvalue
HTTP/1.1 200 OK
Date: Fri, 13 Mar 2015 14:53:54 GMT
Server: Secure Entry Server
Cache-Control: no-cache,no-store,max-age=0
Content-Type: text/html;charset=UTF-8
Keep-Alive: timeout=10, max=300
Connection: Keep-Alive
<html>
<head></head>
<body>….
<a href=https://www.u-s-p.ch/test>Click me</a>
...</body>
</html>
POST /web/a/start?action=login HTTP/1.1
Host: internal.host.ch
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:35.0) Gecko/
20100101 Firefox/35.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/
*;q=0.8
Accept-Language: en-US,en;q=0.5
Cookie: Username=user
Connection: keep-alive
Content-Type: application/x-www-form-urlencoded
Content-Length: 81
userid=user&password=pass
HTTP/1.1 200 OK
Date: Fri, 13 Mar 2015 14:53:54 GMT
Server: Apache/2.0.55 (Debian) PHP/5.1.2-1+b1 mod_ssl/2.0.55
OpenSSL/0.9.8b
Cache-Control: no-cache,no-store,max-age=0
Content-Type: text/html;charset=UTF-8
Keep-Alive: timeout=10, max=300
Connection: Keep-Alive
<html>
<head></head>
<body>…
<a href=http://internal.host.ch/test>Click me</a>
….</body>
</html>
1
Follow standard HTTP specs
(RFC)
2
Don’t create links or cookies in
the browser
3
Ensure ways for identity
propagation: e.g., header,
NTLM, Kerberos
Secure Gateway in the Middle
Seite 26
ApplicationSecure Entry Server
POST /web/a/start?action=login HTTP/1.1
Host: www.u-s-p.ch
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:35.0) Gecko/
20100101 Firefox/35.0
Accept-Language: en-US,en;q=0.5
Cookie: SCDID_S=2YNIgcWege5AjuNFo3jXf7W8...
Connection: keep-alive
EvilHeader: <script>attack</script>
Content-Type: application/x-www-form-urlencoded
Content-Length: 81
userid=user&password=pass&evilparam=evilvalue
HTTP/1.1 200 OK
Date: Fri, 13 Mar 2015 14:53:54 GMT
Server: Secure Entry Server
Cache-Control: no-cache,no-store,max-age=0
Content-Type: text/html;charset=UTF-8
Keep-Alive: timeout=10, max=300
Connection: Keep-Alive
<html>
<head></head>
<body>….
<a href=https://www.u-s-p.ch/test>Click me</a>
...</body>
</html>
POST /web/a/start?action=login HTTP/1.1
Host: internal.host.ch
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:35.0) Gecko/
20100101 Firefox/35.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/
*;q=0.8
Accept-Language: en-US,en;q=0.5
Cookie: Username=user
Connection: keep-alive
Content-Type: application/x-www-form-urlencoded
Content-Length: 81
userid=user&password=pass
HTTP/1.1 200 OK
Date: Fri, 13 Mar 2015 14:53:54 GMT
Server: Apache/2.0.55 (Debian) PHP/5.1.2-1+b1 mod_ssl/2.0.55
OpenSSL/0.9.8b
Cache-Control: no-cache,no-store,max-age=0
Content-Type: text/html;charset=UTF-8
Keep-Alive: timeout=10, max=300
Connection: Keep-Alive
<html>
<head></head>
<body>…
<a href=http://internal.host.ch/test>Click me</a>
….</body>
</html>
4
Separate sensitive from public
data
Secure Gateway in the Middle
Seite 27
ApplicationSecure Entry Server
POST /web/a/start?action=login HTTP/1.1
Host: www.u-s-p.ch
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:35.0) Gecko/
20100101 Firefox/35.0
Accept-Language: en-US,en;q=0.5
Cookie: SCDID_S=2YNIgcWege5AjuNFo3jXf7W8...
Connection: keep-alive
EvilHeader: <script>attack</script>
Content-Type: application/x-www-form-urlencoded
Content-Length: 81
userid=user&password=pass&evilparam=evilvalue
HTTP/1.1 200 OK
Date: Fri, 13 Mar 2015 14:53:54 GMT
Server: Secure Entry Server
Cache-Control: no-cache,no-store,max-age=0
Content-Type: text/html;charset=UTF-8
Keep-Alive: timeout=10, max=300
Connection: Keep-Alive
<html>
<head></head>
<body>….
<a href=https://www.u-s-p.ch/test>Click me</a>
...</body>
</html>
POST /web/a/start?action=login HTTP/1.1
Host: internal.host.ch
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:35.0) Gecko/
20100101 Firefox/35.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/
*;q=0.8
Accept-Language: en-US,en;q=0.5
Cookie: Username=user
Connection: keep-alive
Content-Type: application/x-www-form-urlencoded
Content-Length: 81
userid=user&password=pass
HTTP/1.1 200 OK
Date: Fri, 13 Mar 2015 14:53:54 GMT
Server: Apache/2.0.55 (Debian) PHP/5.1.2-1+b1 mod_ssl/2.0.55
OpenSSL/0.9.8b
Cache-Control: no-cache,no-store,max-age=0
Content-Type: text/html;charset=UTF-8
Keep-Alive: timeout=10, max=300
Connection: Keep-Alive
<html>
<head></head>
<body>…
<a href=http://internal.host.ch/test>Click me</a>
….</body>
</html>
5
Use correct MIME type headers
4
Separate sensitive from public
data
Secure Gateway in the Middle
Seite 28
ApplicationSecure Entry Server
POST /web/a/start?action=login HTTP/1.1
Host: www.u-s-p.ch
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:35.0) Gecko/
20100101 Firefox/35.0
Accept-Language: en-US,en;q=0.5
Cookie: SCDID_S=2YNIgcWege5AjuNFo3jXf7W8...
Connection: keep-alive
EvilHeader: <script>attack</script>
Content-Type: application/x-www-form-urlencoded
Content-Length: 81
userid=user&password=pass&evilparam=evilvalue
HTTP/1.1 200 OK
Date: Fri, 13 Mar 2015 14:53:54 GMT
Server: Secure Entry Server
Cache-Control: no-cache,no-store,max-age=0
Content-Type: text/html;charset=UTF-8
Keep-Alive: timeout=10, max=300
Connection: Keep-Alive
<html>
<head></head>
<body>….
<a href=https://www.u-s-p.ch/test>Click me</a>
...</body>
</html>
POST /web/a/start?action=login HTTP/1.1
Host: internal.host.ch
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:35.0) Gecko/
20100101 Firefox/35.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/
*;q=0.8
Accept-Language: en-US,en;q=0.5
Cookie: Username=user
Connection: keep-alive
Content-Type: application/x-www-form-urlencoded
Content-Length: 81
userid=user&password=pass
HTTP/1.1 200 OK
Date: Fri, 13 Mar 2015 14:53:54 GMT
Server: Apache/2.0.55 (Debian) PHP/5.1.2-1+b1 mod_ssl/2.0.55
OpenSSL/0.9.8b
Cache-Control: no-cache,no-store,max-age=0
Content-Type: text/html;charset=UTF-8
Keep-Alive: timeout=10, max=300
Connection: Keep-Alive
<html>
<head></head>
<body>…
<a href=http://internal.host.ch/test>Click me</a>
….</body>
</html>
6
Use relative paths
7
Don’t use <base href= …> tags
5
Use correct MIME type headers
4
Separate sensitive from public
data
Secure Gateway in the Middle
Seite 29
ApplicationSecure Entry Server
POST /web/a/start?action=login HTTP/1.1
Host: www.u-s-p.ch
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:35.0) Gecko/
20100101 Firefox/35.0
Accept-Language: en-US,en;q=0.5
Cookie: SCDID_S=2YNIgcWege5AjuNFo3jXf7W8...
Connection: keep-alive
EvilHeader: <script>attack</script>
Content-Type: application/x-www-form-urlencoded
Content-Length: 81
userid=user&password=pass&evilparam=evilvalue
HTTP/1.1 200 OK
Date: Fri, 13 Mar 2015 14:53:54 GMT
Server: Secure Entry Server
Cache-Control: no-cache,no-store,max-age=0
Content-Type: text/html;charset=UTF-8
Keep-Alive: timeout=10, max=300
Connection: Keep-Alive
<html>
<head></head>
<body>….
<a href=https://www.u-s-p.ch/test>Click me</a>
...</body>
</html>
POST /web/a/start?action=login HTTP/1.1
Host: internal.host.ch
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:35.0) Gecko/
20100101 Firefox/35.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/
*;q=0.8
Accept-Language: en-US,en;q=0.5
Cookie: Username=user
Connection: keep-alive
Content-Type: application/x-www-form-urlencoded
Content-Length: 81
userid=user&password=pass
HTTP/1.1 200 OK
Date: Fri, 13 Mar 2015 14:53:54 GMT
Server: Apache/2.0.55 (Debian) PHP/5.1.2-1+b1 mod_ssl/2.0.55
OpenSSL/0.9.8b
Cache-Control: no-cache,no-store,max-age=0
Content-Type: text/html;charset=UTF-8
Keep-Alive: timeout=10, max=300
Connection: Keep-Alive
<html>
<head></head>
<body>…
<a href=http://internal.host.ch/test>Click me</a>
….</body>
</html>
8
Return proper HTTP error codes
9
Trigger proper relogin for
asynchronous requests
Seite 30
Happy Coding within a Web Application Security Architecture!
Teammeeting Application Security
Oktober 2016
Michael Schläpfer
phone: 61/ 643 51 98
ul. Towarowa 35
61-896 Poznań
Michael Schläpfer
Senior Manager Application Security
Dr. sc. ETH Zürich
United Security Providers AG
Förrlibuckstrasse 70
CH-8005 Zürich
Fon: +41 44 496 61 37
Mobile: +41 79 305 57 12
eMail: michael.schlaepfer@u-s-p.ch
Web: www.united-security-providers.ch

More Related Content

What's hot (20)

PPT
Why You Need A Web Application Firewall
Port80 Software
 
PPTX
[OWASP Poland Day] Saving private token
OWASP
 
PDF
Benefits of Web Application Firewall
davidjohnrace
 
PPTX
[OPD 2019] AST Platform and the importance of multi-layered application secu...
OWASP
 
PPTX
Hacking Samsung's Tizen: The OS of Everything - Hack In the Box 2015
Ajin Abraham
 
PPTX
[Wroclaw #2] Web Application Security Headers
OWASP
 
PDF
[OWASP Poland Day] Security knowledge framework
OWASP
 
PPTX
Pentesting With Web Services in 2012
Ishan Girdhar
 
PDF
Content Security Policy - Lessons learned at Yahoo
Binu Ramakrishnan
 
PPT
Implementing application security using the .net framework
Lalit Kale
 
PDF
QualysGuard InfoDay 2013 - Web Application Firewall
Risk Analysis Consultants, s.r.o.
 
PPTX
OWASP TOP 10
Robert MacLean
 
PDF
[Wroclaw #9] The purge - dealing with secrets in Opera Software
OWASP
 
PPTX
Spring Security
Boy Tech
 
PDF
[OPD 2019] Top 10 Security Facts of 2020
OWASP
 
PPTX
Radware - WAF (Web Application Firewall)
Deivid Toledo
 
PDF
All You Need is One - A ClickOnce Love Story - Secure360 2015
NetSPI
 
PPTX
Web Application Firewall intro
Rich Helton
 
PDF
Novinky F5
MarketingArrowECS_CZ
 
PDF
OISC 2019 - The OWASP Top 10 & AppSec Primer
ThreatReel Podcast
 
Why You Need A Web Application Firewall
Port80 Software
 
[OWASP Poland Day] Saving private token
OWASP
 
Benefits of Web Application Firewall
davidjohnrace
 
[OPD 2019] AST Platform and the importance of multi-layered application secu...
OWASP
 
Hacking Samsung's Tizen: The OS of Everything - Hack In the Box 2015
Ajin Abraham
 
[Wroclaw #2] Web Application Security Headers
OWASP
 
[OWASP Poland Day] Security knowledge framework
OWASP
 
Pentesting With Web Services in 2012
Ishan Girdhar
 
Content Security Policy - Lessons learned at Yahoo
Binu Ramakrishnan
 
Implementing application security using the .net framework
Lalit Kale
 
QualysGuard InfoDay 2013 - Web Application Firewall
Risk Analysis Consultants, s.r.o.
 
OWASP TOP 10
Robert MacLean
 
[Wroclaw #9] The purge - dealing with secrets in Opera Software
OWASP
 
Spring Security
Boy Tech
 
[OPD 2019] Top 10 Security Facts of 2020
OWASP
 
Radware - WAF (Web Application Firewall)
Deivid Toledo
 
All You Need is One - A ClickOnce Love Story - Secure360 2015
NetSPI
 
Web Application Firewall intro
Rich Helton
 
OISC 2019 - The OWASP Top 10 & AppSec Primer
ThreatReel Podcast
 

Similar to [OWASP Poland Day] Web App Security Architectures (20)

PPTX
Palo Alto Networks 28.5.2013
Belsoft
 
PDF
Securing Your Cloud Applications
IBM Security
 
PPTX
NetFoundry - Zero Trust Customer Journey-v1-ext.pptx
Surendran Naidu
 
PDF
1.3. (In)security Software
defconmoscow
 
PPTX
F5 Distributed Cloud.pptx
abenyeung1
 
PDF
Implementing API Facade using WSO2 API Management Platform
WSO2
 
PDF
Palo alto networks product overview
Belsoft
 
PDF
Remote Workforces Secure by Barracuda
Prime Infoserv
 
PDF
SAP HANA Cloud Security
Gaurav Ahluwalia
 
PDF
Protect Your Data and Apps in the Public Cloud
Imperva
 
PPTX
Porque las Amenazas avanzadas requieren de una Seguridad para Aplicaciones av...
Cristian Garcia G.
 
PPTX
2019-F5-Line-Card.pptx
Ans Sembiring
 
PPT
SkypeShield - Securing Skype for Business
Yoav Crombie
 
PPTX
Criminal IP ASM | Threat Intelligence-based Automated Attack Surface Managem...
Criminal IP
 
PPTX
End-to-Eend security with Palo Alto Networks (Onur Kasap, Palo Alto Networks)
BAKOTECH
 
PPTX
End to End Security With Palo Alto Networks (Onur Kasap, engineer Palo Alto N...
BAKOTECH
 
PPTX
AWS Lambda Security Inside & Out
PureSec
 
PDF
Routeco cyber security and secure remote access 1 01
RoutecoMarketing
 
PDF
John Merline - How make your cloud SASE
AWS Chicago
 
PDF
2022 Q1 Webinar Securite du Cloud public (1).pdf
YounesChafi1
 
Palo Alto Networks 28.5.2013
Belsoft
 
Securing Your Cloud Applications
IBM Security
 
NetFoundry - Zero Trust Customer Journey-v1-ext.pptx
Surendran Naidu
 
1.3. (In)security Software
defconmoscow
 
F5 Distributed Cloud.pptx
abenyeung1
 
Implementing API Facade using WSO2 API Management Platform
WSO2
 
Palo alto networks product overview
Belsoft
 
Remote Workforces Secure by Barracuda
Prime Infoserv
 
SAP HANA Cloud Security
Gaurav Ahluwalia
 
Protect Your Data and Apps in the Public Cloud
Imperva
 
Porque las Amenazas avanzadas requieren de una Seguridad para Aplicaciones av...
Cristian Garcia G.
 
2019-F5-Line-Card.pptx
Ans Sembiring
 
SkypeShield - Securing Skype for Business
Yoav Crombie
 
Criminal IP ASM | Threat Intelligence-based Automated Attack Surface Managem...
Criminal IP
 
End-to-Eend security with Palo Alto Networks (Onur Kasap, Palo Alto Networks)
BAKOTECH
 
End to End Security With Palo Alto Networks (Onur Kasap, engineer Palo Alto N...
BAKOTECH
 
AWS Lambda Security Inside & Out
PureSec
 
Routeco cyber security and secure remote access 1 01
RoutecoMarketing
 
John Merline - How make your cloud SASE
AWS Chicago
 
2022 Q1 Webinar Securite du Cloud public (1).pdf
YounesChafi1
 
Ad

More from OWASP (20)

PDF
[OPD 2019] Web Apps vs Blockchain dApps
OWASP
 
PDF
[OPD 2019] Threat modeling at scale
OWASP
 
PDF
[OPD 2019] Life after pentest
OWASP
 
PDF
[OPD 2019] .NET Core Security
OWASP
 
PDF
[OPD 2019] Governance as a missing part of IT security architecture
OWASP
 
PDF
[OPD 2019] Storm Busters: Auditing & Securing AWS Infrastructure
OWASP
 
PPTX
[OPD 2019] Side-Channels on the Web:
Attacks and Defenses
OWASP
 
PPTX
[OPD 2019] Inter-application vulnerabilities
OWASP
 
PDF
[OPD 2019] Automated Defense with Serverless computing
OWASP
 
PDF
[OPD 2019] Advanced Data Analysis in RegSOC
OWASP
 
PDF
[OPD 2019] Attacking JWT tokens
OWASP
 
PDF
[OPD 2019] Rumpkernels meet fuzzing
OWASP
 
PDF
[OPD 2019] Trusted types and the end of DOM XSS
OWASP
 
PDF
[Wroclaw #9] To be or Not To Be - Threat Modeling in Security World
OWASP
 
PDF
OWASP Poland 13 November 2018 - Martin Knobloch - Building Secure Software
OWASP
 
PDF
OWASP Poland Day 2018 - Amir Shladovsky - Crypto-mining
OWASP
 
PDF
OWASP Poland Day 2018 - Damian Rusinek - Outsmarting smart contracts
OWASP
 
PDF
OWASP Poland Day 2018 - Frans Rosen - Attacking modern web technologies
OWASP
 
PDF
OWASP Poland Day 2018 - Dani Ramirez - IPMI hacking
OWASP
 
PPTX
OWASP Poland Day 2018 - Pedro Fortuna - Are your Java Script based protection...
OWASP
 
[OPD 2019] Web Apps vs Blockchain dApps
OWASP
 
[OPD 2019] Threat modeling at scale
OWASP
 
[OPD 2019] Life after pentest
OWASP
 
[OPD 2019] .NET Core Security
OWASP
 
[OPD 2019] Governance as a missing part of IT security architecture
OWASP
 
[OPD 2019] Storm Busters: Auditing & Securing AWS Infrastructure
OWASP
 
[OPD 2019] Side-Channels on the Web:
Attacks and Defenses
OWASP
 
[OPD 2019] Inter-application vulnerabilities
OWASP
 
[OPD 2019] Automated Defense with Serverless computing
OWASP
 
[OPD 2019] Advanced Data Analysis in RegSOC
OWASP
 
[OPD 2019] Attacking JWT tokens
OWASP
 
[OPD 2019] Rumpkernels meet fuzzing
OWASP
 
[OPD 2019] Trusted types and the end of DOM XSS
OWASP
 
[Wroclaw #9] To be or Not To Be - Threat Modeling in Security World
OWASP
 
OWASP Poland 13 November 2018 - Martin Knobloch - Building Secure Software
OWASP
 
OWASP Poland Day 2018 - Amir Shladovsky - Crypto-mining
OWASP
 
OWASP Poland Day 2018 - Damian Rusinek - Outsmarting smart contracts
OWASP
 
OWASP Poland Day 2018 - Frans Rosen - Attacking modern web technologies
OWASP
 
OWASP Poland Day 2018 - Dani Ramirez - IPMI hacking
OWASP
 
OWASP Poland Day 2018 - Pedro Fortuna - Are your Java Script based protection...
OWASP
 
Ad

Recently uploaded (20)

PDF
Data Protection & Resilience in Focus.pdf
AmyPoblete3
 
PPTX
Different Generation Of Computers .pptx
divcoder9507
 
PPTX
Google SGE SEO: 5 Critical Changes That Could Wreck Your Rankings in 2025
Reversed Out Creative
 
PDF
Latest Scam Shocking the USA in 2025.pdf
onlinescamreport4
 
PDF
GEO Strategy 2025: Complete Presentation Deck for AI-Powered Customer Acquisi...
Zam Man
 
PPTX
How tech helps people in the modern era.
upadhyayaryan154
 
PPTX
Pengenalan perangkat Jaringan komputer pada teknik jaringan komputer dan tele...
Prayudha3
 
PPTX
办理方法西班牙假毕业证蒙德拉贡大学成绩单MULetter文凭样本
xxxihn4u
 
PDF
LB# 820-1889_051-7370_C000.schematic.pdf
matheusalbuquerqueco3
 
PPTX
Artificial-Intelligence-in-Daily-Life (2).pptx
nidhigoswami335
 
PDF
How Much GB RAM Do You Need for Coding? 5 Powerful Reasons 8GB Is More Than E...
freeshopbudget
 
PDF
UI/UX Developer Guide: Tools, Trends, and Tips for 2025
Penguin peak
 
PPTX
MSadfadsfafdadfccadradfT_Presentation.pptx
pahalaedward2
 
PDF
Cybersecurity Awareness Presentation ppt.
banodhaharshita
 
PPTX
dns domain name system history work.pptx
MUHAMMADKAVISHSHABAN
 
PPTX
AI at Your Side: Boost Impact Without Losing the Human Touch (SXSW 2026 Meet ...
maytaldahan
 
PPTX
Perkembangan Perangkat jaringan komputer dan telekomunikasi 3.pptx
Prayudha3
 
PPTX
原版北不列颠哥伦比亚大学毕业证文凭UNBC成绩单2025年新版在线制作学位证书
e7nw4o4
 
PPTX
The Internet of Things (IoT) refers to a vast network of interconnected devic...
chethana8182
 
PDF
The AI Trust Gap: Consumer Attitudes to AI-Generated Content
Exploding Topics
 
Data Protection & Resilience in Focus.pdf
AmyPoblete3
 
Different Generation Of Computers .pptx
divcoder9507
 
Google SGE SEO: 5 Critical Changes That Could Wreck Your Rankings in 2025
Reversed Out Creative
 
Latest Scam Shocking the USA in 2025.pdf
onlinescamreport4
 
GEO Strategy 2025: Complete Presentation Deck for AI-Powered Customer Acquisi...
Zam Man
 
How tech helps people in the modern era.
upadhyayaryan154
 
Pengenalan perangkat Jaringan komputer pada teknik jaringan komputer dan tele...
Prayudha3
 
办理方法西班牙假毕业证蒙德拉贡大学成绩单MULetter文凭样本
xxxihn4u
 
LB# 820-1889_051-7370_C000.schematic.pdf
matheusalbuquerqueco3
 
Artificial-Intelligence-in-Daily-Life (2).pptx
nidhigoswami335
 
How Much GB RAM Do You Need for Coding? 5 Powerful Reasons 8GB Is More Than E...
freeshopbudget
 
UI/UX Developer Guide: Tools, Trends, and Tips for 2025
Penguin peak
 
MSadfadsfafdadfccadradfT_Presentation.pptx
pahalaedward2
 
Cybersecurity Awareness Presentation ppt.
banodhaharshita
 
dns domain name system history work.pptx
MUHAMMADKAVISHSHABAN
 
AI at Your Side: Boost Impact Without Losing the Human Touch (SXSW 2026 Meet ...
maytaldahan
 
Perkembangan Perangkat jaringan komputer dan telekomunikasi 3.pptx
Prayudha3
 
原版北不列颠哥伦比亚大学毕业证文凭UNBC成绩单2025年新版在线制作学位证书
e7nw4o4
 
The Internet of Things (IoT) refers to a vast network of interconnected devic...
chethana8182
 
The AI Trust Gap: Consumer Attitudes to AI-Generated Content
Exploding Topics
 

[OWASP Poland Day] Web App Security Architectures

  • 1. Teammeeting Application Security Oktober 2016 Michael Schläpfer Web App Security Architectures Cracow, October 2017 Michael Schläpfer
  • 2. Seite 2 The Need for a Web Application Security Architecture
  • 3. Office Home En Route Apps are usually embedded into a larger system Seite 3 Workstation Notebook Mobile Tablet Email Time Schedulie Intranet Applications Users Devices Entry Points Services Employees Field Worker Externals Specialists Guests Threat Agents
  • 4. Web Application Security Architecture Components Seite 4 Cloud Services Internal Network Web Applications Web Applications Service Provider Employees / Customers / Partners (External) Central Identity Store Employees (Internal) Intranet 2FA Provider Internet IdM Solution WAF Auth IdP
  • 5. United Security Providers’ Products and Services Firewall Wide Area Network Remote Access Mail Gateway Network Access Web Proxy Web Application Firewall Web Authenti- cation 600 world wide customer locations 850’000 end users 7x24h security operations
  • 6. www.bluesec.pl BLUEsec is a team of professionals working in the field of information security. Our goal is to provide the highest possible level of cybernetic security for organization assets. We provide a wide range of high-quality services and products to build an adequate to needs security model. Our values are knowledge, responsibility and trust. We always seek to be the best. We perform projects in the areas of critical infrastructure and in the field of systems and special purpose infrastructure. We worked for organizations from the energy, finance, public administration, government, health and construction sectors. We are a part of BLUE energy, a Polish consulting company operating in the fields of management, organization, security, strategy and development. The mission of BLUE energy is to develop Polish entrepreneurship by providing efficient and innovative business, organizational and IT solutions and by improve efficiency of communication between business and the public sector. BLUE energy – polish consulting company| BLUEsec – cybernetic security
  • 8. www.bluesec.pl SELECTED PROJECTS IN THE AREA OF IT SECURITY
  • 9. Web Application Security Architecture Components Seite 9 Cloud Services Internal Network Web Applications Web Applications Service Provider Employees / Customers / Partners (External) Central Identity Store Employees (Internal) Intranet 2FA Provider Internet IdM Solution WAF Auth IdP
  • 10. Goals 1 You know how a (typical) Web Application Security Architecture looks like and what components it (usually) consists of. 2 You know how to integrate your applications into such an environment.
  • 11. Agenda 1. Web Application Security Architecture Components 2. Integration Tips & Tricks
  • 12. A Practical Example of a Web Application Security Architecture Seite 12 Field Workers DMZ (Dual-Homed) Server Zone USP Client Zone SMS-Provider / YubiCloud / … OWA Portal App AD (LDAPS) Customer’s trusted devices (EMM), in a «trusted» IP- Subnet DMZ IP (shared) Internal IP 1 Internal IP 2 Public IP / Port- Forwarding (80/443) SaaS App 1 SaaS App 2 SAML SPs SAML IdP BYOD, in an «untrusted» IP-Subnet portal.customer.com => WAF’s Public IP portal.customer.com => WAF’s DMZ IP Mgmt-Access SOC Internet active passiveAccessWAF Managed VPN Remote Access Federate
  • 13. A Practical Example – Network Firewalls / Network Zones Seite 13 Field Workers DMZ (Dual-Homed) Server Zone USP Client Zone SMS-Provider / YubiCloud / … OWA Portal App AD (LDAPS) Customer’s trusted devices (EMM), in a «trusted» IP- Subnet DMZ IP (shared) Internal IP 1 Internal IP 2 Public IP / Port- Forwarding (80/443) SaaS App 1 SaaS App 2 SAML SPs SAML IdP BYOD, in an «untrusted» IP-Subnet portal.customer.com => WAF’s Public IP portal.customer.com => WAF’s DMZ IP Mgmt-Access SOC Internet active passiveAccessWAF Managed VPN Remote Access Federate
  • 14. A Practical Example – Web Applications and Services Seite 14 Field Workers DMZ (Dual-Homed) Server Zone USP Client Zone SMS-Provider / YubiCloud / … Customer’s trusted devices (EMM), in a «trusted» IP- Subnet DMZ IP (shared) Internal IP 1 Internal IP 2 Public IP / Port- Forwarding (80/443) SaaS App 1 SaaS App 2 SAML SPs SAML IdP BYOD, in an «untrusted» IP-Subnet portal.customer.com => WAF’s Public IP portal.customer.com => WAF’s DMZ IP Mgmt-Access SOC Internet AD (LDAPS) OWA Portal App active passiveAccessWAF Managed VPN Remote Access Federate
  • 15. A Practical Example – Web Application Firewall Seite 15 Field Workers DMZ (Dual-Homed) Server Zone USP Client Zone SMS-Provider / YubiCloud / … Customer’s trusted devices (EMM), in a «trusted» IP- Subnet DMZ IP (shared) Internal IP 1 Internal IP 2 Public IP / Port- Forwarding (80/443) SaaS App 1 SaaS App 2 SAML SPs SAML IdP BYOD, in an «untrusted» IP-Subnet portal.customer.com => WAF’s Public IP portal.customer.com => WAF’s DMZ IP Mgmt-Access SOC Internet AD (LDAPS) OWA Portal App active passiveAccessWAF Managed VPN Remote Access Federate
  • 16. A Practical Example – Users and Devices Seite 16 DMZ (Dual-Homed) Server Zone USP Client Zone SMS-Provider / YubiCloud / … OWA Portal AppDMZ IP (shared) Internal IP 1 Internal IP 2 Public IP / Port- Forwarding (80/443) SaaS App 1 SaaS App 2 SAML SPs SAML IdP portal.customer.com => WAF’s Public IP portal.customer.com => WAF’s DMZ IP Mgmt-Access SOC Internet AD (LDAPS) Field Workers BYOD, in an «untrusted» IP-Subnet Customer’s trusted devices (EMM), in a «trusted» IP- Subnet active passiveAccessWAF Managed VPN Remote Access Federate
  • 17. A Practical Example – User Identities Seite 17 Field Workers DMZ (Dual-Homed) Server Zone USP Client Zone SMS-Provider / YubiCloud / … OWA Portal App Customer’s trusted devices (EMM), in a «trusted» IP- Subnet DMZ IP (shared) Internal IP 1 Internal IP 2 Public IP / Port- Forwarding (80/443) SaaS App 1 SaaS App 2 SAML SPs SAML IdP BYOD, in an «untrusted» IP-Subnet portal.customer.com => WAF’s Public IP portal.customer.com => WAF’s DMZ IP Mgmt-Access SOC Internet AD (LDAPS) active passiveAccessWAF Managed VPN Remote Access Federate
  • 18. A Practical Example – Authentication Systems (SSO) Seite 18 Field Workers DMZ (Dual-Homed) Server Zone USP Client Zone OWA Portal App Customer’s trusted devices (EMM), in a «trusted» IP- Subnet DMZ IP (shared) Internal IP 1 Internal IP 2 Public IP / Port- Forwarding (80/443) SaaS App 1 SaaS App 2 SAML SPs SAML IdP BYOD, in an «untrusted» IP-Subnet portal.customer.com => WAF’s Public IP portal.customer.com => WAF’s DMZ IP Mgmt-Access SOC Internet SMS-Provider / YubiCloud / … AD (LDAPS) active passiveAccessWAF Managed VPN Remote Access Federate
  • 19. A Practical Example – Identity Federation Components (CDSSO) Seite 19 Field Workers DMZ (Dual-Homed) Server Zone USP Client Zone SMS-Provider / YubiCloud / … OWA Portal App Customer’s trusted devices (EMM), in a «trusted» IP- Subnet DMZ IP (shared) Internal IP 1 Internal IP 2 Public IP / Port- Forwarding (80/443) BYOD, in an «untrusted» IP-Subnet portal.customer.com => WAF’s Public IP portal.customer.com => WAF’s DMZ IP Mgmt-Access SOC Internet SaaS App 1 SaaS App 2 SAML SPs SAML IdP AD (LDAPS) active passiveAccessWAF Managed VPN Remote Access Federate
  • 20. A Practical Example – Managed Services and SOC Seite 20 Field Workers DMZ (Dual-Homed) Server Zone Client Zone SMS-Provider / YubiCloud / … OWA Portal App Customer’s trusted devices (EMM), in a «trusted» IP- Subnet DMZ IP (shared) Internal IP 1 Internal IP 2 Public IP / Port- Forwarding (80/443) SaaS App 1 SaaS App 2 SAML SPs SAML IdP BYOD, in an «untrusted» IP-Subnet portal.customer.com => WAF’s Public IP portal.customer.com => WAF’s DMZ IP Internet AD (LDAPS) USP Mgmt-Access SOC active passiveAccessWAF Managed VPN Remote Access Federate
  • 21. A Practical Example of a Web Application Security Architecture Seite 21 Field Workers DMZ (Dual-Homed) Server Zone USP Client Zone SMS-Provider / YubiCloud / … OWA Portal App AD (LDAPS) Customer’s trusted devices (EMM), in a «trusted» IP- Subnet DMZ IP (shared) Internal IP 1 Internal IP 2 Public IP / Port- Forwarding (80/443) SaaS App 1 SaaS App 2 SAML SPs SAML IdP BYOD, in an «untrusted» IP-Subnet portal.customer.com => WAF’s Public IP portal.customer.com => WAF’s DMZ IP Mgmt-Access SOC Internet active passiveAccessWAF Managed VPN Remote Access Federate
  • 22. Agenda 1. Web Application Security Architecture Components 2. Integration Tips & Tricks
  • 23. Secure Gateway in the Middle Seite 23 ApplicationSecure Entry Server POST /web/a/start?action=login HTTP/1.1 Host: www.u-s-p.ch User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:35.0) Gecko/ 20100101 Firefox/35.0 Accept-Language: en-US,en;q=0.5 Cookie: SCDID_S=2YNIgcWege5AjuNFo3jXf7W8... Connection: keep-alive EvilHeader: <script>attack</script> Content-Type: application/x-www-form-urlencoded Content-Length: 81 userid=user&password=pass&evilparam=evilvalue HTTP/1.1 200 OK Date: Fri, 13 Mar 2015 14:53:54 GMT Server: Secure Entry Server Cache-Control: no-cache,no-store,max-age=0 Content-Type: text/html;charset=UTF-8 Keep-Alive: timeout=10, max=300 Connection: Keep-Alive <html> <head></head> <body>…. <a href=https://www.u-s-p.ch/test>Click me</a> ...</body> </html> POST /web/a/start?action=login HTTP/1.1 Host: internal.host.ch User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:35.0) Gecko/ 20100101 Firefox/35.0 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/ *;q=0.8 Accept-Language: en-US,en;q=0.5 Cookie: Username=user Connection: keep-alive Content-Type: application/x-www-form-urlencoded Content-Length: 81 userid=user&password=pass HTTP/1.1 200 OK Date: Fri, 13 Mar 2015 14:53:54 GMT Server: Apache/2.0.55 (Debian) PHP/5.1.2-1+b1 mod_ssl/2.0.55 OpenSSL/0.9.8b Cache-Control: no-cache,no-store,max-age=0 Content-Type: text/html;charset=UTF-8 Keep-Alive: timeout=10, max=300 Connection: Keep-Alive <html> <head></head> <body>… <a href=http://internal.host.ch/test>Click me</a> ….</body> </html> 1 Follow standard HTTP specs (RFC)
  • 24. Secure Gateway in the Middle Seite 24 ApplicationSecure Entry Server POST /web/a/start?action=login HTTP/1.1 Host: www.u-s-p.ch User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:35.0) Gecko/ 20100101 Firefox/35.0 Accept-Language: en-US,en;q=0.5 Cookie: SCDID_S=2YNIgcWege5AjuNFo3jXf7W8... Connection: keep-alive EvilHeader: <script>attack</script> Content-Type: application/x-www-form-urlencoded Content-Length: 81 userid=user&password=pass&evilparam=evilvalue HTTP/1.1 200 OK Date: Fri, 13 Mar 2015 14:53:54 GMT Server: Secure Entry Server Cache-Control: no-cache,no-store,max-age=0 Content-Type: text/html;charset=UTF-8 Keep-Alive: timeout=10, max=300 Connection: Keep-Alive <html> <head></head> <body>…. <a href=https://www.u-s-p.ch/test>Click me</a> ...</body> </html> POST /web/a/start?action=login HTTP/1.1 Host: internal.host.ch User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:35.0) Gecko/ 20100101 Firefox/35.0 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/ *;q=0.8 Accept-Language: en-US,en;q=0.5 Cookie: Username=user Connection: keep-alive Content-Type: application/x-www-form-urlencoded Content-Length: 81 userid=user&password=pass HTTP/1.1 200 OK Date: Fri, 13 Mar 2015 14:53:54 GMT Server: Apache/2.0.55 (Debian) PHP/5.1.2-1+b1 mod_ssl/2.0.55 OpenSSL/0.9.8b Cache-Control: no-cache,no-store,max-age=0 Content-Type: text/html;charset=UTF-8 Keep-Alive: timeout=10, max=300 Connection: Keep-Alive <html> <head></head> <body>… <a href=http://internal.host.ch/test>Click me</a> ….</body> </html> 1 Follow standard HTTP specs (RFC) 2 Don’t create links or cookies in the browser
  • 25. Secure Gateway in the Middle Seite 25 ApplicationSecure Entry Server POST /web/a/start?action=login HTTP/1.1 Host: www.u-s-p.ch User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:35.0) Gecko/ 20100101 Firefox/35.0 Accept-Language: en-US,en;q=0.5 Cookie: SCDID_S=2YNIgcWege5AjuNFo3jXf7W8... Connection: keep-alive EvilHeader: <script>attack</script> Content-Type: application/x-www-form-urlencoded Content-Length: 81 userid=user&password=pass&evilparam=evilvalue HTTP/1.1 200 OK Date: Fri, 13 Mar 2015 14:53:54 GMT Server: Secure Entry Server Cache-Control: no-cache,no-store,max-age=0 Content-Type: text/html;charset=UTF-8 Keep-Alive: timeout=10, max=300 Connection: Keep-Alive <html> <head></head> <body>…. <a href=https://www.u-s-p.ch/test>Click me</a> ...</body> </html> POST /web/a/start?action=login HTTP/1.1 Host: internal.host.ch User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:35.0) Gecko/ 20100101 Firefox/35.0 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/ *;q=0.8 Accept-Language: en-US,en;q=0.5 Cookie: Username=user Connection: keep-alive Content-Type: application/x-www-form-urlencoded Content-Length: 81 userid=user&password=pass HTTP/1.1 200 OK Date: Fri, 13 Mar 2015 14:53:54 GMT Server: Apache/2.0.55 (Debian) PHP/5.1.2-1+b1 mod_ssl/2.0.55 OpenSSL/0.9.8b Cache-Control: no-cache,no-store,max-age=0 Content-Type: text/html;charset=UTF-8 Keep-Alive: timeout=10, max=300 Connection: Keep-Alive <html> <head></head> <body>… <a href=http://internal.host.ch/test>Click me</a> ….</body> </html> 1 Follow standard HTTP specs (RFC) 2 Don’t create links or cookies in the browser 3 Ensure ways for identity propagation: e.g., header, NTLM, Kerberos
  • 26. Secure Gateway in the Middle Seite 26 ApplicationSecure Entry Server POST /web/a/start?action=login HTTP/1.1 Host: www.u-s-p.ch User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:35.0) Gecko/ 20100101 Firefox/35.0 Accept-Language: en-US,en;q=0.5 Cookie: SCDID_S=2YNIgcWege5AjuNFo3jXf7W8... Connection: keep-alive EvilHeader: <script>attack</script> Content-Type: application/x-www-form-urlencoded Content-Length: 81 userid=user&password=pass&evilparam=evilvalue HTTP/1.1 200 OK Date: Fri, 13 Mar 2015 14:53:54 GMT Server: Secure Entry Server Cache-Control: no-cache,no-store,max-age=0 Content-Type: text/html;charset=UTF-8 Keep-Alive: timeout=10, max=300 Connection: Keep-Alive <html> <head></head> <body>…. <a href=https://www.u-s-p.ch/test>Click me</a> ...</body> </html> POST /web/a/start?action=login HTTP/1.1 Host: internal.host.ch User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:35.0) Gecko/ 20100101 Firefox/35.0 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/ *;q=0.8 Accept-Language: en-US,en;q=0.5 Cookie: Username=user Connection: keep-alive Content-Type: application/x-www-form-urlencoded Content-Length: 81 userid=user&password=pass HTTP/1.1 200 OK Date: Fri, 13 Mar 2015 14:53:54 GMT Server: Apache/2.0.55 (Debian) PHP/5.1.2-1+b1 mod_ssl/2.0.55 OpenSSL/0.9.8b Cache-Control: no-cache,no-store,max-age=0 Content-Type: text/html;charset=UTF-8 Keep-Alive: timeout=10, max=300 Connection: Keep-Alive <html> <head></head> <body>… <a href=http://internal.host.ch/test>Click me</a> ….</body> </html> 4 Separate sensitive from public data
  • 27. Secure Gateway in the Middle Seite 27 ApplicationSecure Entry Server POST /web/a/start?action=login HTTP/1.1 Host: www.u-s-p.ch User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:35.0) Gecko/ 20100101 Firefox/35.0 Accept-Language: en-US,en;q=0.5 Cookie: SCDID_S=2YNIgcWege5AjuNFo3jXf7W8... Connection: keep-alive EvilHeader: <script>attack</script> Content-Type: application/x-www-form-urlencoded Content-Length: 81 userid=user&password=pass&evilparam=evilvalue HTTP/1.1 200 OK Date: Fri, 13 Mar 2015 14:53:54 GMT Server: Secure Entry Server Cache-Control: no-cache,no-store,max-age=0 Content-Type: text/html;charset=UTF-8 Keep-Alive: timeout=10, max=300 Connection: Keep-Alive <html> <head></head> <body>…. <a href=https://www.u-s-p.ch/test>Click me</a> ...</body> </html> POST /web/a/start?action=login HTTP/1.1 Host: internal.host.ch User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:35.0) Gecko/ 20100101 Firefox/35.0 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/ *;q=0.8 Accept-Language: en-US,en;q=0.5 Cookie: Username=user Connection: keep-alive Content-Type: application/x-www-form-urlencoded Content-Length: 81 userid=user&password=pass HTTP/1.1 200 OK Date: Fri, 13 Mar 2015 14:53:54 GMT Server: Apache/2.0.55 (Debian) PHP/5.1.2-1+b1 mod_ssl/2.0.55 OpenSSL/0.9.8b Cache-Control: no-cache,no-store,max-age=0 Content-Type: text/html;charset=UTF-8 Keep-Alive: timeout=10, max=300 Connection: Keep-Alive <html> <head></head> <body>… <a href=http://internal.host.ch/test>Click me</a> ….</body> </html> 5 Use correct MIME type headers 4 Separate sensitive from public data
  • 28. Secure Gateway in the Middle Seite 28 ApplicationSecure Entry Server POST /web/a/start?action=login HTTP/1.1 Host: www.u-s-p.ch User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:35.0) Gecko/ 20100101 Firefox/35.0 Accept-Language: en-US,en;q=0.5 Cookie: SCDID_S=2YNIgcWege5AjuNFo3jXf7W8... Connection: keep-alive EvilHeader: <script>attack</script> Content-Type: application/x-www-form-urlencoded Content-Length: 81 userid=user&password=pass&evilparam=evilvalue HTTP/1.1 200 OK Date: Fri, 13 Mar 2015 14:53:54 GMT Server: Secure Entry Server Cache-Control: no-cache,no-store,max-age=0 Content-Type: text/html;charset=UTF-8 Keep-Alive: timeout=10, max=300 Connection: Keep-Alive <html> <head></head> <body>…. <a href=https://www.u-s-p.ch/test>Click me</a> ...</body> </html> POST /web/a/start?action=login HTTP/1.1 Host: internal.host.ch User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:35.0) Gecko/ 20100101 Firefox/35.0 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/ *;q=0.8 Accept-Language: en-US,en;q=0.5 Cookie: Username=user Connection: keep-alive Content-Type: application/x-www-form-urlencoded Content-Length: 81 userid=user&password=pass HTTP/1.1 200 OK Date: Fri, 13 Mar 2015 14:53:54 GMT Server: Apache/2.0.55 (Debian) PHP/5.1.2-1+b1 mod_ssl/2.0.55 OpenSSL/0.9.8b Cache-Control: no-cache,no-store,max-age=0 Content-Type: text/html;charset=UTF-8 Keep-Alive: timeout=10, max=300 Connection: Keep-Alive <html> <head></head> <body>… <a href=http://internal.host.ch/test>Click me</a> ….</body> </html> 6 Use relative paths 7 Don’t use <base href= …> tags 5 Use correct MIME type headers 4 Separate sensitive from public data
  • 29. Secure Gateway in the Middle Seite 29 ApplicationSecure Entry Server POST /web/a/start?action=login HTTP/1.1 Host: www.u-s-p.ch User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:35.0) Gecko/ 20100101 Firefox/35.0 Accept-Language: en-US,en;q=0.5 Cookie: SCDID_S=2YNIgcWege5AjuNFo3jXf7W8... Connection: keep-alive EvilHeader: <script>attack</script> Content-Type: application/x-www-form-urlencoded Content-Length: 81 userid=user&password=pass&evilparam=evilvalue HTTP/1.1 200 OK Date: Fri, 13 Mar 2015 14:53:54 GMT Server: Secure Entry Server Cache-Control: no-cache,no-store,max-age=0 Content-Type: text/html;charset=UTF-8 Keep-Alive: timeout=10, max=300 Connection: Keep-Alive <html> <head></head> <body>…. <a href=https://www.u-s-p.ch/test>Click me</a> ...</body> </html> POST /web/a/start?action=login HTTP/1.1 Host: internal.host.ch User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:35.0) Gecko/ 20100101 Firefox/35.0 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/ *;q=0.8 Accept-Language: en-US,en;q=0.5 Cookie: Username=user Connection: keep-alive Content-Type: application/x-www-form-urlencoded Content-Length: 81 userid=user&password=pass HTTP/1.1 200 OK Date: Fri, 13 Mar 2015 14:53:54 GMT Server: Apache/2.0.55 (Debian) PHP/5.1.2-1+b1 mod_ssl/2.0.55 OpenSSL/0.9.8b Cache-Control: no-cache,no-store,max-age=0 Content-Type: text/html;charset=UTF-8 Keep-Alive: timeout=10, max=300 Connection: Keep-Alive <html> <head></head> <body>… <a href=http://internal.host.ch/test>Click me</a> ….</body> </html> 8 Return proper HTTP error codes 9 Trigger proper relogin for asynchronous requests
  • 30. Seite 30 Happy Coding within a Web Application Security Architecture!
  • 31. Teammeeting Application Security Oktober 2016 Michael Schläpfer phone: 61/ 643 51 98 ul. Towarowa 35 61-896 Poznań Michael Schläpfer Senior Manager Application Security Dr. sc. ETH Zürich United Security Providers AG Förrlibuckstrasse 70 CH-8005 Zürich Fon: +41 44 496 61 37 Mobile: +41 79 305 57 12 eMail: [email protected] Web: www.united-security-providers.ch