Dos web server
Trang 1GVHD:TS Phạm văn Tính
Trang 2I.Khái niệm web server
II Các lỗi thường gặp trên Web serverIII Giới thiệu công cụ
Web vulnerability scanner
Metasploit
IV.Chi tiết một số lỗi
XSS (Cross-Site Scripting)
SSLStrip
Directory Traversal Attack
IIS(Internet Information Service)
V.DEMO
Trang 3 Web Server (máy phục vụ Web): máy tính
Trang 4 Tất cả các Web Server đều hiểu và chạy được các file *.htm và *.html,tuy nhiên một
số Web server lại phục vụ cho một số file riêng biệt
IIS của Microsoft:ASP,ASPX
Apache :PHP
Sun Java System Web Server của SUN:dành cho JSP
Trang 7 Acunetix WVS (Web Vulnerability
Scanner) là công cụ dừng để kiểm tra
mức độ bảo mật của các website ,nó sẽ tự động kiểm tra các ứng dụng Web để tìm
kiếm các lỗ hổng bảo mật như SQL
Injection, hay Cross-Site Scripting…
Nó có thể quét bất cứ trang web nào truy xuất bằng trình duyệt web thông qua giao thức Http và Https
Trang 8 Sau quá trình thu thập thông tin WVS sẽ phân tích từng trang nơi có dữ liệu đầu
vào từ đó sẽ đưa ra các cách khai thác
khác nhau trên mỗi trang tìm được
Sau khi quét xong thì dữ liệu sẽ được lưu xuống database và có thể xuất ra báo cáo trong suốt quá trình quét
Trang 19 High : nguy hiểm nhất có nguy cơ tối đa
trong việc hacker và trộm cắp dữ liệu
Medium : được gây ra bởi máy chủ dựa vào sai sót trong việc cấu hình tạo điều kiện cho việc phá vỡ thâm nhập vào máy chủ và thư mục
Low : thường tạo ra do dữ liệu không được
mã hóa khi gửi đi -> tiết lộ đường dẫn thư
mục
Information : tiết lộ các thông tin thông qua chuỗi tìm kiếm
Trang 29 SSLStrip
Directory Traversal Attack
Cross Site Scripting (XSS)
Trang 30I. Mô tả
II. Cách SSLStrip hoạt động
III. Các bước thực hiện
IV. Cách Phòng chống SSLStrip
Trang 31Cơ chế hoạt động của SSLStrip là
Attacker chạy Script viết bằng Python thì khi
đó các máy trong LAN sẽ đi ra Internet thông qua máy Attacker lúc này máy Attacker giống như Proxy
Trang 32Các connection nào từ Client đi ra Internet theo dạng https thì bị SSLStrip drop, chỉ cho đi theo dạng http.
Ví dụ: Client gõ vào URL:
https://mail.google.com thì khi này SSLStrip nó
sẽ drop gói tin đó đồng thời báo cho Client là
mày cứ đi ra theo http://mail.google.com và
trên Web Browser của client sẽ hiện ra 1 bảng thông báo sai cert Nhưng client truy cập vào
gmail theo http ( user+pass được POST lên
gmail theo dạng Plaintext => khi này thì
attacker dễ dàng làm việc với các gói tin đi theo dạng http.)
Trang 331. Tạo một Main In The Middle trên các kết nối
4. Giao tiếp với server với liên kết HTTPS
5. Tạo proxy giữa Client và Server
6. Thay thế các hình ảnh như favicon bằng
những hình ảnh quen thuộc như các khóa an toàn
7. Lúc này Clinet bị đánh cắp những thông tin
quan trọng mà không biết
Trang 36Target Using Facebook
Attacker: sslstrip Proxy
in the Middle
To
Internet
HTTP HTTPS
Trang 37 Attracter
Web Server
Client
Trang 38 Bước 1: Client gửi request tới web server với phương
thức Để lấy những thông tin cần thiết.
Bước 2:Attracker đóng vai trò proxy ở giữa bắt được
request và chuyển sang phương thức https và chuyển đến web server.
Bước 3: web server sẽ gửi những reponse về cho
attracker.
Bước 4: Atrracker sẽ chuyển lại những nội dung vừa nhận
từ web server tới client nhưng được attracker chỉnh sửa lại giống y như trang gửi về của web server.
Lúc này người dùng cứ tưởng mình đang kết nối trực tiếp với Web server mà mình đang thao tác.
Trang 39 Mức độ nguy hiểm cao Cách tấn công này
chưa thể dò tìm ra và cho phép tin tặc đánh cắp mật khẩu, hijack vào các phiên giao dịch ngân hàng trực tuyến hay thậm chí là đưa ra một bản cập nhật trình duyệt FireFox có đính kèm mã độc",
Trang 40Khi truy cập website thì nên gõ theo dạng
https://website và nhớ click vào biểu tượng ổ khóa khi lướt web xem có phải certificate đó có phải là của web đó ko hay là cert giả mạo
Trang 41 Mô tả
Demo
Cách phòng chống
Trang 42 Do Apache mở socket và nhận data từ client
(3-way handshakes đã hoàn tất) cho mọi
request đi vào và giới hạn mặt định max_client
là 150 Vì vậy khi slowloris gửi tới server những http request không hoàn chỉnh, apache phải
chờ cho http request này time out, mặt định là 300s Nếu slowloris gửi liên tục các request này tới webserver thì chỉ trong vài giây apache đã đạt max_client, từ chống phục vụ các client
khác
Trang 43 Với giá trị TimeOut của apache thì nó ấn định cho 3 điều chính:
1 Thời gian cần thiết để nhận trọn vẹn một
gửi bằng GET
2 Thời gian giữa các gói tin TCP gửi bằng
POST hoặc PUT (có chứa data)
3 Thời gian giữa các cú TCP ACK trong quá
trình chuyển tải dữ liệu giữa client (browser) và web server (apache)
Trang 44 Nếu apache không dùng giá trị TimeOut
chung như thế này mà gán TimeOut cụ thể cho từng loại GET, POST, HEAD thậm chí
cụ thể hơn cho từng ấn định như
LimitRequestLine, LimitRequestFieldSize thì TimeOut cho loại này có thể được kiểm soát chặt chẽ và hữu lý hơn
Trang 45 Cơ chế xử lý một request của apache khá chặt chẽ, nó có đến 7 phase khác nhau (unescapes URL, strips parent and elements from the URI, initial URI location walk, translate_name, Hook: map_to_storage, URI location walk, Hook:
header_parser) Tuy nhiên, đến phase "parse" header của một HTTP request thì nó bị "chết" bởi slowloris vì apache hoàn toàn không có cơ chế nào kiểm tra nội dung của header cho đến khi nó nhận được đầy đủ (dựa vào CRLF
character trên HTTP header) Socket do
slowloris khởi tạo vẫn giữ nguyên ở đó và
apache vẫn chờ cho đến khi TimeOut
Trang 47 Rút ngắn TimeOut xuống đến mức tối thiểu thì slowloris trở nên vô tác dụng nhưng sẽ ảnh
hưởng tới các rerequest khác không phả do
slowloris gửi tới
Dùng iptables chặn những những ip gửi nhiều request liên tục ( Phương án này có thể dẫn
Trang 48I. Khái niệm
II. Directory Traversal Attack theo ứng dụng
web
III. Directory Traversal Attack theo Webserver
IV. Làm thế nào để kiểm tra lỗ hổng Directory
Traversal
V. Ngăn chặn Directory Traversal Attack
VI. Tác hại
Trang 49 Kiểm soát việc truy cập nội dung của 1 trang web là rất quan trọng đối với 1 webserver.
Directory Traversal Attack Path Traversal hay còn
được biết với một số tên khác như “dot-dot-slash”,
“directory traversal”,”directory clumbing” và
“backtracking” là hình thức tấn công truy cập đến
những file và thư mục mà được lưu bên ngoài thư mục webroot.
Máy chủ web cung cấp hai cấp độ chính của cơ chế bảo mật: Access Control Lists (ACLs) và Root
directory
Trang 51 Các thư mục gốc là một thư mục cụ thể trên hệ thống tập tin máy chủ trong
đó người sử dụng
bị hạn chế
Người dùng không thể truy cập bất cứ điều gì ở trên gốc này
Trang 52 Ví dụ:
các thư mục gốc mặc định của IIS trên
Windows là C: \ Inetpub \ wwwroot
và với thiết lập này, một người dùng không có quyền truy cập vào C: \ Windows nhưng có
quyền truy cập vào C: \ Inetpub \ wwwroot \
và bất kỳ thư mục khác và các tập tin theo thư mục gốc (được cung cấp cho người dùng được xác thực thông qua ACL)
Trang 53 Lỗ hổng này có thể tồn tại hoặc trong các phần mềm máy chủ web riêng của mình hoặc trong
mã ứng dụng web
Để thực hiện một cuộc tấn công theo cây thư mục, tất cả các nhu cầu của kẻ tấn công là một trình duyệt web và một số thông tin tìm thấy
trongbất kỳ tập tin và thư mục mặc định trên hệ thống
Trang 54 Trong các ứng dụng web với các trang
dynamic, input thường nhận được từ các trình duyệt thông qua phương thức GET hoặc yêu cầu POST Dưới đây là một ví dụ của một yêu cầu HTTP GET URL:
http://test.webarticles.com/show.asp?
view=oldarchive.html
Trang 55 Với URL này, trình duyệt yêu cầu hiển thị
show.asp động từ máy chủ và cùng với nó
cũng sẽ gửi tham số “View" với giá trị của
"oldarchive.html"
Khi yêu cầu này được thực thi trên máy chủ web, show.asp tìm file oldarchive.htm từ hệ thống tập tin của máy chủ, gửi nó trở lại trình duyệt sau đó hiển thị cho người dùng
Trang 56 Hackers sẽ giả định rằng show.asp có thể lấy các tập tin từ hệ thống tập tin và gửi URL tuỳ chỉnh:
http://test.webarticles.com/show.asp?
view= / / / / /Windows/system.ini
Trang web sẽ lấy file system.ini từ hệ thống tập tin và hiển thị nó cho người dùng
Trang 57 Những biểu hiện / hướng dẫn của hệ thống
để đi một trong những thư mục cao hơn mà
thường được sử dụng để chứa các file hệ
Trang 58 Ngoài lỗ hổng trong các mã,Ngay cả bản thân webserver cũng có thể tạo điều kiện cho các cuộc tấn công Directory Traversal
Lỗi có thể phát sinh do phần mềm web server hoặc trong một số file script có sẵn trên server
Trang 59 Lỗi đã được phát sinh sẵn trong các phiên bản của phần mềm werver web, có những webserver trực tuyến mà vẫn còn sử dụng phiên bản cũ của IIS và Apache mà có thể mắc lỗi Directory Traversal.
Bạn có thể có một số thư mục mặc định
chứa những file Script nhạy cảm có thể khai thác được, cũng được hacker khai thác
Trang 60 Ví dụ:
một yêu cầu URL làm cho việc sử dụng thư mục script của IIS tới thư mục đi qua và thực thi một lệnh có thể được:
http://server.com/scripts/
%5c /Windows/System32/
cmd.exe?/c+dir+c:\ cmd.exe? / c + dir + c: \
“% 5c” là 1 mã trong URL yêu cầu một
webserver sử dụng để đại diện cho kí tự
thường dùng Trong trường hợp này “% 5c” đại diện cho các ký tự "\"
Trang 61 Những phiên bản mới của các phần mềm
webserver sẽ cấm và không co các mã này
hoạt động.Tuy nhiên một số phiên bản cũ hơn, không lọc ra các mã trong thư mục gốc và sẽ cho phép hacker thực thi lệnh đó
Các yêu cầu sẽ trả lại cho người dùng một
danh sách tất cả file trong ổ C: \ bằng cách
thực hiện lệnh "dir c: \" trong cmd
Trang 62 Trong quá trình khai thác kẻ tấn công có thể encode hoặc double encode, sử dụng %00(null) để bypass filter mà Website đó áp dụng.
%2e%2e%2f mô tả cho /
%2e%2e/ mô tả cho /
%2f mô tả cho /
%2e%2e%5c mô tả cho \
%2e%2e\ mô tả cho \
Trang 63 Khi tiếp cận với một ứng dụng Web, việc kiểm tra nó có khả năng bị lỗi Path Traversal có thể được thực hiện bằng hai loại:
+ Nếu kẻ tấn công không thể có source thì
chúng sẽ dùng spider, crawler để thực hiện
kiểm tra Website và từ những kết quả mà
spider mang lại chúng sẽ lần lượt kiểm tra các biến đối với các phương thức GET, POST hoặc COOKIE mà có khả năng bị lỗi
Trang 64 + Nếu kẻ tấn công có source code thì có thể tìm kiếm những hàm của những ngôn ngữ lập trình Web mà có khả năng gây ra lỗi Path
Traversal như :
PHP: include(), include_once(), require(),
require_once(), fopen(), readfile(),
JSP/Servlet: java.io.File(),
java.io.FileReader(), ASP: include file,
include virtual,
Trang 65 Cách tốt nhất để kiểm tra xem trang web và các ứng dụng của bạn là dễ bị tấn công Directory
Traversal là sử dụng một Web Vulnerability
Trang 66 Trước hết, đảm bảo bạn đã cài đặt phiên bản mới nhất của phần mềm Webserver (ISS,
Apache) bạn đang dùng, và chắc chắn rằng tất
cả các bản vá lỗi đã được áp dụng
kiểm tra biến cẩn thận (có thể áp dụng filter) khi
sử dụng các hàm đã giới thiệu ở trên mà có
khả năng gây ra lỗi cho phép kẻ tấn công thực hiện Path Traversal
Trang 67 Với một hệ thống dễ bị Directory Traversal, kẻ tấn công có thể làm cho việc sử dụng lỗ hổng này truy cập các bộ phận khác của hệ thống
tập tin từ thư mục gốc
Điều này có thể cung cấp cho những kẻ tấn
công khả năng xem những tập tin bị giới hạn, hoặc thậm chí nguy hiểm hơn, cho phép kẻ tấn công thực thi lệnh trên webserver,có thể dẫn
đến hacker có quyền đầy đủ trên hệ thống
Trang 68 Tuy nhiên một số filter như sau:
str_replace(" /","",$_GET['help_file'])
thì vẫn bị lỗi bởi lẽ kẻ tấn công có thể sử dụng
“….//” như thế sau khi qua code lọc ở trên nó
sẽ trở thành “ /”
Rõ ràng việc lọc như vậy vẫn không triệt
để.Thay vào đó các bạn nên sử dụng các biểu thức chính để lọc tốt hơn
eregi("[\\/]","{$_GET['help_file']}")
Trang 69I KHÁI NIỆM
II HOẠT ĐỘNG NHƯ THẾ NÀO
III PHÁT HIỆN XSS BẰNG CÁCH NÀO ?
IV CÁCH PHÒNG CHỐNG LỖI XSS
V DEMO
Trang 70 IIS(Internet Information Service ) là 1 ứng dụng webserver mang thương hiệu của Microsoft.
IIS server với các phiên bản từ trước đến phiên bản 5.x đều có lỗi để ta có thể khai thác , mặc định tính năng "hit highlight" của IIS 5.x bỏ qua giai đoạn chứng thực cơ bản
Trang 71 Lỗi nằm ở phần lọc IDA ISAPI (Internet
Services Application Programming Interface),
nó cho phép một máy tính từ xa đưa lệnh yêu cầu liệt kê danh sách file có trong hệ thống
máy
Hacker có thể sử dụng thủ thuật đơn giản là
gửi cho máy chủ một khối lượng xử lý thông tin nhiều hơn khả năng của nó Lượng thông tin
chưa kịp xử lý đó - về mặt kỹ thuật được gọi là
“shell code” - có thể mang một loạt các câu
lệnh, cho phép kẻ xâm nhập kiểm soát máy
tính nạn nhân
Trang 73 Để hack IIS server 5.x ta dùng 2 công cụ activeperl ,IE
và 1 exploit: Unicode.pl
Xác định trang web mắc lỗi này:
Sử dụng telnet để xác định trang Web ta tấn công có
sử dụng IIS server 5.0 hay không
telnet < tên trang Web > 80
GET HEAD / HTTP/1.0
Nếu nó không báo cho ta biết trang web đang sử dụng
chương trình gì thì các bạn hãy thay đổi cổng 80 bằng các cổng khác như 8080, 81, 8000, 8001 v.v…
Trang 74 Sau khi đã xác định được mục tiêu các bạn vào Run > CMD gõ :
Trang 75 Các bạn sẽ thấy bảng liệt kê lỗi ( đã được lập trình trong
Unicode.pl ) như sau :
Trang 76 Các bạn sẽ thấy được tất cả các lỗi trên nếu trang
Web nạn nhân bị tất cả những lỗi như vậy , nếu server của nạn nhân chỉ bị lỗi thứ 13 và 17 thì bảng kết quả chỉ xuất hiện dòng thứ 13 và 17 mà thôi
VD
bảng kết quả cho ta biết trang Web nạn nhân bị lỗi thứ
3 và 7 , ta sẽ vào IE và nhập đoạn mã tương ứng trên Address :
http://www.4rum.com/scripts/
%c1%pc /winnt/system32/cmd.exe?/c+ < == lỗi dòng thứ 3
hoặc
http://www.4rum.com/scripts/
%c1%1c /winnt/system32/cmd.exe?/c+ < == lỗi dòng thứ 7
Trang 78 Microsoft khuyến cáo người dùng nên nâng cấp lên phiên bản IIS 6.0 với khả năng bảo mật tốt hơn.
Dù vậy nhưng Microsoft vẫn không xem lỗi IIS 5.x là một lỗi thực sự và không phát hành bản vá lỗi Thay vào đó Microsoft lại đưa ra một hướng dẫn 6 bước nhằm giúp người
dùng giảm bớt nguy cơ bị tấn công
Trang 79 Cross-Site Scripting: (hay còn được gọi tắt là XSS ) là một kĩ thuật tấn công bằng cách
chèn vào các website động (ASP, PHP, CGI, JSP ) những thẻ HTML hay những đoạn
mã script nguy hiểm có thể gây nguy hại cho những người sử dụng
Trang 80 Trong đó, những đoạn mã nguy hiểm đựơc chèn vào hầu hết được viết bằng các Client-Site Script như JavaScript, Jscript và cũng
có thể là cả các thẻ HTML
Trang 81Về cơ bản XSS cũng như SQL Injection nócũng là các yêu cầu (request) được gửi từcác máy client tới server nhằm chèn vào đócác thông tin vượt quá tầm kiểm soát củaserver.
Có thể là một request được gửi từ các form
dữ liệu hoặc cũng có thể đó chỉ là các URL
Trang 82 Attacker sẽ chèn các đoạn mã vào link của đường dẫn, để thực thi trên trình duyệt của người dùng, dẫn đến việc mất cookies, mậtkhẩu, session hay fishing lừa đảo hay chèn virus
Xss thường có dạng như sau:
Trang 83 C1:Dùng các tool để quét các trang web:các tool hỗ trợ sẽ tìm kiếm lỗi:
C2:Chèn vào các đoạn script vào các form
input:bao gồm 5 bước sau đây
Trang 84 B1:Mở website cần khai thác:
B2: Xác định các site có form để nhập dữ liệu input như là đăng nhập,tìm kiếm,comment
nhập vào một chuỗi text:ở đây nhập “xss”
B3:Xem thông tin trả về:nếu chúng ta thấy
như sau:“Các chữ bạn tìm không thấy trong
dữ liệu.” ‘Tài khoản XSS không chính xác’
‘Đăng nhập với XSS không thành công’…