1. Trang chủ
  2. » Công Nghệ Thông Tin

Hacker Professional Ebook part 343 doc

6 132 0

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 6
Dung lượng 139,29 KB

Nội dung

thông báo lỗi chi tiết ,là việc dễ dàng tạo ra một sự tiêm nhiễm UNION SELECT ,và thử nó với một số khác của các trường ( hơn một trong mỗi sự chờ đợi).Khi một lỗi chỉ rằng một 'column number mismatch' ( số cột không thích ứng ) được thay thế bởi một 'column type mismatch' (kiểu cột không thích ứng),số đúng của cột đã được tìm ra,và bước tiếp theo có thể thực hiện.Khi làm việc mờ mịt thế này chúng ta hoàn toàn không có dấu hiệu lưu ý cho kiểu lỗi ,và do đó giáo trình này là hoàn toàn phù phiếm. Một kĩ thuậtk khác do đó phải được dùng để xác định số của các cột,và kĩ thuật này đến từ hình thức của mệnh đề ORDER BY .Việc thêm một mệnh đề ORDER BY vào cuối một biểu thức SELECT làm thay đổi thứ tự kết quả đặt trong bản ghi.Điều này thường được thực hiện bằng việc chỉ rõ tên của một loại cột ( hoặc tên của vài loại cột). Quan sát một ví dụ về câu truy vấn tài chính,một sự tiêm nhiễm hợp lệ vào trong tham số số Credit Card sẽ là 11223344) ORDER BY CCNum ,kết quả là trong câu truy vấn sau: SELECT CCNum FROM CreditCards WHERE (AccNum=11223344) ORDER BY CCNum and CardState='Active') AND UserName='victim' Sự việc mệnh đề ORDER BY có thể có một hình thức dạng số thường được giám sát.Trong trường hợp này biểu thức tham chiếu tới một số cột hơn là tham chiếu tới tên của nó.Điều này có nghĩa rằng sự tiêm nhiễm 11223344) ORDER BY 1 cũng sẽ phù hợp,và thực hiện một điều tương tự cũng chính xác như vậy,từ CCNum là trường đầu tiên trong kết quả của câu truy vấn.Sự tiêm nhiễm 112233344) ORDER BY 2- sẽ tạo ra một lỗi như câu truy vấn này chỉ có một trường duy nhất, nghĩa là kết quả không thể được phân loại bởi trường thứ hai của nó. Do đó khi đến công việc đếm số của trường , ORDER BY có thể rất hữu ích.Đầu tiên kẻ tấn công thêm một mệnh đề ORDER BY 1 vào cú pháp cơ bản hắn đã xác định.Bởi mọi câu truy vấn SELECT phải có ít nhất một trường,điều này phải thực hiện.Nếu một lỗi được nhận trên điều đó,cú pháp phải được lục lọi thêm nữa,cho đến khi lỗi không còn xuất hiện.( mặc dù không chắc xảy ra,nó cũng có thể là nguyên nhân gây nên sự phân loại một lỗi trong một ứng dụng.Trong trường hợp này,thêm ASC hoặc DESC có thể tìm ra vấn đề).Một cú pháp hợp lệ chứa ORDER BY làm việc không có lỗi,kẻ tấn công thay đổi thứ tự tự cột 1 tới cột 100 ( hoặc là 1000 hoặc bất cứ cái gì thực sự hợp lệ ).Ở điểm này,một lỗi phải được tạo ra,chỉ rằng sự liệt kê đang làm việc. Kẻ tấn công giờ đây có một phương pháp xác định số cột nào là tồn tại và số cột nào không tồn tại,và có thể dễ dàng xác định chính xác số của cột.Kẻ tấn công đơn giản chỉ cần tăng số này,một lần tại một thời điểm,cho đến khi một lỗi được nhận( từ vài cột có thể là loại không cho phép sắp xếp,nó luôn luôn thích hợp để kiểm tra một hoặc hai số được thêm,và hãy chắc chắn rằng thực sự một lỗi đã được nhận).Với kĩ thuật này số của trường dễ dàng được đếm và không có thông báo lỗi nào yêu cầu. Xác định loại của cột: Bởi vì với cú pháp hợp lệ đã biết,dịch vụ cung cấp cơ sở dữ liệu đã được xác định ,và số trường đã được đếm,tất cả các điều đó để lại cho kẻ tấn công khả năng xác định loại của tất cả các trường. Có những trường để sắp xếp đúng đòi hỏi phải có những kĩ năng xuyên suốt.Chúng phải hoàn toàn phù hợp với câu truy vấn gốc.Nếu chỉ có một vài trường thì có thể dễ dàng đạt được với brute force,nhưng nếu có nhiều trường thì vấn đề sẽ nảy sinh.Như đã giới thiệu,có 3 loại chính có thể ( number,string,date),với 10 trường có nghĩa là có khoảng 60000 sự kết hợp.Với 20 yêu cầu mỗi giây sẽ mất khoảng 1 giờ để thực hiện điều này.Với nhiều trường hơn toàn bộ quá trình gần như là không thể tiến hành. Một kĩ thuật đơn giản hơn do đó phải được sử dụng khi làm những việc mờ ám.Nó đến từ hình thức của từ khoá NULL trong SQL.Không giống với các trường tĩnh là một loại xác định ( như là một chuỗi hay là một số nguyên),NULL có thể thích hợp với mọi loại.Do đó có thể tiêm nhiễm một câu lệnh UNION SELECT ở nơi mà mọi trường đều trống rỗng,và ở đây phải không có loại lỗi không thích ứng.Hãy nhìn câu truy vấn tương tự như ví dụ trước: SELECT CCNum,CCType,CCExp,CCName FROM CreditCards WHERE (AccNum=11223344 AND CardState='Active') AND UserName='victim' Sự thay đổi duy nhất là trường CCNum đơn được thay thế với vài trường,do đó có nhiều trường hơn.Giả sử rằng kẻ tấn công đếm thành công số của các cột của kết quả từ câu truy vấn này (4 trong ví dụ của chúng ta),bây giờ nó thật đơn giản để tiêm nhiễm một câu lênhj UNION với tất cả NULL,và có một mệnh đề FROM không phát sinh các lỗi cho phép(một lần nữa hãy cố gắng cô lập các vấn đề,và từ đó vấn đề cho sự cho phép xác định sẽ được xử lí sau.Với MS sql,mệnh đề FROM có thể đơn giản bị bỏ sót.Đây là một cú pháp hợp lệ.Với Oracle,sử dụng tên bảng kép có thể sẽ có ích.Việc thêm 1 câu lệnh WHERE luôn được đánh giá là sai ( như WHERE 1=2) bảo đảm rằng sẽ không một bản ghi thiết lập nào chỉ chứa đựng giá trị null sẽ được trả lại,loại trừ ra các lỗi có thể ( vài ứng dụng có thể không xử lí chính xác giá trị NULL). Giờ hãy xem ví dụ trên ms sql server,mặc dù cũng tương tự thế áp dụng cho Oracle.Tiêm nhiễm 11223344) UNION SELECT NULL,NULL,NULL WHERE 1=2 ,kết quả trong câu truy vấn sau: SELECT CCNum,CCType,CCExp,CCName FROM CreditCards WHERE (AccNum=11223344) UNION SELECT NULL,NULL,NULL,NULL WHERE 1=2 AND CardState='Active') AND UserName='victim' Kiểu tiêm nhiễm giá trị NULL này phục vụ cho 2 mục đích.Mụch đích chính là sẽ có một câu lệnh UNION hoạt động mà không có lỗi.Mặc dù câu lệnh UNION này vẫn không nhận dữ liệu thật,nó cung cấp một sự chỉ định rằng câu lệnh này thực sự làm việc.Một mục đích khác của câu lệnh UNION rỗng là có 100% sự xác định cơ sở dữ liệu được dùng ( sử dụng một tên bảng cung cấp chuyên biệt trong mệnh đề FROM). Một lần câu lệnh cơ sở Null union làm việc,nó là một quá trình bình thường để xác định loại của mỗi cột.Trong mỗi lần lặp một trường đơn được kiểm tra với loại của nó.Tất cả ba loại (number,string,integer) được kiểm tra cho trường ,một trong chúng phải làm việc.Giả thiết rằng CCNum là một số nguyên ,và tất cả các trường khác là các chuỗi,dòng sau đây của UNION sẽ xác định loại hợp lệ: 11223344) UNION SELECT NULL,NULL,NULL,NULL WHERE 1=2 No Error - Syntax is right. MS SQL Server Used. Proceeding. 11223344) UNION SELECT 1,NULL,NULL,NULL WHERE 1=2 No Error - First column is an integer. 11223344) UNION SELECT 1,2,NULL,NULL WHERE 1=2 Error! - Second column is not an integer. 11223344) UNION SELECT 1,'2',NULL,NULL WHERE 1=2 No Error - Second column is a string. 11223344) UNION SELECT 1,'2',3,NULL WHERE 1=2 Error! - Third column is not an integer. 11223344) UNION SELECT 1,'2','3',NULL WHERE 1=2 No Error - Third column is a string. 11223344) UNION SELECT 1,'2','3',4 WHERE 1=2 Error! - Fourth column is not an integer. 11223344) UNION SELECT 1,'2','3','4' WHERE 1=2 No Error - Fourth column is a string. Kẻ tấn công giờ cố thể thiết lập một câu lệnh UNION thực sự,hợp lệ.Sử dụng sự tăng các số có thể,tất nhiên,để xác định trường nào được giới thiệu ở đâu.Mọi thứ được để lại giờ đây thật sự khai thác cho mục đích của kẻ tấn công.Mặc dù những điều này ,sự tiêm nhiễm có thể được sử dụng để truy lục dữ liệu từ bảng hệ thống ( như danh sách các bảng và các cột của chúng),theo sau bởi việc khôi phục dữ liệu ứng dụng.Tài liệu này không ,tuy nhiên,đi vào những chi tiết này,như họ đã mô tả thông suốt trong vài tài liệu SI đang tồn tại. Tóm lược Tài liệu này tổng kết nghiên cứu được thực hiện ở Imperva lưu tâm tới khả năng của việc khai thác SI trong khi không có những thông báo lỗi chi tiết.Sự nghiên cứu này được thực hiện để chứng minh cho các khách hàng rằng thật đơn giản để chặn các thông báo lỗi của họ,trở lại với phương pháp bảo mật bằng sự che giấu ("Security by Obscurity"),phương pháp này là không đủ.Sử dụng những kĩ thuật được mô tả trong tài liệu này,nhiều ứng dụng được chứng minh là nó có thể bị khai thác,mặc dù mọi cố gắng che giấu thông tin gửi lại cho khách hàng. Hy vọng rằng sau khi đọc tài liệu này giờ đây người đọc có thể hiểu tại sao SI thực sự là một lời đe dọa cho bất cứ hệ thống nào,với hoặc là không có các thông báo lỗi chi tiết,và tại sao sự tin cậy vào lỗi được che lấp lại thực sự không an toàn. Ảnh hưởng của các lỗ hổng bảo mật trên internet Tuy nhiên, có phải bất kỳ lỗ hổng bảo mật nào cùng nguy hiểm đến hệ thống hay không? Có rất nhiều thông báo liên quan đến lỗ hổng bảo mật trên mạng Internet, hầu hết trong số đó là các lỗ hổng loại C, và không đặc biệt nguy hiểm đối với hệ thống. Ví dụ, khi những lỗ hổng về sendmail được thông báo trên mạng, không phải ngay lập tức ảnh hưởng trên toàn bộ hệ thống. Khi những thông báo về lỗ hổng được khẳng định chắc chắn, các nhóm tin sẽ đưa ra một số phương pháp để khắc phục hệ thống. Trên mạng Internet có một số nhóm tin thường thảo luận về các chủ đề liên quan đến các lỗ hổng bảo mật đó là: - CERT (Computer Emergency Reponse Team): Nhóm tin này hình thành sau khi có phương thức tấn công Worm xuất hiện trên mạng Internet. Nhóm tin này thường thông báo và đưa ra các trợ giúp liên quan đến các lỗ hổng bảo mật. Ngoài ra nhóm tin còn có những báo cáo thường niên để khuyến nghị người quản trị mạng về các vấn đề liên quan đến bảo mật hệ thống. Địa chỉ Web site của nhóm tin: http://www.cert.org - CIAC (Department of Energy Computer Incident Advisory Capability): tổ chức này xây dựng một cơ sở dữ liệu liên quan đến bảo mật cho bộ năng lượng của Mỹ. Thông tin của CIAC được đánh giá là một kho dữ liệu đầy đủ nhất về các vấn đề liên quan đến bảo mật hệ thống. Địa chỉ web site của CIAC : http://ciac.llnl.org - FIRST (The Forum of Incident Response and Security Teams): Đây là một diễn đàn liên kết nhiều tổ chức xã hội và tư nhân, làm việc tình nguyện để giải quyết các vấn đề về an ninh của mạng Internet. Địa chỉ Web site của FIRST: http://www.first.org. Một số thành viên của FIRST gồm: - CIAC - NASA Automated Systems Incident Response Capability. - Purdue University Computer Emergency Response Team - Stanford University Security Team - IBM Emergency Response Team CÁC BIỆN PHÁP PHÁT HIỆN HỆ THỐNG BỊ TẤN CÔNG: Không có một hệ thống nào có thể đảm bảo an toàn tuyệt đối; bản thân mỗi dịch vụ đều có những lỗ hổng bảo mật tiềm tàng. Đứng trên góc độ người quản trị hệ thống, ngoài việc tìm hiểu phát hiện những lỗ hổng bảo mật còn luôn phải thực hiện các biện pháp kiểm tra hệ thống xem có dấu hiệu tấn công hay không. Các biện pháp đó là: - Kiểm tra các dấu hiệu hệ thống bị tấn công: hệ thống thường bị treo hoặc bị crash bằng những thông báo lỗi không rõ ràng. Khó xác định nguyên nhân do thiếu thông tin liên quan. Trước tiên, xác định các nguyên nhân về phần cứng hay không, nếu không phải phần cứng hãy nghĩ đến khả năng máy bị tấn công . liên quan đến bảo mật hệ thống. Địa chỉ Web site của nhóm tin: http://www.cert.org - CIAC (Department of Energy Computer Incident Advisory Capability): tổ chức này xây dựng một cơ sở dữ liệu

Ngày đăng: 04/07/2014, 12:20

TỪ KHÓA LIÊN QUAN