xss & sql injection

11
XSS & SQL injection Thieu Mao - KSEC

Upload: thieu-mao

Post on 21-Jun-2015

2.246 views

Category:

Education


0 download

DESCRIPTION

1. XSS: Stored-XSS Reflected-XSS 2. SQL injection Dạng tấn công vượt qua kiểm tra đăng nhập Dạng tấn công sử dụng câu lệnh SELECT Dạng tấn công sử dụng câu lệnh INSERT Dạng tấn công sử dụng stored-procedures

TRANSCRIPT

Page 1: XSS & SQL injection

XSS & SQL injectionThieu Mao - KSEC

Page 2: XSS & SQL injection

1- Tấn công XSS như thế nào?

Page 3: XSS & SQL injection

Phân loại lỗi XSSStored-XSSLà lỗi XSS mà đoạn mã chèn thêm vào được lưu trữ trên server, như trong CSDL dưới dạng các comment trong blog, message trong forum. Reflected-XSS

Khác với Stored-XSS, Reflected-XSS đoạn mã khai thác sẽ không được lưu trữ trên server.

Page 4: XSS & SQL injection

Stored-XSSĐoạn mã <script>alert(“XSS”)</script> được chèn vào trong lời nhắn, và ngay lập tức nó được thực thi như hình dưới. Vì các lời nhắn được lưu trữ trong database nên bất cứ người dùng nào khi truy cập vào trang web này sẽ thực thi đoạn mã trên. Thay vì một đoạn mã vô hại như trên, hacker có thể thay bằng các đoạn mã nguy hiểm khác nhằm gây hại đến người dùng.

Page 5: XSS & SQL injection

Reflected-XSSTa thấy từ khóa tìm kiếm mà ta nhập vào ô textbox được hiển thị lại trên trình duyệt. Lợi dụng việc không kiểm soát giá trị này, ta có thể chèn thêm đoạn mã gây hại vào. Đường link sẽ có dạng:http://thieumao.vn/xss/reflected/index.php?q=<script>alert(“XSS”)</script>Tuy nhiên đoạn mã độc hại không được lưu lại trên server nên chỉ khi chạy đường link trên, người dùng mới bị tấn công.

Page 6: XSS & SQL injection

2- SQL injection là gì?Là hình thức tấn công vào câu lệnh SQL SELECT. Bằng

thủ thuật nào đó, attacker chèn câu lệnh hợp lệ của mình vào câu lệnh SQL SELECT của chương trình, để từ đó khai thác dữ liệu cần thiết.

Các dạng lỗi thường gặp:Không kiểm tra ký tự thoát truy vấnXử lý không đúng kiểuLỗi bảo mật bên trong máy chủ cơ sở dữ liệuBlind SQL injection

Page 7: XSS & SQL injection

Các dạng tấn công SQL injection1. Dạng tấn công vượt qua kiểm tra đăng nhập

2. Dạng tấn công sử dụng câu lệnh SELECT

3. Dạng tấn công sử dụng câu lệnh INSERT

4. Dạng tấn công sử dụng stored-procedures

Page 8: XSS & SQL injection

2.1 Dạng tấn công vượt qua kiểm tra đăng nhập

Page 9: XSS & SQL injection

2.2 Dạng tấn công sử dụng câu lệnh SELECT

Như trường hợp hình bên dưới, ta có thể thay thế ID hợp lệ bằng 1 giá trị khác. Ví dụ như 0 or 1=1 (thieumao.com/product.asp?ID=0 or 1=1)

Câu lệnh truy vấn SELECT * FROM T_NEWS WHERE NEWS_ID =0 or 1=1 sẽ trả về tất cả các bài viết.

Page 10: XSS & SQL injection

2.3 Dạng tấn công sử dụng câu lệnh INSERT

Ví dụ, một câu lệnh INSERT có cú pháp dạng:INSERT INTO TableName VALUES('Value One', 'Value Two', 'Value Three')

Thì chắc chắn sẽ bị lỗi SQLi nếu ta nhập vào trường thứ nhất như:' + (SELECT TOP 1 FieldName FROM TableName) + ‘

Lúc này câu truy vấn sẽ là :INSERT INTO TableName VALUES(' ' + (SELECT TOP 1 FieldName FROM TableName) + ' ', 'abc', 'def')

Khi đó, lúc thực hiện lệnh xem thông tin, xem như bạn đã yêu cầu thực hiện thêm một lệnh nữa đó là:

SELECT TOP 1 FieldName FROM TableName

Page 11: XSS & SQL injection

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 quản trị hệ thống

‘sa’.

Ví dụ, nếu ta thay đoạn mã tiêm vào dạng: ‘ ; EXEC

xp_cmdshell ‘cmd.exe dir C: ‘

Lúc này hệ thống sẽ thực hiện lệnh liệt kê thư mục trên ổ

đĩa C:\ cài đặt server. Việc phá hoại kiểu nào tuỳ thuộc vào

câu lệnh đằng sau cmd.exe.