QQ 1274510382
Wechat JNZ_aming
Business Alliance QQ 그룹 538250800
기술 문제 QQ 그룹 599020441
솔루션 QQ 그룹 152889761
가입 QQ 그룹 649347320
공유 학습 QQ 그룹 674240731 네트워크 보안, 딥 러닝, 임베디드, 기계 향상, 생물학적 지능, 생명 과학을 목표로하는
연대기 기술
.
Ding Ding Ding : 제품이 온라인 상태 임 —> 공식 WeChat 공개
계정 팔로우 —Jinan Ji Nian Information Technology Co., Ltd. 인민 생활 프로젝트 : 상점 프랜차이즈 / 엔터테인먼트 데이트 / 기업 비즈니스 서클 / 아웃소싱 파트 타임 개발-프로젝트 출시 /
보안 프로젝트 : 상황 인식 방어 시스템 / 인트라넷 검사 시스템
클라우드 서비스 프로젝트 : 클라우드 호스트 / 도메인 이름 / 탄력적 스토리지-데이터베이스-클라우드 디스크 / API-AI 모든
제품 컨설팅 / 서비스 애프터 서비스 (동일)의 동적 확장
그것은 항상 종이에 얕고, 나는이 문제가 반드시 이루어져야한다는 것을 절대적으로 압니다! ! !
사업을 시작할 같은 생각을 가진 파트너를 찾고 있습니다. . . Baotuan Didi aming 연락처 정보! !
#이 글은 광고 시스템이 자동으로 광고를 게재하기위한 것입니다.
# 침해, 삭제 등이 있으시면 신속히 연락 주시기 바랍니다.
커널 캐싱은 IIS에서 기본적으로 활성화되어 요청 처리 파이프 라인에서 캐싱과 관련된 작업을 수행합니다.
HTTP 프로토콜 스택 (HTTP.sys)이 HTTP 요청을 잘못 구문 분석하면 IIS 원격 코드 실행 취약점이 발생합니다.
실험을 통해
IIS 아키텍처, HTTP 프로토콜 스택 및 작동 방식, HTTP 프로토콜 스택 취약성에
대해 배우고 MS15-034 취약성 악용 방법 및 취약성 원칙을 마스터하십시오.
웹 보안
정보 보안 실무자
컴퓨터 기초, 컴퓨터 네트워크
예비 지식
취약성 정보
취약성 번호 : CVE-2015-1635
취약점 설명 :
HTTP 프로토콜 스택 (HTTP.sys)에 IIS 원격 코드 실행 취약점이 존재합니다.
이 취약점은 HTTP.sys가 HTTP 요청을 잘못 구문 분석 할 때 발생할 수 있습니다.
취약성에 대한 Microsoft의 발표 : https://docs.microsoft.com/en-us/security-updates/SecurityBulletins/2015/ms15-034
영향을받는 버전 :
Microsoft
IIS 6.0 이상
이 설치된 Windows Server 2008 R2 / Server 2012 / Server 2012 R2 및 Windows 7 / 8 / 8.1은 모두이 취약점의 영향을받습니다.
IIS 아키텍처
시스템에 IIS (인터넷 정보 서비스)를 설치 한 후
World Wide Web Publishing Service (WWW Service)라는 서비스가 있습니다.
클라이언트가 시스템에 HTTP 요청을 보낼 때
WWW 서비스는 부하 분산 전략에 따라 작업자 프로세스 w3wp.exe를 시작하거나 선택
하여 HTTP 요청을 처리하고 적절한 HTTP 응답을 보냅니다.
w3wp.exe 프로세스는 HTTP.sys를 사용
하여 HTTP 프로토콜 분석, 응답 콘텐츠 어셈블리 및 콘텐츠 캐싱을 포함 하여 HTTP 프로토콜 처리와 관련된 많은 작업을 완료합니다 .
HTTP.sys는 HTTP 요청을 받고 TCPIP.sys를 통해 HTTP 응답을 보냅니다.
HTTP 프로토콜 스택 및 작동 방식
IIS 웹 서버는
HTTP 프로토콜 스택 (HTTP.sys)의 커널 모드 장치 드라이버에 의해 구현되는 Windows 네트워크 하위 시스템의 일부로 HTTP 수신기를 사용합니다 .
HTTP 프로토콜 스택은 HTTP 요청을 구문 분석하고 클라이언트에 응답을 제공합니다. .
HTTP.sys는 IIS 6.0에서 HTTP 요청을 올바른 요청 큐로 라우팅, 커널 모드에서 응답 캐싱, WWW 서비스에 대한 모든 텍스트 기반 로깅 수행, 연결 제한, 연결 시간 초과, 큐를 포함한 서비스 품질 기능 구현 등의 서비스를 제공합니다. 길이 제한 및 너비 제한.
웹 사이트를 만들 때 IIS는 HTTP.sys를 사용하여 웹 사이트를 등록하고 HTTP.sys는 웹 사이트에 대한 모든 HTTP 요청을 수신합니다. HTTP.sys의 기능은 포워더와 유사하며 수신 된 웹 요청을 웹 사이트 또는 웹 애플리케이션의 사용자 모드 프로세스를 실행하는 요청 큐로 보내고 응답을 클라이언트로 다시 보냅니다.
내부 캐시에서 저장된 응답을 검색하는 것 외에도 HTTP.sys는 수신 한 요청을 처리하지 않습니다. 따라서 응용 프로그램 별 코드는 커널 모드로로드되지 않으므로 응용 프로그램 별 코드의 오류는 커널에 영향을 미치거나 시스템 오류를 유발하지 않습니다.
HTTP 프로토콜 스택 취약성
커널 캐싱은 IIS에서 기본적으로 활성화되어 요청 처리 파이프 라인에서 캐싱과 관련된 작업을 수행합니다.
캐싱은 처리 된 정보 (예 : 웹 페이지)를 서버의 메모리에 저장하여 성능을 향상시킵니다.
Range HTTP 헤더를 사용하여이 취약점을 악용합니다.
이 HTTP 헤더를 사용하면 클라이언트가 필요에 따라 서버에서 특정 콘텐츠를 요청할 수 있습니다.
일반적으로 Range 헤더에는 다음 값이 포함됩니다.
범위 : bytes = 124-5656, 다음 값도 포함 할 수 있습니다. 범위 : bytes = 0-
Range 헤더의 상한이없는
경우 클라이언트가 완전한 데이터를 요청하는 것으로 간주합니다.
반대로 공격자가 상한을 지정하고 특별한 Range 값을 가진 HTTP 요청을 보내면
Range 변수가 서버에서 오버플로 될 수 있습니다.
Range 헤더의 상한은 0xFFFFFFFFFFFFFFFFFF이며,
이는 가장 큰 64 비트 부호없는 정수입니다.
공격자는이 값으로 HTTP 요청을 전송하여 정수 오버플로를 발생시키고
서버 는 '요청 된 범위를 충족 할 수 없습니다'로 응답합니다. 즉, 클라이언트는 파일의 일부가 파일의 끝을 초과하도록 요구합니다. 서버에서.
공격을 성공적으로 악용하면 서비스 거부가 발생할 수도 있습니다.
IIS 서버 보안 관련 실험
IIS6.0 쓰기 권한 취약성 악용 : https://www.hetianlab.com/expc.do?ec=ECID172.19.104.182015102217203100001
IIS6.0 원격 코드 실행 0 일 취약점 분석 및 악용 : https://www.hetianlab.com/expc.do?ec=ECID9d6c0ca797abec2017032915142000001(CVE-2017-7269)
fckEditor 업로드 공격에 사용 된 IIS 분석 취약점 : https://www.hetianlab.com/expc.do?ec=ECID172.19.104.182015102217243800001
실험 목적
IIS 아키텍처,
HTTP 프로토콜 스택 및 작동 방식, 실험을 통한 HTTP 프로토콜 스택 취약성 을 이해하고
MS15-034의 취약성 악용 방법 및 취약성 원칙을 습득합니다.
실험 환경
클라이언트 : Windows Server 2008 R2, IP : 10.1.1.134
공격 : Kali , IP : 10.1.1.100
취약성 악용 도구 다운로드 주소 : http://tools.hetianlab.com/tools/CVE-2015-1635.zip
작업 설명 : 취약성 탐지.
이것이 HTTP.sys에있는 정수 오버 플로우 취약점이라는 것을 알고 있습니다.
다음 형식의 HTTP 요청을 IIS 서버에 전송하면 취약점 탐지가 트리거 될 수 있습니다.
Kali 기계는 curl url -H "Host : ip"-H "Range : bytes = 0-18446744073709551615"명령을 실행합니다.
이때 16 진수로 변환 된 18446744073709551615는 0xFFFFFFFFFFFFFFFF (16F)로
64 비트 부호없는 정수로 표현할 수있는 가장 큰 정수
이므로 정수 오버플 로는 이 비정상 정수와 관련이 있어야합니다.
위와 같이
IIS 서버가 "요청 된 범위가 만족스럽지 않음"
을 반환하면 취약점이있는 것이고 "요청에 잘못된 헤더 이름이 있습니다"를 반환하면 취약점이 패치 된 것입니다.
스크립트 다운로드 :
wget http://tools.hetianlab.com/tools/CVE-2015-1635.zip
unzip CVE-2015-1635.zip
실험 기계의 IP 수정에주의하십시오.
취약성 감지를 위해 POC 사용 :
대상 시스템에 취약성이 있음을 나타냅니다.
실험 2 단계
작업 설명 : MS15-034 공격 공격 : 메모리 데이터 획득.
Kali 머신은 msfconsole을 열고 취약점 관련 익스플로잇 모듈을 검색합니다.
두 번째 모듈
ms15_034_http_sys_memory_dump를 사용하여 서버 메모리 데이터를 읽습니다.
HTTP 프로토콜 스택 요청은 HTTP.SYS 메모리 정보 공개를 처리합니다.
공격 수행 :
서버 메모리 데이터를 성공적으로 읽습니다.
실험 3 단계
작업 설명 : MS15-034 악용 공격 : 서비스 거부 공격.
첫 번째 모듈
ms15_034_ulonglongadd를 사용하여 ddos 공격 수행 : HTTP 프로토콜 스택 요청 처리 서비스 거부
매개 변수를 구성하고 공격을 실행합니다.
참고 : 공격을 실행하기 전에 클라이언트로 전환하고 공격 전후의 실행 상태를 느낄 수 있습니다.
실험용 컴퓨터에서 공격받는 클라이언트의 성공적인 성능 :
실험 4 단계
취약점 분석 : 서비스 거부 공격.
HTTP 서버에 요청을 보낸 후
w3wp.exe는 HTTP 요청을 처리하고
TCPIP.sys는 모든 HTTP 프로토콜 콘텐츠를 HTTP.sys로 전달합니다.
요청이 HTTP 범위 내에 있으면
UlpParseRange () 함수가 호출되어 요청을 구문 분석하여 요청 범위의 시작 및 끝 위치를 가져오고 범위
의 길이를 계산합니다.
시작 위치가 0이고 끝 위치가 0xFFFFFFFFFFFFFFFFFF 인 경우
범위 길이는 0이고 코드는 오버플로를 확인하지 않으며 오류 처리 조치를 취하지 않습니다.
시작 위치가 284이고 끝 위치가 0xFFFFFFFFFFFFFFFFFF 일 때
범위 길이는 -284이고 16 진수 값은 0xFFFFFFFFFFFFFFFEE4입니다.
부호없는 정수로 해석하면 값이 매우 큽니다.
HTTP 요청을 구문 분석 한 후 UlAdjustRangesToContentSize () 함수가 호출됩니다.
시작 위치와 길이가 '잘못된'경우
(범위 시작 위치가 0xFFFFFFFFFFFFFFFFFF, 범위 길이가 0xFFFFFFFFFFFFFFFFFF,
시작 위치> = 요청 된 웹 페이지 길이 및 끝 위치> = 요청 된 웹 페이지 길이),
함수는 범위를 조정합니다 시작 위치와 길이
동일한 요청이 계속 수신되면 요청에 대한 응답이 캐시되고 캐시에서 검색되어 요청자에게 전송됩니다.
이 프로세스는 UxpTpDirectTransmit () 함수를 호출하여 HTTP 응답 패킷의 길이를 계산합니다.
HTTP 응답 패키지를 조립 한 후
HTTP.sys는 전송을 위해 패킷 정보를 프로토콜 스택 드라이버로 전달합니다.
TCPIP.sys의 TcpSegmentTcbSend () 함수는 패킷의 각 부분의 내용을 순회합니다. 함수.
HTTP 범위 요청의 시작 위치가 284이고
끝 위치가 18446744073709551615 (16 진수 값은 0xFFFFFFFFFFFFFFFFFFFF) 인 경우
범위가 요청 된 웹 페이지 파일의 크기를 초과합니다.
HTTP 응답 길이가 매우 크기 때문에 루프가 여러 번 실행되고 정수 오버플로가 트리거되면
가상 주소가 부분 메모리 설명자 목록을 구성하는 데 사용됩니다. 범위가 소스 범위의 하위 범위가 아니기 때문에 블루 스크린이 표시됩니다.
실험 5 단계
취약성 분석 : 메모리 데이터를 가져옵니다.
3-18446744073709551615가 range1로 설정되고
1-600이 range2로 설정되어 있다고 가정합니다 .
UlpParseRange () 함수가 HTTP 요청을 구문 분석 한 후 UlAdjustRangesToContentSize ()
함수가 호출됩니다.
이때 range1은 정수 오버플로 (3 + 0xFFFFFFFFFFFFFFFD> = 0).
동일한 작업이 계속 수신되면 요청에 대한 응답이 캐시되고 캐시에서 검색되어 요청자에게 전송됩니다.
여러 범위 요청을 사용하면
각 범위 콘텐츠 앞에 범위 바인딩 태그와 범위 정보가 있습니다.
HTTP 응답 패키지를 조립 한 후 HTTP.sys는 전송을 위해 프로토콜 스택 드라이버에서 패킷 정보를 전달합니다.
TCPIP.sys의 TcpSegmentTcbSend () 함수는 데이터 패킷의 각 부분을 순회합니다.
다중 범위 요청을 사용하면 HTTP 응답의 길이가 늘어나 더 많은 정보가 표시 될 수 있습니다.
단일 범위 만 사용하면 HTTP 응답 길이가 너무 크거나 너무 작아집니다.
HTTP 응답 길이가 너무 크면 시스템에서 블루 스크린이 표시
되고 HTTP 응답 길이가 너무 작 으면 대상 웹 페이지 콘텐츠가 정보를 유출 한 후에도 버퍼를 덮어 쓰지 않습니다.
따라서 공격자는 다중 범위 요청을 사용하여 더 많은 정보를 공개합니다.
버그 수정
출력 캐시에서 커널 캐싱 활성화 비활성화 (IIS 커널 캐싱 비활성화) :
분석과 사고
자세한 분석은 https://blogs.360.cn/post/cve_2015_6135_http_rce_analysis.html을 참조하십시오.
참고
1 、 https : //technet.microsoft.com/en-us/library/cc739400 (v = ws.10) .aspx
2 、 https : //www.trendmicro.com/en_us/research/15/d/iis-at-risk-the-http-protocol-stack-vulnerability.html? _ga = 2.58551274.1902911539.1609211638-1589647619.1609211638