Now you can Subscribe using RSS

Submit your Email
Touch ME slider for IOS, Android and Desktop.
Hardware accelerated using CSS3 for supported iOS
and enjoy the Amazing Slide Experience.
20 Mar 2016
Responsive Design, that will make you blow away.
Hardware accelerated using CSS3 for supported iOS
and enjoy the Amazing Slide Experience.
20 Mar 2016
Flexible Display providing efficient compatibility.
Hardware accelerated using CSS3 for supported iOS
and enjoy the Amazing Slide Experience.
20 Mar 2016
Customize it to the deepist according to the needs.
Hardware accelerated using CSS3 for supported iOS
and enjoy the Amazing Slide Experience.
20 Mar 2016

2016년 11월 17일 목요일

XSS 공격 대응방어 이론

Unknown
XSS 공격을 대응하기위해 웹 방화벽(WAF)을 쓰지만 대부분 웹방화벽은 시그니쳐 기반의  XSS공격
만을 탐지하고 있다. 하지만 특정 문자열을 탐지하는 기술은 쉽게 우회가 가능하여 방어가 효과적이지
못함

그래서 웹개발자들이 일일이 수동적으로 위험한 문자를 필터링 및 인코딩하는 것은 현실적으로 불가능
하므로 취약점은 남는다.

1. 입.출력 값 검증 및 무효화

<,> 태크와 같은 위험한 요소들을 필터링하는 방법을 말하는데  이런 ASCII문자를 동일한 의미의 HTML
문자로 변경한다.






그래서 HTML 문자로 처리되면 인터프리터에서 특수한 의미를 갖지 않게 함으로써
사용자는 <>가 <>로 보이지만 HTML 문서에는 &lt;&gt;로 인식

하지만 이방법은 쉽게 encoding 방법을 통해 우회가 가능한데
예를들어 <script>문자를 hex encoding해서 보내게 되면 필터링하지못하게 되고
나중에 페이지에 위 문자가 노출될때 hex 인코딩이 풀려 <script>문자가 나타나게 된다.


2. 보안 라이브러리

위의 필터링을 보완하고자 보안 라이브러리를 쓰는데  OWASP ESAPI 라이브러리로 예를 들겟다.

OWASP는 포괄적인 애플리케이션 보안을 위해 웹 응용 취약점을 대응할 수 있는 오픈소스 ESAPI 라이브러리를 개발하여 제공한다. XSS 취약점을 예방하기 위해 API는 validator와 encoder가 있다. validator는 입력 값을 필터링하는 기능을 하고 있으며, encoder는 출력 값을 인코딩 및 디코딩 기능을 가지고 있다. 이 라이브러리는 자바, PHP, .NET, ASP, 자바스크립트 및 파이썬 등 다양한 애플리케이션 개발 언어를 지원하고 있다.


3. 브라우저 확장 프로그램

NoScript는 파이어폭스 등 모질라 기반의 browser에서 실행되는 오픈 소스 확장 프로그램으로, 화이트 리스트 기반으로 신뢰된 사이트의 자바스크립트, 플래쉬, 실버라이트 및 액티브X 등 동적 스크립트만 브라우저에서 실행하도록 하여 XSS 공격을 예방할 수 있다.

XSS 정의

Unknown
XSS는 크로스 사이트 스크립팅이라고 하는데
말그대로 스크립트를 가로질러 넣어버린다고 이해하자
그렇다고 자바스크립트에서만 발생한다고 생각하는데 그렇지도 않다.
VB스크립트, Active X 즉, 클라이언트에서 실행되는 동적 데이터를 생성하는 모든 언어에서 발생 가능함

VB 스크립트--MS가 개발한 active script 언어이다. 
Active X-- MS가 개발한 재사용가능한 객체지향적인 소프트웨어 구성요소 개발에 사용되는 기술
active X로 IE의 플러그인을 만들때 사용한다 대표적인 예로 active x control 있다.

XSS 공격은 공격자가 web application을 써서 악의적인 코드를 보내 end user에게 피해를 입힌다.
end user는 XSS공격의 유무여부에 확인이 불가하므로 공격자가 의도한 script를 실행시키게 된다

malicious한 코드는 그 브라우저또는 사용하는 사이트에 안에서 cookie나 session token 또는 sensitive한 정보에 접근 할수 있다. 또한 스크립트는 심지어 HTML page에 content를 삽입가능하다.

즉,  XSS의 가장 큰 특징은 Server가 아닌 client를 공격하는 것!

그래서 피해자의 쿠키를 훔쳐내서 그 사용자 인것처럼 행세할수 있고 다른 악의적인 사이트로 사용자를
이동시키거나 웹페이지를 조작해 사용자가 개인 정보를 입력하게 할수 있다.

그럼 왜 client 를 공격하냐?

server-side resources들은 server에 저장되있다. 그래서 서버를 운영하는 업체,기업 등등은 자신들의
자원을 지키려고 보안을 철저히한다. 허나 client-side에서 보면 보안 degree가 아주 낮다. 그래서 해커
(공격자)들은 공격하기 쉬운 client-side를 공격하는것이다.














client는 표준 웹 브라우저 되는데 예를 들어 IE, chrome 또는 Embedded browser가 될수도 있다.
(Embedded browser 의 예: email client, media players , e-book reader)

client 공격 후?

server는 공격자가 attack하기 원하는 counterpart이다. client에게 얻어 먹을게 없다 딱히.....
그래서 client의 cookie , session을 이용해 server application에 쉽게 접근하기도 하고
서버가 client의 버젼,주인,환경이 너무나 다양해서 patch 하기 힘들다.

Coprights @ 2016, Blogger Templates Designed By Templateism | Distributed By Blogger Templates20