Tối ưu hóa tấn công

0x01: 5 phút cho phần chán nhất

0x02: Triển lãm truyện tranh

0x03: 10 điểm yếu ứng dụng web theo xếp hạng OWASP

0x04: 25 lỗi phần mềm nguy hiểm nhất theo xếp hạng của SANS

0x05: Blind sql injection là gì?

0x06: Làm sao để kiểm thử blind sql injection?

0x07: Làm sao để tận dụng blind sql injection?

0x08: Tối ưu bằng cách dùng phép dịch bit

0x09: Tối ưu bằng cách dùng phép dịch bit dựa vào kết quả đã

được đánh chỉ mục

0X0A: Tối ưu blind sql injection theo chỉ mục thời gian nghỉ

0X0B: Tối ưu blind sql injection theo dữ liệu nén

0X0C: Hỏi và cùng trả lời

pdf31 trang | Chuyên mục: SQL Server | Chia sẻ: dkS00TYs | Lượt xem: 2151 | Lượt tải: 3download
Tóm tắt nội dung Tối ưu hóa tấn công, để xem tài liệu hoàn chỉnh bạn click vào nút "TẢI VỀ" ở trên
Tối ưu hóa tấn công 
Blind Sql Injection - 
quá nhanh và quá 
nguy hiểm
gamma95[at]gmail[dot]com
Nội dung
0x01: 5 phút cho phần chán nhất
0x02: Triển lãm truyện tranh
0x03: 10 điểm yếu ứng dụng web theo xếp hạng OWASP 
0x04: 25 lỗi phần mềm nguy hiểm nhất theo xếp hạng của SANS
0x05: Blind sql injection là gì?
0x06: Làm sao để kiểm thử blind sql injection?
0x07: Làm sao để tận dụng blind sql injection?
0x08: Tối ưu bằng cách dùng phép dịch bit
0x09: Tối ưu bằng cách dùng phép dịch bit dựa vào kết quả đã 
được đánh chỉ mục
0X0A: Tối ưu blind sql injection theo chỉ mục thời gian nghỉ
0X0B: Tối ưu blind sql injection theo dữ liệu nén
0X0C: Hỏi và cùng trả lời
5 phút cho phần chán nhất
• $ whoami >/dev/null
Triển lãm truyện tranh
Đừng đặt tên đứa trẻ :
Tèo'); DROP TABLE students;--
10 điểm yếu ứng dụng web theo xếp hạng 
OWASP
25 lỗi phần mềm nguy hiểm nhất theo xếp 
hạng của SANS
Làm sao để kiểm thử blind sql injection?
. Attacker chèn câu truy vấn:
where True
where False
VD:
vul.php?id = 1 and 1=1
vul.php?id = 1 and 1=2
. Ứng dụng không trả về thông tin có thể thấy được 
từ CSDL hay từ những thông điệp lỗi
. Attacker không thấy dữ liệu được trích xuất từ 
CSDL
Làm sao để kiểm thử blind sql injection? 
(2)
. Attacker phân tích kết quả phản hồi từ phản hồi trả 
lời đúng và phản hồi trả lời sai
. Khác biệt về checksum
. Khác biệt về cấu trúc HTML
. Khác biệt về từ khóa
. Khác biệt về hành vi
(VD: thời gian trả phản hồi)
Làm sao để tận dụng blind sql 
injection?
Tìm kiếm nhị phân
Tấn công blind sql injection bằng phương 
pháp tìm kiếm nhị phân
. Nếu có sự phản hồi khác biệt:
Attacker có thể trích xuất mọi thông tin từ 
CSDL
. VD:
vul.php?id=1 and mid(user(),1,1)>'a' and mid(user(),1,1) < 'z'
#nếu đúng, chia đôi và truy vấn tiếp
vul.php?id=1 and mid(user(),1,1) < 'm'
…....
…....
Tối ưu bằng cách dùng phép dịch bit
Attacker biết được bit cao nhất là 0
Tối ưu bằng cách dùng phép dịch bit 
(2)
. Và bit thứ 2 là “1”
01??????
. Kết quả kế tiếp có thể là:
010 = 2
011 = 3
Tối ưu bằng cách dùng phép dịch bit 
(3)
. Với kỹ thuật dịch bit trên, chỉ cần 7 truy vấn, sẽ đoán 
đúng chính xác 1 ký tự
Tối ưu bằng cách dùng phép dịch bit dựa 
vào kết quả đã được đánh chỉ mục
Tối ưu bằng cách dùng phép dịch bit dựa 
vào kết quả đã được đánh chỉ mục (2)
Tối ưu bằng cách dùng phép dịch bit dựa 
vào kết quả đã được đánh chỉ mục (3)
. Khi ép kiểu lại, chúng ta biết rằng 
CAST(b'11' AS DEC) là số 3 tương ứng 
với 'c' trong danh sách, tất cả chỉ tốn 3 
truy vấn! 
. Danh sách dài 45 , BIN(45) = 101101, 
cũng chỉ mất 7 truy vấn cho ký tự ở vị trí 
cuối cùng danh sách.
Thống kê số truy vấn cho mỗi phương pháp đã đề cập 
(VD: table_name= "CHARACTER_SET")
Đánh chỉ mục dựa vào thời gian nghỉ
Tối ưu blind sql injection theo chỉ mục thời 
gian nghỉ
. Time based blind SQL bị chi phối vào tần số các 
truy vấn. Mỗi truy vấn chỉ xác định duy nhất 1 bit 
. Tần số 1 truy vấn / 1 bit sẽ để lại nhiều “vết” 
trong access log. Đây là vấn đề “bất tiện”
. Mỗi truy vấn sẽ trả về chính xác 1 ký tự (không 
phải 1 bit).
Indexed time based attack
(VD)
Điều chỉnh thời gian nghỉ
. Thời gian nghỉ có thể điều chỉnh cho bé hơn bằng 
cách nhân chỉ mục với một số bé hơn 1
. VD: Thời gian nghỉ được điều chỉnh giảm 1/2 so với 
ví dụ trước
Vấn đề về độ trễ mạng
. Ý tưởng xuất phát từ chuyện thời gian nghỉ được tính từ 
những con số đánh chỉ mục, nên hoàn toàn có thể thêm vào 
những ký tự chắc chắn không xuất hiện (VD: \n, \t ...)
 . VD: thêm vào 4 'a' vào đầu chỉ mục, thời gian nghỉ luôn lớn 
hơn 4
Tối ưu blind sql injection theo 
dữ liệu nén
Câu chuyện chàng thám tử bị teo nhỏ
Tối ưu blind sql injection theo dữ liệu 
nén
Demo
Tham khảo
1. Indexed blind SQL injection
2. Faster Blind MySQL Injection Using Bit Shifting
3. Optimized Blind MySQL Injection Data Retrieval
4. SQL injection: Attacks and Defense (SynGress Book)

File đính kèm:

  • pdfTối ưu hóa tấn công .pdf
Tài liệu liên quan