Search

'웹 어플리케이션'에 해당되는 글 43건

  1. 2009.01.05 Status bar spoofing
  2. 2008.12.23 Expression XSS
  3. 2008.12.19 Modular Universal XSS Worm

Status bar spoofing

웹 어플리케이션 2009. 1. 5. 17:35 Posted by TEAMCR@K
▷ 작성자 : 이택현 컨설턴트
▷ 편집자 : 니키 (ngnicky@a3sc.co.kr)


이택현 컨설턴트가 작년에 작성한 내용을 편집하였습니다.


Status bar spoofing

세부내용

1. status bar spoofing 취약점
onmouseover 태그를 이동하여 Status 바에 표시되지 않는 URL로 유도되도록 악의적인 목적으로 이용될 수 있습니다.
Internet Explorer에서는 모두 적용이 됩니다.

<html>
<body>
<a href="http://www.attacker.com" onmousemove="window.status='http://www.naver.c
om';" onmouseout="window.status='완료.';">click</a>
</body>
</html>



2. 구글 ads 와 조합
다음은 구글 ads 를 이용하여 타 사이트로 Rediretion 시키는 예제입니다.
<html>
<body>
<a href="http://www.google.com/pagead/iclk?sa=l&ai=Br3ycNQz5Q-fXBJGSiQLU0eDSAueHkArnhtWZAu-FmQWgjlkQAxgFKAg4AEDKEUiFOVD-4r2f-P____8B
oAGyqor_A8gBAZUCCapCCqkCxU7NLQH0sz4&amp;amp;num=5&adurl=http://www.a3sc.co.kr" onmousemove="window.status='http://www.citibank.co.kr
';" onmouseout="window.status'완료.';">http://www.citibank.co.kr</a>
</body></html>


세부내용
메일이나 게시판 등에 의해 공격 가능성이 존재합니다. 확인되지 않는 링크는 클릭을 하지 않길 바랍니다.
의심되는 경우에는 [소스보기]를 통해서 재확인을 하시길 바랍니다.


Copyright(c) 1998-2008 A3 Security ,LTD


Disclaimer
※ 현재 ㈜에이쓰리시큐리티에서 테스트 및 분석 중에 있으며, 이 문서는 계속 업데이트될 것입니다. 본 문서는 보안취약점으로 인한 피해를 최소화하는 데 도움이 되고자 작성되었으나, 본 문서에 포함된 대응방안의 유효성이나 기타 예상치 못한 시스템의 오작동 발생에 대하여서는 ㈜에이쓰리시큐리티에서는 일체의 책임을 지지 아니합니다.



Expression XSS

웹 어플리케이션 2008. 12. 23. 13:59 Posted by TEAMCR@K
▷ 작성자 : 박성현 컨설턴트
▷ 편집자 : 니키 (ngnicky@a3sc.co.kr)


2008년 1월 14일에 박성현 컨설턴트가 작성을 한 문서입니다. 현재는 군 복무를 하고 있습니다^^)



Expression XSS
요 약
최근 이슈가 되고 있는 XSS 취약점을 이용한 공격이 증가하고 지능화 될 수록 이에 대응하는 기술도 발전하고 있다. 예를들면, 웹 게시판에서 사용자가 악의적인 스크립트를 입력하지 못하도록 특수문자를 필터링 하거나, 특정 메소드의 키워드를 필터링 하는 경우가 대표적이다.


취약점 세부분석

1. 취약점 내용

Expression을 이용한 XSS 취약점이다. 최근 XSS를 이용하여 수많은 크래킹이 일어나고 있는데 이것을 보안하기 위해 보안하는 방법 역시 수많이 나오고 있다. 그런데 대부분 특수 키워드나 SCRIPT 사용을 금지하여 스크립트의 실행을 보안하려고 하지만 우회할 수 있는 방법이다.
HTML의 소스에 중요부분을 URL 인코딩하여 <style> 태그의 width를 이용하여 Expression에 스크립트를 실행 가능하도록 script에 대한 엘레먼트를 만들고 엘레먼트에 대한 주소를 악성JavaScript 파일로 지정하고 이 소스 부분을 인코딩하여 expression부분에 삽입을 한다.

다음은 Expression XSS 공격코드 이다.

 
다음은 exp.js 파일의 내용이다.


2. 공격 분석
HTML이나 스크립트 실행이 가능한 게시판이나 블로그에 expression을 이용한 악성 태그를 삽입 한다.


다음은 글을 쓴 후 글을 열람하게 될 경우 exp.js 파일이 실행되고 JavaScript에 담겨 있는 악성 스크립트가 실행되는 화면이다.




3. 위험 분석
대부분의 웹게시판들이 HTML이 허용 가능하게 해둘 경우 개인 사용자들의 쿠키 도용으로 인한 개인 사용자들의 개인정보나 피해가 매우 크다.


4. 취약점 내용(2)
바이두라는 중국의 구글이라는 홈페이지에서 expression을 이용한 XSS 웜이 발견되었다.해당 취약점도 위 취약점과 같은 방식이다.Expression에 주석을 이용하여 우회하는 방법을 사용하여 바이두 웜의 감염를 위하여 쿠키에 어느 특정문자열 값을 삽입하고 그 특정문자열을 이용하여 웜에 감염되었는지 확인 한 후 감염되지 않았다면 CSS 파일을 삽입하여 xmlhttprequest를 이용하여 요청을 한다.
이 웜에 감염되면 친구 등록되어 있는 사용자들에게 ajax로 사용자 모르게 임의의 글로 메일이 전송되고 사용자가 그 임의의 메일을 열람 할 경우 감염되고 사용자는 또 친구 등록되어 있는 사용자들에게 임의의 글로 메일이 ajax로 사용자 모르게 메일이 전송된다.
웜에 감염된 총 사용자들과 감염된 온라인 사용자들의 통계를 확인 할 수 있다.




관련사이트
본 취약점에 대한 추가적인 정보를 확인할 수 있는 관련 사이트는 다음과 같다.
 http://openmya.hacker.jp/hasegawa/security/expression.txt
 http://www.gnucitizen.org/xssdb/application.htm



대응 방안
XSS(Cross Site Scripting) 취약점과 동일한 대응방안이며, 아래와 같습니다.

XSS는 외부의 공격자가 정상적인 웹사이트를 악용하여 정상적인 웹사이트에 접속하려는 사용자로 하여금 공격자가 의도한 명령이나 작업을 수행하도록 하는 공격입니다. XSS를 이용한 공격 유형에는 사용자 쿠키 정보 추출을 통한 세션 가로채기 공격 등이 있습니다.
XSS 대응 방안은 사용자가 게시물을 업로드 할 수 있는 게시판의 경우와 사용자로부터 값을 입력 받는 경우로 나눌 수 있습니다.

● 사용자 게시판
운영상 필요한 경우 이외에는 사용자가 HTML을 사용하지 못하도록 하여야 합니다. 운영상 필요하여 HTML을 허용하여야 할 경우에는 스크립트 태그를 사용하지 못하도록 하여야 합니다. 사용자 태그뿐 아니라 본문에 “cookie” 나 “object”나 “document”와 특수한 문자열에 대한 체크를 하여 입력을 받지 못하도록 합니다.

● 파일의 argument로 값을 입력
HTML 태그가 입력되지 못하도록 하여야 합니다. 필터링 하여야 할 문자로는 <, >, & 등이 있고, 사용자 입력으로 원하는 값이 아닌 다른 모든 문자들을 필터링 하여야 합니다. 파일의 입력으로 받는 문자열일 경우에는 입력을 허용할 문자만을 선택하고 나머지는 필터링을 하거나 에러페이지로 이동하도록 합니다. 입력 값으로 <form>문을 작성할 때 다른 파일의 입력 값이 될 때와 같이 파일에 포함되어야만 할 때에는 입력 받은 문자는 URL Encoding을 하여 화면에 표시하도록 합니다.

● 입력 값 변환
<, >와 같은 문자들을 HTML에 표시하는 &lt; 와 &gt; 로 변환을 하여 저장을 하고 보여주는 방법이 존재합니다. 이 문자들이 HTML에서 <, >로 표시되기 때문에 화면에 나타날 때는 문제가 없습니다.


Copyright(c) 1998-2008 A3 Security ,LTD


Disclaimer
※ 현재 ㈜에이쓰리시큐리티에서 테스트 및 분석 중에 있으며, 이 문서는 계속 업데이트될 것입니다. 본 문서는 보안취약점으로 인한 피해를 최소화하는 데 도움이 되고자 작성되었으나, 본 문서에 포함된 대응방안의 유효성이나 기타 예상치 못한 시스템의 오작동 발생에 대하여서는 ㈜에이쓰리시큐리티에서는 일체의 책임을 지지 아니합니다.

Modular Universal XSS Worm

웹 어플리케이션 2008. 12. 19. 11:31 Posted by TEAMCR@K
▷ 작성자 : 니키 (ngnicky@a3sc.co.kr)
▷ 편집자 : 니키 (ngnicky@a3sc.co.kr)


문서 작성일 : 2008년 1월 10일
최종 수정일 : 2008년 12월 19일


Modular Universal XSS Worm


1. 개 요
Modular Universal XSS Worm이란 어떤 환경이나 장소에서든 사용할 수 있게 AJAX 기반으로 하나의 패키지(모듈)형식으로 해놓은 Worm 샘플 코드이다. XSS(Cross Site Scripting) 취약점이 존재하는 어떤 곳에서든 사용할 수 있으며, SQL Injection, DOM Session, Remote Shells, DoS(Denial of Service) 등의 공격 코드들이 포함되어 있다.
이 샘플들을 참고하여 실무에서 사용할 수 있는 공격코드를 생성하고, 연구를 통해서 영향도를 점검해 보았다.


2. 공격 시나리오
[SQL Injection Worm]
DBMS 관리자 권한으로 설정된 웹 서비스에서 XP_CmdShell을 사용하여 웹 서버에 아이디 및 패스워드(Random값)를 생성하는 스크립트를 만들었고, XSS(Cross Site Scripting) 취약점이 존재하는 게시판에 악성서버로 유도하는 스크립트를 작성하였다.

타 사용자들이 작성된 글을 확인할 경우, 자신도 모르게 웹 서비스에 악성 아이디와 패스워드를 생성하는 공격을 가하게 된다.
 

① 공격자는 사용자들이 많이 이용하는 게시판에 악성 스크립트를 작성한다.
② 관리자 및 사용자가 게시된 글을 읽는다.
③ 관리자 및 사용자는 악성 스크립트를 실행하여 웹 서비스에 SQL Injection공격을 가하게 된다.
④ 웹 서비스에는 수많은 아이디와 패스워드가 생성된다.(이를 악용하여 2차 공격 가능)


[DoS Worm 공격 시나리오]
특정 게시판 서비스에 공격자는 악성서버로 유도하는 스크립트를 작성하고, 타 사용자들이 작성된 글을 확인할 경우, 임의의 값만큼 웹 서비스를 Refresh (Denial of Service) 하게 된다. 사용자의 프로세스 부하 뿐만 아니라 웹 서비스의 네트워크 부하까지 영향을 미칠 수 있다.
 

⑤ 공격자는 사용자들이 많이 이용하는 게시판에 악성 스크립트를 작성한다.
⑥ 관리자 및 사용자가 게시된 글을 읽는다.
⑦ 관리자 및 사용자는 특정 웹 서비스를 임의의 값만큼 Refresh 하게 된다.
⑧ 웹 서비스 네트워크 부하가 발생하여 서비스가 중지될 가능성이 존재한다.


3. 세부 분석
universal xss worm 의 모듈로 사용되고 있는 p0ng.js 스크립트 파일의 주요 함수에 대해서 분석을 하였다.
모든 함수형식이 Prototype 형식으로 되어 있어서 리턴값의 형식이 모두 일치해야 사용이 가능하며, 모든 환경에서 가능하도록 구성되어 있다.

다음 그림은 toHex 함수로써, 모든 String 코드값을 ‘\\x’ 값을 앞에 추가하고, 16진수 형식으로 바꿈으로써 HEX 값 형태로 변환하여 반환해준다. Unicode, 8진수기법 등도 모듈에 포함되어 있다.
 


다음 그림은 POST 방식과, GET방식의 함수이다. POST형식에서는 Header값을 포함하여 특정 메시지를 전달하고, GET방식에서는 특정 URI값을 얻어와서 결과값을 반환시켜 준다.
 

다음 그림은 각 HTML 속성 함수들을 추가하는 부분이다. 데이터 및 특정 배열문자등을 받아 자동적으로 element, links, hidden filed 등의 속성을 추가하는 부분이다.
이 외에도 form, URL Query, event, cookie 관련 속성 추가 함수들이 모듈에 포함되어 있다.
 

다음 그림은 DoS(Denial of Service)의 공격 함수 부분이다. 함수를 호출하였을 경우 페이지를 800 (임의의 값)Refresh 시킴으로써, 수많은 사용자의 프로세스를 멈추게 할 수 있고, 또한 특정 웹 서비스를 중단시킬 수 있다.
 

다음 그림은 Remote Shell 공격과 관련된 변수 및 명령어들을 이용한 공격 함수이다. 배열에 있는 모든 문자들이 순차적으로 대입되면서 위에 언급한 gueryparts (URL 주소 구분 함수)을 이용하여 정형화 된 공격 함수이다.
 

다음 그림은 SQL Injection 취약점을 이용하여, XP_CmdShell 프로시저를 이용한 공격 함수이다. ftp 서비스를 이용하여 js파일에 특정 명령어 삽입후 ftp 를 접속하여 자동적으로 실행되도록 한다.



4. 대응 방안
XSS(Cross Site Scripting) 취약점과 동일한 대응방안이며, 아래와 같습니다.

XSS는 외부의 공격자가 정상적인 웹사이트를 악용하여 정상적인 웹사이트에 접속하려는 사용자로 하여금 공격자가 의도한 명령이나 작업을 수행하도록 하는 공격입니다. XSS를 이용한 공격 유형에는 사용자 쿠키 정보 추출을 통한 세션 가로채기 공격 등이 있습니다.
XSS 대응 방안은 사용자가 게시물을 업로드 할 수 있는 게시판의 경우와 사용자로부터 값을 입력 받는 경우로 나눌 수 있습니다.

● 사용자 게시판
운영상 필요한 경우 이외에는 사용자가 HTML을 사용하지 못하도록 하여야 합니다. 운영상 필요하여 HTML을 허용하여야 할 경우에는 스크립트 태그를 사용하지 못하도록 하여야 합니다. 사용자 태그뿐 아니라 본문에 “cookie” 나 “object”나 “document”와 특수한 문자열에 대한 체크를 하여 입력을 받지 못하도록 합니다.

● 파일의 argument로 값을 입력
HTML 태그가 입력되지 못하도록 하여야 합니다. 필터링 하여야 할 문자로는 <, >, & 등이 있고, 사용자 입력으로 원하는 값이 아닌 다른 모든 문자들을 필터링 하여야 합니다. 파일의 입력으로 받는 문자열일 경우에는 입력을 허용할 문자만을 선택하고 나머지는 필터링을 하거나 에러페이지로 이동하도록 합니다. 입력 값으로 <form>문을 작성할 때 다른 파일의 입력 값이 될 때와 같이 파일에 포함되어야만 할 때에는 입력 받은 문자는 URL Encoding을 하여 화면에 표시하도록 합니다.

● 입력 값 변환
<, >와 같은 문자들을 HTML에 표시하는 &lt; 와 &gt; 로 변환을 하여 저장을 하고 보여주는 방법이 존재합니다. 이 문자들이 HTML에서 <, >로 표시되기 때문에 화면에 나타날 때는 문제가 없습니다.

5. 참고 사이트
http://groups.google.com/group/ph4nt0m/msg/d75435c75fc6b81b