Tài liệu Tìm hiểu các kỹ thuật khai thác lỗi ứng dụng web sql injection xss upload

  • Số trang: 12 |
  • Loại file: DOCX |
  • Lượt xem: 329 |
  • Lượt tải: 0
ledinhnhan

Tham gia: 13/04/2018

Mô tả:

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ẻ