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ư secu
Trang 1hi 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;
Trang 2
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;
Trang 3
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ụ
•
Trang 4DDOS - 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?
Trang 5• 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ế
Trang 6nó 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?