hi vọng với một vài ví dụ vừa rồi, các bạn cũng đã hiểu phần nào về XSS. 4. Phát hiện XSS bằng cách nào ? Nếu như các bạn sử dụng các mã nguồn của các chương trình có sẵn bạn có thể tham khảo danh sách các lỗ hổng của chương trình bạn trên các trang web chứa các thông tin về bảo mật như securityfocus.com, securiteam.com, Tuy nhiên nếu các website được tự viết mã nguồn thì bạn không thể áp dụng phương pháp trên. Trong trường hợp này bạn cần đến các chương trình scanner tự động. Nếu như bạn sử dụng trong môi trường Windows bạn có thể dùng N-Stealth hay AppScan, đó là những chương trình scan khá tuyệt, bạn không chỉ kiểm tra được các lỗi XSS mà nó còn cho phép bạn kiểm tra các lỗi khác trong Website đó, Server đó. Tất nhiên đâu phải lúc nào bạn cũng cần kiểm tra tất cả, nếu như bạn chỉ muốn kiểm tra các lỗi XSS có trong website, bạn chỉ cần sử dụng screamingCSS. Đó là một Perl Script sẽ mở các kết nối tới website (sử dụng Perl's socket) để kiểm tra các lỗi XSS của bạn. Hơn nữa bạn có thể sử dụng nó trong cả môi trường Unix lẫn Windows. 5. Ngăn ngừa XSS như thế nào ? Người ta không lường hết được mức độ nguy hiểm của XSS nhưng cũng không quá khó khăn để ngăn ngừa XSS. Có rất nhiều cách để có thể giải quyết vấn đề này. OWASP (The Open Web Application Standard Project) nói rằng để có thể xây dựng các website bảo mật cao, đối với các dữ liệu của người sử dụng bạn nên + 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à thanh lọc sữ liệu. Tuy nhiên trên thực tế, một số trường hợp bạn phải chấp nhận mọi loại dữ liệu hay không có một bộ lọc phù hợp. Chính vì vậy bạn phải có những cách riêng để giải quyết. Một trong những cách hay sử dụng là bạn mã hoá các kí tự đặc biệt trước khi in ra website, nhất là những gì có thể gây nguy hiểm cho người sử dụng. Trong trường hợp này thẻ <script> sẽ được đổi thành <script>. Như vậy nó sẽ vẫn được in ra màn hình mà không hề gây nguy hiểm cho người sử dụng. Tôi lấy ví dụ với script search.cgi với mã nguồn là Code: #!/usr/bin/perl use CGI; my $cgi = CGI->new(); my $query = $cgi->param('query'); print $cgi->header(); print "You entered $query"; Đây hoàn toàn là một script có lỗi bởi vì nó in ra trực tiếp dữ liệu được nhập vào. Dĩ nhiên là khi in ra, nó sẽ in ra dưới dạng đoạn mã HTML, như thế nó không chỉ không in ra chính xác những dữ liệu vào một cách trực quan mà còn có tiềm ẩn lỗi XSS. Như đã nói ở trên, để có thể giải quyết vấn đề này, chúng ta có thể mã hoá các kí tự đặc biệt của HTML với hàm HTML::Entities::encode(). Như vậy ta có thể có một mã nguồn hoàn hảo hơn như sau: Code: #!/usr/bin/perl use CGI; use HTML::Entities; my $cgi = CGI->new(); my $text = $cgi->param('text'); print $cgi->header(); print "You entered ", HTML::Entities::encode($text); Tất nhiên với phương pháp này bạn cũng có thể áp dụng đối với các ngôn ngữ Web Application khác (ASP, PHP ). Để kiểm tra việc lọc và mã hoá dữ liệu trước khi in ra, các bạn có thể dùng một chương trình được viết bằng ngôn nhữ PHP, đặc biệt nó được thiết kế để phòng chống các lỗi XSS. Bạn có thể lấy mã nguồn chương trình từ http://www.mricon.com/html/phpfilter.html Lọc và mã hoá các dữ liệu cho vấn là cách tốt nhất để chống XSS nhưng nếu bạn đang sử dụng mod_perl trên Apache Server thì bạn có thể dùng ngay module Apache::TaintRequest. Khi đó mã nguồn chương trình sẽ có dạng : Code: use Apache::TaintRequest; my $apr = Apache::TaintRequest->new(Apache->request); my $text = $apr->param('text'); $r->content_type("text/html"); $r->send_http_header; $text =~ s/[^A-Za-z0-9 ]//; $r->print("You entered ", $text); Kĩ thuật XSS được mô tả lần đầu tiên cách đây 2 năm và hầu hết các khả năng tiềm ẩn của kĩ thuật này đã được biết đến. Tuy nhiên chúng ta mới chỉ khắc phục được một phần của nó. Không phải vô tình mà Yahoo Mail lại để sót một lỗi XSS trong bộ lọc của mình. Một phương pháp tối ưu vẫn còn đang ở phía trước. Tiêu đề: Tấn công bằng DDOS DDOS - Distributed Denial Of Service ? • 1998 Chương trình Trinoo Distributed Denial of Service (DDoS) được viết bởi Phifli. • Tháng 5 – 1999 Trang chủ của FBI đã ngừng họat động vì cuộc tấn công bằng (DDOS) • Tháng 6 – 1999 Mạng Trinoo đã được cài đặt và kiểm tra trên hơn 2000 hệ thống. DDOS – Distributed Denial Of Service ? • Cuối tháng 8 đầu tháng 9 năm 1999, Tribal Flood Network đầu tiiên ra đời, Chương trình được Mixter Phát triển. • Cuối tháng 9 năm 1999, Công cụ Stacheldraht đã bắt đầu xuất hiện trên những hệ thống của Châu âu và Hoa kỳ. • Ngày 21 tháng 10 năm 1999 David Dittrich thuộc trường đại học Washington đã làm những phân tích về công cụ tấn công từ chối dịch vụ • DDOS - Distributed Denial Of Service ? • Ngày 21 tháng 12 năm 1999 Mixter phát hành Tribe Flood Network 2000 ( TFN2K ). • 10 : 30 / 7 – 2 -2000 Yahoo! ( Một trung tâm nổi tiếng ) đã bị tấn công từ chối dịch vụ và ngưng trệ hoạt động trong vòng 3 giờ đồng hồ. Web site Mail Yahoo và GeoCities đã bị tấn công từ 50 địa chỉ IP khác nhau với nhửng yêu cầu chuyễn vận lên đến 1 gigabit /s. DDOS - Distributed Denial Of Service ? • 8 -2 nhiều Web site lớn như Buy.com, Amazon.com, eBay, Datek, MSN, và CNN.com bị tấn công từ chối dịch vụ. • Lúc 7 giờ tối ngày 9-2/2000 Website Excite.com là cái đích của một vụ tấn công từ chối dịch vụ, dữ liệu được luân chuyễn tới tấp trong vòng 1 giờ cho đến khi kết thúc, và gói dữ liệu đó đã hư hỏng nặng. DDOS - Distributed Denial Of Service? • Qua đó ta có thể thấy rõ những vụ tấn công từ chối dịch vụ (Denial Of Services Attack ) và những cuộc tấn công về việc gửi nhửng gói dữ liệu tới máy chủ (Flood Data Of Services Attack) tới tấp là những mối lo sợ cho nhiều mạng máy tính lớn và nhỏ hiện nay, DDOS - Distributed Denial Of Service? • Khi một mạng máy tính bị Hacker tấn công nó sẽ chiếm một lượng lớn tài nguyên trên server như dung lượng ổ cứng, bộ nhớ, CPU, băng thông …. Lượng tài nguyên này tùy thuộc vào khả năng huy động tấn công của mỗi Hacker. Khi đó Server sẽ không thể đáp ứng hết những yêu cầu từ những client của những người sử dụng và từ đó server có thể sẽ nhanh chóng bị ngừng hoạt động, crash hoặc reboot. • DDOS - Distributed Denial Of Service? • Tấn công từ chối dịch vụ có rất nhiều dạng như Ping of Death, Teardrop, Aland Attack, Winnuke, Smurf Attack, UDP/ICMP Flooding, TCP/SYN Flooding, Attack DNS. DDOS - Distributed Denial Of Service? • Ping Of Death. Một số máy tính sẽ bị ngưng họat động, Reboot hoặc bị crash khi bị nhận những gói dữ liệu ping có kích thước lớn. • Ví dụ như : ping địachỉ -n 1000 trong đó : số 1000 là số lần gửi gói dữ liệu. • TCP/SYN Flooding: Bước 1: Khách hàng gửi một TCP SYN packet đến cổng dịch vụ của máy chủ Khách hàng =è SYN Packet ===è Máy chủ DDOS - Distributed Denial Of Service? • Bước 2 : Máy chủ sẽ phản hồi lại khách hàng bằng 1 SYN/ACK Packet và chờ nhận một 1 ACK packet từ khách hàng Máy chủ è SYN/ACK Packet è Khách hàng • Bước 3: Khách hàng phản hồi lại Máy chủ bằng một ACK Packet và việc kết nối hòan tất Khách hàng và máy chủ thực hiện công việc trao đổi dữ liệu với nhau. Khách hàng è ACK Packet è Máy chủ DDOS - Distributed Denial Of Service? • Trong trường hợp Hacker thực hiện việc SYN Flooding bằng cách gửi tới tấp, hàng loạt TCP SYN packet đến cổng dịch vụ của máy chủ sẽ làm máy chủ bị quá tải và không còn khả năng đáp ứng được nữa. DDOS - Distributed Denial Of Service? • UDP/ICMP Flooding: Hacker thực hiện bằng cách gửi 1 số lượng lớn các gói tin UDP/ICMP có kích thước lớn đến hệ thống mạng, khi hệ thống mạng chịu phải sự tấn công này sẽ bị qua tải và chiếm hết băng thông đường truyền đi ra bên ngòai của mạng này, vì thế nó gây ra nhửng ảnh hưởng rất lớn đến đường truyền cũng như tốc độ của mạng, gây nên những khó khăn cho khách hàng khi truy cập từ bên ngoài vào mạng này. DDOS - Distributed Denial Of Service? • Những điều kiện đủ để có những cuộc tấn công DoS Có hiệu quả: Để có được những cuộc tấn công DOS có hiệu quả thông thường một Hacker phải lựa chọn cho mình những đường truyền có dung lượng lớn cũng như tốc độ máy được dùng làm công cụ tấn công. Nếu không hội tụ được những điều kiện trên thì cuộc tấn công sẽ không mang lại mấy khả quan. DDOS - Distributed Denial Of Service? . bị Hacker tấn công nó sẽ chiếm một lượng lớn tài nguyên trên server như dung lượng ổ cứng, bộ nhớ, CPU, băng thông …. Lượng tài nguyên này tùy thuộc vào khả năng huy động tấn công của mỗi Hacker. . Khách hàng è ACK Packet è Máy chủ DDOS - Distributed Denial Of Service? • Trong trường hợp Hacker thực hiện việc SYN Flooding bằng cách gửi tới tấp, hàng loạt TCP SYN packet đến cổng dịch. còn khả năng đáp ứng được nữa. DDOS - Distributed Denial Of Service? • UDP/ICMP Flooding: Hacker thực hiện bằng cách gửi 1 số lượng lớn các gói tin UDP/ICMP có kích thước lớn đến hệ thống