SlideShare a Scribd company logo
1 of 7
Download to read offline
TRUNG TÂM ĐÀO TẠO
QUẢN TRỊ MẠNG & AN NINH MẠNG QUỐC TẾ ATHENA
BÁO CÁO THỰC TẬP TUẦN II
ĐỀ TÀI
TÌM HIỂU CÁC CÔNG CỤ TẤN CÔNG
WEB APPLICATION
Giáo viên hướng dẫn: Võ Đỗ Thắng
Trần Lâm Mẫn
Sinh viên thực tập: Cao Văn Lực
Tuần 2 :10/03/2014 – 17/03/2014
Nội dung: SQL INJECTION
2
I. Tìm hiểu về SQL ijection
1. Khái quát SQL injection
 SQL injection là kĩ tuật cho phép những kẻ tấn công lợi dụng lỗ hỏng trong việc kiểm tra
dữ liệu nhập trong các ứng dụng web và các thông báo lỗi của hệ quản trị cớ sở dữ liệu để
tiêm vào (injection) thi hành các câu lệnh SQL bất hợp pháp (không được người phát triển
lường trước).
 Hậu quả : cho phép kẻ tấn công có thể thực hiện các thao tác xóa, sửa,.. thậm chí còn
chiếm được server đang chạy.
 Lỗi thường xảy ra trên các ứng dụng web có sử dụng các hệ quản trị cơ sở dữ liệu như SQL
server, MySQL, Oracle, DB2,..
 Kẻ tấn công không mắc công giả mạo hay thăm dò hệ thống.
2. Các dạng tấn công SQL ijection
Để biết các website có bị lỗi SQL injection hay không ta có thể sử dụng các phần mềm để web
hoặc các công cụ tìm kiếm như Google. Và dung các từ khóa tìm kiếm như : “inurl:
product.php?id=”.
3
Tìm kiếm lỗi SQL injection
2.1 Dạng tấn công vượt qua kiểm tra đăng nhập
Với dạng tấn công này, tin tặc có thể dễ dàng vượt qua các trang đăng nhập nhờ vào lỗi khi
dung các câu lệnh SQL thao thác trên cơ sở dữ liệu của ứng dụng web.
Ví dụ câu lệnh SQL để kiểm tra lúc đăng nhập: “select * from tbl_user where name=user and
password=pass”;
Yêu cầu username phải nhập username và password đúng mới được đăng nhập vào. Nhưng nếu
hacker cố tình nhập vào trường user là a’ or 1=1 -- -, thì câu truy SQL sẽ trở thành : select *
from tbl_user where name=‘a’ or 1=1 -- - and password ‘ . Vì vế 1=1 luôn đúng nên hacker có
thể đăng nhập với username bất kì.
2.2 Sử dụng câu lệnh select
4
Kẻ tấn công phải hiểu và lơi dụng các thông báo lỗi của hệ thống để tìm các điểm yếu khởi đầu
cho tấn công.
Ví dụ đoạn code trong php: “select * from users where id=”+$id;
Muốn lấy giá trị $id cần phải sử dụng phương thức get trong php .
Nếu hacker cố tình nhâp vào trên trình duyệt 1’ union select @@version,database(),3 limit 1,1--
- thì câu truy vấn sẽ trở thành: select * from users where id=1’ union select @@version,
database() , 3 limit 1,1 --Với câu truy vấn này nếu ứng không chế lọc mã lệnh trong php thì
hacker sẽ thấy được tên version của database đang sử dụng và tên của database, một điều mà
người lập trình không mong muốn.
Hacker sẽ tiếp tục thực hiên các câu lệnh truy vấn bất hợp pháp tiếp theo để lấy tên table,
column, username, password,..Hacker có thể thấy được dữ liệu trong hệ quản trị cơ sỡ liệu mà
ứng dụng web đang chạy.
2.3Dạng tấn công sử dụng câu lệnh insert
Thông thường các ứng dụng web cho phép người dung đăng kí một tài khoản để login. Sau khi
đăng nhập có thể xem và hiệu chỉnh thông tin của mình. SQL injection có thể được dùng khi hệ
thống không kiểm tra tính hợp lệ của thông tin nhập vào.
Ví dụ câu lệnh insert có cú pháp sau:
Insert into Users (alias,email,money) values ($alias,$email,$money);
Nếu đoạn mã trong php là:
$sql= “insert into Users (alias,mail,year) values(‘” + $alias + “’,” + “’” +$email + “’,” + “’” +
$year + “’)”;
Nếu hacker nhập vào trường alias với nội dung như : ‘+Select top 1 * from Users+’
Câu lệnh truy vấn trở thành: insert into Users (alias,email,money) values (‘’ +Select top 1 *
from Users+ ‘’ + ‘abc@gmail.com’ + ‘2014’ ).
Thì câu lệnh Select top 1 from Users cũng sẽ được thực thi cùng câu lệnh insert.
5
Sau khi câu truy vấn được thực hiện trên server thì trong trường alias của hacker sẽ hiển thị các
thông tin của user top 1 trong bảng User. Với cách này hacker có thể thấy được thông tin của
các user bất kì, trong đó chứa thông tin nhạy cảm như password.
2.4 Dạng tấn công sử dụng stored-procedures
Việc tấn công bằng stored-procedures sẽ gây tác hại rất lớn nếu ứng dụng được thực thi với
quyền hệ thống ‘sa’.
Ví dụ nếu thay đoạn mã tiêm vào dạng: ‘EXCE xp_cmdshell ‘cmd.exe dir C:’. Lúc này hệ thống
sẽ liệt kê thư mục ổ đĩa C: trên server.
Việc phá hoại kiểu nàu thì thuộc vào câu lệnh đằng sau cmd.exe, đối với server đang chạy trên
Windows. Và có thể dùng master..xp_cmdshell để thi hành lệnh từ xa.
Ví dụ:
 Xp_availablemedia: Hiển thị những ổ đĩa hiện hành trên máy
 Xp_dirtree: Hiển thị tất cả các thư mục kể cả thư mục con
II. Các kĩ thuật phòng chống SQL injection
1. Kiểm soát dữ liệu nhập vào
Việc quan trong phòng chống SQL injection phải kiểm tra các dữ liệu mà người dùng nhập vào.
Như trong php ta có thể dùng hàm mysql_real_escape_string().
Xây dựng một số hàm để loại bỏ mốt số kí tự và từ khóa nguy hiểm như: ‘,”,insert, select,
uinion,…
2. Thiết lập an toàn cho hệ quản trị cơ sở dữ liệu
Cần có cơ chế kiểm soát chặt chẽ và giới hạn quyền xử lí dữ liệu đến tài khoản người dùng ứng
dụng web đang sử dụng. Các ứng dụng cấn tránh dùng đến các quyền như dbo hay sa. Quyền
càng bị hạn chế, thiệt hại càng ít.
Ngoài ra để tránh các nguy cơ từ SQL injection, nên chú ý loại bỏ thông tin kĩ thuật nào chứa
trong thông điệp chuyển xuống người dùng khi ứng dụng có lỗi, ví dụ như hạn chế các thông
báo lỗi khi hacker khai thác kĩ thuật tấn công bằng câu lệnh select . Các thông báo lỗi thường
tiết lộ chi tiết kĩ thuật, hacker có thể lợi dụng để phân tích các điểm yếu của ứng dụng.
6
7
Mục lục
I. Tìm hiểu về SQL ijection..............................................................................................................................................2
1. Khái quát SQL injection...........................................................................................................................................2
2. Các dạng tấn công SQL ijection ..............................................................................................................................2
2.1 Dạng tấn công vượt qua kiểm tra đăng nhập.................................................................................................3
2.2 Sử dụng câu lệnh select.....................................................................................................................................3
2.3 Dạng tấn công sử dụng câu lệnh insert ...........................................................................................................4
2.4 Dạng tấn công sử dụng stored-procedures .....................................................................................................5
II. Các kĩ thuật phòng chống SQL injection............................................................................................................5
1. Kiểm soát dữ liệu nhập vào......................................................................................................................................5
2. Thiết lập an toàn cho hệ quản trị cơ sở dữ liệu......................................................................................................5

More Related Content

Similar to Athena báo cáo thực tập tuần 2

Tan cong kieu sql injection tac hai va phong tranh vn
Tan cong kieu sql injection   tac hai va phong tranh vnTan cong kieu sql injection   tac hai va phong tranh vn
Tan cong kieu sql injection tac hai va phong tranh vnJenny Nguyen
 
Sql injection2
Sql injection2Sql injection2
Sql injection2Gió Lào
 
Tim hieu lo hong web va cach phong chong
Tim hieu lo hong web va cach phong chongTim hieu lo hong web va cach phong chong
Tim hieu lo hong web va cach phong chongVu Trung Kien
 
Sql injection demo - it-slideshares.blogspot.com
Sql injection   demo - it-slideshares.blogspot.comSql injection   demo - it-slideshares.blogspot.com
Sql injection demo - it-slideshares.blogspot.comphanleson
 
Sql injection bao cao - http://ouo.io/Mqc8L5
Sql injection bao cao - http://ouo.io/Mqc8L5Sql injection bao cao - http://ouo.io/Mqc8L5
Sql injection bao cao - http://ouo.io/Mqc8L5phanleson
 
Đồ án thực tập cơ sở các kĩ thuật tấn công SQL injection và cách phòng chống
Đồ án thực tập cơ sở các kĩ thuật tấn công SQL injection và cách phòng chốngĐồ án thực tập cơ sở các kĩ thuật tấn công SQL injection và cách phòng chống
Đồ án thực tập cơ sở các kĩ thuật tấn công SQL injection và cách phòng chốngnataliej4
 
Tan cong
Tan congTan cong
Tan congtoan
 
Báo cáo thực tập hàng tuần - Các chuẩn bảo mật web (OWASP)
Báo cáo thực tập hàng tuần - Các chuẩn bảo mật web (OWASP)Báo cáo thực tập hàng tuần - Các chuẩn bảo mật web (OWASP)
Báo cáo thực tập hàng tuần - Các chuẩn bảo mật web (OWASP)Luc Cao
 
Bao cao tttn an ninh web
Bao cao tttn   an ninh webBao cao tttn   an ninh web
Bao cao tttn an ninh webNhóc Mèo
 
Web application-security
Web application-securityWeb application-security
Web application-securityVisla Team
 
một số phương pháp tấn công và phòng chống trong không gian mạng
một số phương pháp tấn công và phòng chống trong không gian mạngmột số phương pháp tấn công và phòng chống trong không gian mạng
một số phương pháp tấn công và phòng chống trong không gian mạngNguynQuangKhangMinh
 
Tuan vq bao cao thuc tap_ system hacking
Tuan vq bao cao thuc tap_ system hackingTuan vq bao cao thuc tap_ system hacking
Tuan vq bao cao thuc tap_ system hackingv7q3t
 
Báo cáo thực tập - Lần 1 - Hoàng Thanh Quý
Báo cáo thực tập - Lần 1 - Hoàng Thanh QuýBáo cáo thực tập - Lần 1 - Hoàng Thanh Quý
Báo cáo thực tập - Lần 1 - Hoàng Thanh QuýQuý Đồng Nast
 
Tổng kết Báo cáo thực tập Athena - Hoàng Thanh Quý
Tổng kết Báo cáo thực tập Athena - Hoàng Thanh QuýTổng kết Báo cáo thực tập Athena - Hoàng Thanh Quý
Tổng kết Báo cáo thực tập Athena - Hoàng Thanh QuýQuý Đồng Nast
 
ceh-lab_book_tieng_viet_phan3
ceh-lab_book_tieng_viet_phan3ceh-lab_book_tieng_viet_phan3
ceh-lab_book_tieng_viet_phan3VNG
 
Vu tuananh
Vu tuananhVu tuananh
Vu tuananhVũ Anh
 

Similar to Athena báo cáo thực tập tuần 2 (20)

Sql injection2
Sql injection2Sql injection2
Sql injection2
 
Tan cong kieu sql injection tac hai va phong tranh vn
Tan cong kieu sql injection   tac hai va phong tranh vnTan cong kieu sql injection   tac hai va phong tranh vn
Tan cong kieu sql injection tac hai va phong tranh vn
 
Sql injection2
Sql injection2Sql injection2
Sql injection2
 
Tim hieu lo hong web va cach phong chong
Tim hieu lo hong web va cach phong chongTim hieu lo hong web va cach phong chong
Tim hieu lo hong web va cach phong chong
 
Sql injection demo - it-slideshares.blogspot.com
Sql injection   demo - it-slideshares.blogspot.comSql injection   demo - it-slideshares.blogspot.com
Sql injection demo - it-slideshares.blogspot.com
 
Sql injection bao cao - http://ouo.io/Mqc8L5
Sql injection bao cao - http://ouo.io/Mqc8L5Sql injection bao cao - http://ouo.io/Mqc8L5
Sql injection bao cao - http://ouo.io/Mqc8L5
 
SQL injection
SQL injectionSQL injection
SQL injection
 
Đồ án thực tập cơ sở các kĩ thuật tấn công SQL injection và cách phòng chống
Đồ án thực tập cơ sở các kĩ thuật tấn công SQL injection và cách phòng chốngĐồ án thực tập cơ sở các kĩ thuật tấn công SQL injection và cách phòng chống
Đồ án thực tập cơ sở các kĩ thuật tấn công SQL injection và cách phòng chống
 
Tan cong
Tan congTan cong
Tan cong
 
SQL Injection
SQL InjectionSQL Injection
SQL Injection
 
Báo cáo thực tập hàng tuần - Các chuẩn bảo mật web (OWASP)
Báo cáo thực tập hàng tuần - Các chuẩn bảo mật web (OWASP)Báo cáo thực tập hàng tuần - Các chuẩn bảo mật web (OWASP)
Báo cáo thực tập hàng tuần - Các chuẩn bảo mật web (OWASP)
 
Bao cao tttn an ninh web
Bao cao tttn   an ninh webBao cao tttn   an ninh web
Bao cao tttn an ninh web
 
Web application-security
Web application-securityWeb application-security
Web application-security
 
một số phương pháp tấn công và phòng chống trong không gian mạng
một số phương pháp tấn công và phòng chống trong không gian mạngmột số phương pháp tấn công và phòng chống trong không gian mạng
một số phương pháp tấn công và phòng chống trong không gian mạng
 
Tuan vq bao cao thuc tap_ system hacking
Tuan vq bao cao thuc tap_ system hackingTuan vq bao cao thuc tap_ system hacking
Tuan vq bao cao thuc tap_ system hacking
 
Báo cáo thực tập - Lần 1 - Hoàng Thanh Quý
Báo cáo thực tập - Lần 1 - Hoàng Thanh QuýBáo cáo thực tập - Lần 1 - Hoàng Thanh Quý
Báo cáo thực tập - Lần 1 - Hoàng Thanh Quý
 
Tổng kết Báo cáo thực tập Athena - Hoàng Thanh Quý
Tổng kết Báo cáo thực tập Athena - Hoàng Thanh QuýTổng kết Báo cáo thực tập Athena - Hoàng Thanh Quý
Tổng kết Báo cáo thực tập Athena - Hoàng Thanh Quý
 
Ceh phan3
Ceh phan3Ceh phan3
Ceh phan3
 
ceh-lab_book_tieng_viet_phan3
ceh-lab_book_tieng_viet_phan3ceh-lab_book_tieng_viet_phan3
ceh-lab_book_tieng_viet_phan3
 
Vu tuananh
Vu tuananhVu tuananh
Vu tuananh
 

Athena báo cáo thực tập tuần 2

  • 1. TRUNG TÂM ĐÀO TẠO QUẢN TRỊ MẠNG & AN NINH MẠNG QUỐC TẾ ATHENA BÁO CÁO THỰC TẬP TUẦN II ĐỀ TÀI TÌM HIỂU CÁC CÔNG CỤ TẤN CÔNG WEB APPLICATION Giáo viên hướng dẫn: Võ Đỗ Thắng Trần Lâm Mẫn Sinh viên thực tập: Cao Văn Lực Tuần 2 :10/03/2014 – 17/03/2014 Nội dung: SQL INJECTION
  • 2. 2 I. Tìm hiểu về SQL ijection 1. Khái quát SQL injection  SQL injection là kĩ tuật cho phép những kẻ tấn công lợi dụng lỗ hỏng trong việc kiểm tra dữ liệu nhập trong các ứng dụng web và các thông báo lỗi của hệ quản trị cớ sở dữ liệu để tiêm vào (injection) thi hành các câu lệnh SQL bất hợp pháp (không được người phát triển lường trước).  Hậu quả : cho phép kẻ tấn công có thể thực hiện các thao tác xóa, sửa,.. thậm chí còn chiếm được server đang chạy.  Lỗi thường xảy ra trên các ứng dụng web có sử dụng các hệ quản trị cơ sở dữ liệu như SQL server, MySQL, Oracle, DB2,..  Kẻ tấn công không mắc công giả mạo hay thăm dò hệ thống. 2. Các dạng tấn công SQL ijection Để biết các website có bị lỗi SQL injection hay không ta có thể sử dụng các phần mềm để web hoặc các công cụ tìm kiếm như Google. Và dung các từ khóa tìm kiếm như : “inurl: product.php?id=”.
  • 3. 3 Tìm kiếm lỗi SQL injection 2.1 Dạng tấn công vượt qua kiểm tra đăng nhập Với dạng tấn công này, tin tặc có thể dễ dàng vượt qua các trang đăng nhập nhờ vào lỗi khi dung các câu lệnh SQL thao thác trên cơ sở dữ liệu của ứng dụng web. Ví dụ câu lệnh SQL để kiểm tra lúc đăng nhập: “select * from tbl_user where name=user and password=pass”; Yêu cầu username phải nhập username và password đúng mới được đăng nhập vào. Nhưng nếu hacker cố tình nhập vào trường user là a’ or 1=1 -- -, thì câu truy SQL sẽ trở thành : select * from tbl_user where name=‘a’ or 1=1 -- - and password ‘ . Vì vế 1=1 luôn đúng nên hacker có thể đăng nhập với username bất kì. 2.2 Sử dụng câu lệnh select
  • 4. 4 Kẻ tấn công phải hiểu và lơi dụng các thông báo lỗi của hệ thống để tìm các điểm yếu khởi đầu cho tấn công. Ví dụ đoạn code trong php: “select * from users where id=”+$id; Muốn lấy giá trị $id cần phải sử dụng phương thức get trong php . Nếu hacker cố tình nhâp vào trên trình duyệt 1’ union select @@version,database(),3 limit 1,1-- - thì câu truy vấn sẽ trở thành: select * from users where id=1’ union select @@version, database() , 3 limit 1,1 --Với câu truy vấn này nếu ứng không chế lọc mã lệnh trong php thì hacker sẽ thấy được tên version của database đang sử dụng và tên của database, một điều mà người lập trình không mong muốn. Hacker sẽ tiếp tục thực hiên các câu lệnh truy vấn bất hợp pháp tiếp theo để lấy tên table, column, username, password,..Hacker có thể thấy được dữ liệu trong hệ quản trị cơ sỡ liệu mà ứng dụng web đang chạy. 2.3Dạng tấn công sử dụng câu lệnh insert Thông thường các ứng dụng web cho phép người dung đăng kí một tài khoản để login. Sau khi đăng nhập có thể xem và hiệu chỉnh thông tin của mình. SQL injection có thể được dùng khi hệ thống không kiểm tra tính hợp lệ của thông tin nhập vào. Ví dụ câu lệnh insert có cú pháp sau: Insert into Users (alias,email,money) values ($alias,$email,$money); Nếu đoạn mã trong php là: $sql= “insert into Users (alias,mail,year) values(‘” + $alias + “’,” + “’” +$email + “’,” + “’” + $year + “’)”; Nếu hacker nhập vào trường alias với nội dung như : ‘+Select top 1 * from Users+’ Câu lệnh truy vấn trở thành: insert into Users (alias,email,money) values (‘’ +Select top 1 * from Users+ ‘’ + ‘abc@gmail.com’ + ‘2014’ ). Thì câu lệnh Select top 1 from Users cũng sẽ được thực thi cùng câu lệnh insert.
  • 5. 5 Sau khi câu truy vấn được thực hiện trên server thì trong trường alias của hacker sẽ hiển thị các thông tin của user top 1 trong bảng User. Với cách này hacker có thể thấy được thông tin của các user bất kì, trong đó chứa thông tin nhạy cảm như password. 2.4 Dạng tấn công sử dụng stored-procedures Việc tấn công bằng stored-procedures sẽ gây tác hại rất lớn nếu ứng dụng được thực thi với quyền hệ thống ‘sa’. Ví dụ nếu thay đoạn mã tiêm vào dạng: ‘EXCE xp_cmdshell ‘cmd.exe dir C:’. Lúc này hệ thống sẽ liệt kê thư mục ổ đĩa C: trên server. Việc phá hoại kiểu nàu thì thuộc vào câu lệnh đằng sau cmd.exe, đối với server đang chạy trên Windows. Và có thể dùng master..xp_cmdshell để thi hành lệnh từ xa. Ví dụ:  Xp_availablemedia: Hiển thị những ổ đĩa hiện hành trên máy  Xp_dirtree: Hiển thị tất cả các thư mục kể cả thư mục con II. Các kĩ thuật phòng chống SQL injection 1. Kiểm soát dữ liệu nhập vào Việc quan trong phòng chống SQL injection phải kiểm tra các dữ liệu mà người dùng nhập vào. Như trong php ta có thể dùng hàm mysql_real_escape_string(). Xây dựng một số hàm để loại bỏ mốt số kí tự và từ khóa nguy hiểm như: ‘,”,insert, select, uinion,… 2. Thiết lập an toàn cho hệ quản trị cơ sở dữ liệu Cần có cơ chế kiểm soát chặt chẽ và giới hạn quyền xử lí dữ liệu đến tài khoản người dùng ứng dụng web đang sử dụng. Các ứng dụng cấn tránh dùng đến các quyền như dbo hay sa. Quyền càng bị hạn chế, thiệt hại càng ít. Ngoài ra để tránh các nguy cơ từ SQL injection, nên chú ý loại bỏ thông tin kĩ thuật nào chứa trong thông điệp chuyển xuống người dùng khi ứng dụng có lỗi, ví dụ như hạn chế các thông báo lỗi khi hacker khai thác kĩ thuật tấn công bằng câu lệnh select . Các thông báo lỗi thường tiết lộ chi tiết kĩ thuật, hacker có thể lợi dụng để phân tích các điểm yếu của ứng dụng.
  • 6. 6
  • 7. 7 Mục lục I. Tìm hiểu về SQL ijection..............................................................................................................................................2 1. Khái quát SQL injection...........................................................................................................................................2 2. Các dạng tấn công SQL ijection ..............................................................................................................................2 2.1 Dạng tấn công vượt qua kiểm tra đăng nhập.................................................................................................3 2.2 Sử dụng câu lệnh select.....................................................................................................................................3 2.3 Dạng tấn công sử dụng câu lệnh insert ...........................................................................................................4 2.4 Dạng tấn công sử dụng stored-procedures .....................................................................................................5 II. Các kĩ thuật phòng chống SQL injection............................................................................................................5 1. Kiểm soát dữ liệu nhập vào......................................................................................................................................5 2. Thiết lập an toàn cho hệ quản trị cơ sở dữ liệu......................................................................................................5