OWASP Ruby on Rails Security

웹 어플리케이션 2009. 12. 10. 15:34 Posted by TEAMCR@K
Ruby on Rails 기반의 서비스를 하고 있다면 관련 문서를 보면 많은 도움이 될거라 판단됩니다.

참고 사이트 : http://www.owasp.org/index.php/Category:OWASP_Ruby_on_Rails_Security_Guide_V2

문서 다운로드(PDF파일) : https://www.owasp.org/images/8/89/Rails_Security_2.pdf

이전 포스팅에서 AntiXSS에 대해서 설명을 했습니다. (http://teamcrak.tistory.com/190)

라이브러리 사용 방법을 아래 URL에서 동영상과 함께 잘 설명해주고 있습니다.

홈페이지 : http://channel9.msdn.com/posts/Jossie/Using-the-Web-Protection-Library-WPL-CTP-Version/

Anil Revuru (RV), from Microsoft Information Security, walks us through the expansion of what used to be the Anti-XSS Library. This enhanced version of the library will introduce mitigation to other attacks like:
  • SQL Injection
  • Cross-Site Request Forgery (CSRF)
  • Setting Enforcement like SSL & HTTP_ONLY cookies
  • Security Runtime Engine for SQL Injection & XSS
  • Among others

Anti-Cross Site Scripting Library V3.1

웹 어플리케이션 2009. 12. 9. 10:06 Posted by TEAMCR@K

1.Anti-Cross Site Scripting Library 란?
The Microsoft Anti-Cross Site Scripting Library V3.1 (Anti-XSS V3.1) XSS취약점으로부터 ASP.NET기반의 웹 어플리케이션을 대응하는데 사용되는 인코딩 기능을 가지고 있는 라이브러리 이다. XSS 공격들을 대응하는데, 허용되는 패턴과 가능한 패턴들을 정의하여 잠재적인 위험성이 존재하는 패턴들에 대해서 인코딩된 결과 값으로 표시한다.


2.적용 방법
Step1. 출력값이 생성되는 ASP.NET 코드를 검사

XSS(Cross Site Scripting) 취약점은 출력물의 결과값에 따라서 발생한다. 그렇기 때문에 출력문을 처음 검사를 해야 한다. .NET 환경에서 일반적으로 사용되는 패턴은 “Response.Write” 와 “<%=” 이다.


Step2. 신뢰하지 않는 입력값이 결과값에 포함이 되어 있는지 결정

신뢰하지 않는 입력값이 아래와 같은 변수에 사용되었는지 판단한다.

 Application variables

 Cookies

 Databases

 Form fields

 Query String variables

 Session variables


Step3. Encoding 메소드 사용할지 결정

아래 메소드 표를 참고하여 신뢰하지 않는 입력값에 따라서 메소드를 선택한다. 예를 들면 HTML 속성에 값이 입력 되었다면, Microsoft.Security.Application. HtmlAttributeEncode 메소드를 사용하고, Javascript 안에 값이 입력 된다면, Microsoft.Security.Application.JavaScriptEncode 메소드를 사용한다.

   // 취약한 소스 예제
  // HTML 속성값에 신뢰하지 않는 값이 입력될 경우
  Literal1.Text = ”<hr size='[untrusted input here]'></hr>”;

  // 수정된 소스 예제
  Literal1.Text = ”<hr size='+Microsoft.Security.Application.AntiXss.HtmlAttributeEncode([untrusted input here])+'></hr>”;



다음은 Encoding 메소드 사용시 관련된 내용 및 패턴 예제입니다.

 Encoding 메소드  관련 내용  패턴 예제
 HtmlEncode(String)  HTML 속성 이외에 신뢰하지 않는 입력값이 HTML출력에 사용할  <a href=”http://www.contoso.com”>Click Here [Untrusted input]</a>
 HtmlAttributeEncode(String)  신뢰하지 않는 입력값이 HTML 속성에 사용할  <hr noshade size=[Untrusted input]>
 JavaScriptEncode(String)  신뢰하지 않는 입력값이 Javascript 문에 사용할  

<script type=”text/javascript”>

[Untrusted input]

</script>
 UrlEncode(String)  신뢰하지 않는 입력값이 URL 사용할 <a href=”http://search.msn.com/results.aspx?q=[Untrusted input]”>Click Here!</a>
 VisualBasicScriptEncode(String)  신뢰하지 않는 입력값이 VBScript 문에 사용할  <script type=”text/vbscript” language=”vbscript”>

[Untrusted input]

</script>
 XmlEncode(String)  XML 속성 이외에 신뢰하지 않는 입력값이 XML출력에 사용할시  <xml_tag>[Untrusted input]</xml_tag>
 XmlAttributeEncode(String)  신뢰하지 않는 입력값이 XML 속성에 사용할  <xml_tag attribute=[Untrusted input]>Some Text</xml_tag>


Step4. 출력값 인코딩 구현

출력값에 인코딩을 적용할 시에 주의할 점이 두개 있다.
1) 출력물에는 한번만 구현 해야 한다.
2) 아래 예제와 같이 입력값을 저장하는 변수에 구현하는 것이 아니라, 실제 출력되는 부분에 구현하라.


// 잘못 구현한 예제
  protected void Button1_Click(object sender, EventArgs e)
  {
    // Read input
    String Input = TextBox1.Text;
    // Encode untrusted input
    Input = Microsoft.Security.Application.AntiXss.HtmlEncode(Input);
   
    // Process input
    ...
   
    // Write Output
    Response.Write(”The input you gave was” + Input );

   
  }

  // 잘 구현한 예제
  protected void Button1_Click(object sender, EventArgs e)
  {
    // Read input
    String Input = TextBox1.Text;

    // Process input
    ...
   
    // Encode untrusted input and write output
    Response.Write(”The input you gave was” + Microsoft.Security.Application.AntiXss.HtmlEncode(Input));

   
  }

 




상세내역을 보실려면 아래 "더보기"로 펼치시면 됩니다.



3.참고 자료
가. MSDN 블로그
http://blogs.msdn.com/sdl/archive/2009/09/23/new-and-improved-antixss-3-1-now-with-sanitization.aspx

나. MSDN 다운로드 페이지
http://www.microsoft.com/downloads/thankyou.aspx?familyId=051ee83c-5ccf-48ed-8463-02f56a6bfc09&displayLang=en

본 내용은 MSDN 을 참고하여 내용을 번역 및 추가하였습니다.

일반적으로 아직은 Version 2.0 기준으로 사용되기 때문에 해당 자료들을 참고해서 대응을 해주시면 좋을듯 합니다.

소스기반에서 대응을 하는 것보단 .NET에서 지원되고 있는 모듈들을 이용해서 대응하는게 많습니다. 마이크로 소프트 정신을 생각하면 이게 아마 더 효율적이라 해당되고요.

Security Guidelines: ASP.NET 2.0 : http://msdn.microsoft.com/en-us/library/ms998258.aspx (상세설명)

Security Checklist: ASP.NET 2.0 : http://msdn.microsoft.com/en-us/library/ms998249.aspx



OWASP TOP 10 - 2010 RC버전

웹 어플리케이션 2009. 11. 17. 22:18 Posted by TEAMCR@K
OWASP TOP 10 - 2010 RC버전이 나왔습니다.

2007년 기준에서 2가지의 항목이 수정되었습니다.

PDF 다운로드 : http://www.owasp.org/index.php/File:OWASP_T10_-_2010_rc1.pdf

2007년 (A3) Malicios File Execution 은 PHP와 관련되어서 많이 정의를 했는데, PHP에서 원천적으로 함수에서 대응을 하고 있어 많이 발생하지 않을거라 판단되어 2010년 기준에 제외되었습니다.

2007년 (A6) Information Leakage and Improper Error Handling 은 아직도 많이 발생하고 있지만, 위험 영향도에서는 심각하지 않다라고 판단을 한거 같습니다.

새로 추가된 사항은 다음 2가지 입니다.

(A6) Security Misconfiguration
: 웹 서버, WAS 등의 기본 설정, 관리자 페이지에 대한 접근 및 기본 계정 사용 등, 최신 취약점 미패치 등의 항목이 해당됩니다.
(A8) Unvalidated Redirects and Forwards
: URL 입력값 (url, return url 등등) 을 이용한 악성 서버 유도 등의 항목이 해당됩니다.

Javascript를 17시간에 마스터 할 수 있는 동영상 프리젠테이션 발표입니다.

영어를 조금(??) 할 수 있다면 굉장히 도움이 될건데요..

http://net.tutsplus.com/articles/web-roundups/17-hours-of-javascript-from-the-masters/
.NET 환경에서의 SQL Injection 취약점을 대응방안하는 한 예제 동영상 파일입니다.

관련 관리자 및 개발자 분들께서는 참고하시면 좋은 자료가 될거 같습니다.

출처 : http://www.asp.net/learn/security-videos/video-8718.aspx

Install Silverlight

.NET 환경에서 웹 어플리케이션 보안 개발시 참고할만한 사이트 들입니다. 대부분 MSDN에서 제공하고 있으며, 관련된 상황에 맞게 적용하시면 될거 같습니다.

Validate all untrusted input
http://msdn.microsoft.com/en-us/library/ms972961.aspx

Encode any Web response data that could contain user or other untrusted input
http://msdn.microsoft.com/en-us/library/ms998274.aspx

Use built-in ASP.NET protection via the ValidateRequest option
http://msdn.microsoft.com/en-us/library/system.web.configuration.pagessection.validaterequest.aspx

Use the System.Web.HttpCookie.HttpOnly property
http://msdn.microsoft.com/en-us/library/system.web.httpcookie.httponly.aspx

Use the <frame>, <iframe> IE6 and above security attribute
http://msdn.microsoft.com/en-us/library/ms534622.aspx

Use the Microsoft Anti-Cross Site Scripting Library (AntiXSS)
http://www.codeplex.com/antixss

Developer Encoding Libraries:
.NET System.Web.HttpUtility
http://msdn.microsoft.com/en-us/library/system.web.httputility.aspx 

Microsoft Anti-Cross Site Scripting Library
http://msdn.microsoft.com/en-us/library/aa973813.aspx 

Reducing Exposure to Cross-Site Scripting Attacks using ASP.NET
http://msdn.microsoft.com/en-us/library/ms998274.aspx


참고 사이트)
http://www.microsoft.com/downloads/details.aspx?FamilyID=0fcba3c7-bc30-47b0-a2f8-2e702720998a&DisplayLang=en

웹 인증 및 IP 기반 접근 제어 메커니즘 우회 기법에 대한 연구

(XSS_SHELL, XSS_TUNELING 응용기법)


kerz@a3security.com
(A.K.A k3rz)


※ 본 연구 문서는 신규 취약점 또는 보안 기술 우회 기법에 관한 문서로써 악용될 우려가 있는 상세 공격 코드 및 내용은 제한합니다.


I. 웹 인증 및 IP 기반 접근 제어 메커니즘 우회 기법 개요

1. 개 요

"웹 인증 및 IP 기반 접근 제어 메커니즘 우회 기법"은 웹 기반 환경에서 가장 보편적으로 많이 사용되고 있는 "아이디", "비밀번호" 기반의 인증 체계와 IP 기반의 네트워크 접근 제어 방식을 우회, 무력화 시키는 기법이다.
본 기법은 웹 취약점과 네트워크 터널링 기술을 응용하여 다양한 웹 기반 환경하에서 적용이 가능하다.
 


2. 공격유형: 코드 실행, 원격 접속

3. 공격영향도: 높음

4. 시스템 환경: Apache, IIS 등 HTML이 실행되는 웹 서버



II.. 위험 분석

1. 위험 분석
XSS 취약점은 국내는 물론 해외에서도 웹 서버에서 보편적으로 가장 많이 발견되는 취약점이다.
이러한 XSS 취약점이 매개체가 되어, 쿠키 세션 수집, 리버스 채널, 임의의 명령 실행 등이 복합적으로 연계가 되며, 이로 인해 관리자 권한 획득, 내부 정보 및 개인 정보 유출이 가능하다.
또한 네트워크 터널링 기술을 이용하여 방화벽 우회를 통한 외부망에서 내부망으로의 침입 및 IP 접근 제어 우회가 가능하다.




III. 대응 방안

1. 입력값 검증
XSS SHELL, XSS TUNNELING 또한 XSS가 근본이 되는 기술이기 때문에 근본적으로 XSS에 대한 대응으로 보안성을 높일 수 있습니다. 간단하게 입력 값 변환으로 <, > 와 같은 문자들을 HTML에 표시하는 &lt; &gt; 로 변환을 하여 저장을 하고 보여주는 방법으로 막을 수 있다. 그외 다음과 같은 추가적인 대응방안이 필요하다.
- 자산 중요도가 높은 주요 서버는 인증서와 같은 강화된 인증 체계 사용
- 네트워크 Outbound 필터링 등


IV. 세부내역


1. 웹 인증 공격(XSS_SHELL) 시나리오


(1) XSS 취약점 및 파일업로드 취약점을 통한 스크립트 삽입
(2) 해당 서비스에 사용자들 쿠키 세션 수집
(3) 리버스 채널
(4) 임의의 명령 실행 및 사용자 정보 획득


다음은 피해자의 브라우저에 alert 명령 실행된 화면이다.

                                                           [그림 1] alert 명령 실행 성공




2. IP 기반 접근 제어 우회 (XSS Tunneling)시나리오

(1) XSS 취약점 및 파일업로드 취약점을 통한 스크립트 삽입
(2) 해당 서비스에 사용자들 쿠키 세션 수집
(3) 리버스 채널
(4) 공격자 서버에 사용자 연결 (터널링)
(5) 관리자 페이지 및 내부 시스템 접근

 
다음은 XSS_TUNNELING을 통해 피해자가 방문한 URL을 실시간으로 확인한 화면이다.


                                                 [그림 2]  피해자가 방문한 URL 확인




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

웹 어플리케이션 취약점에 대한 1시간 20분정도의 외국 세미나 동영상입니다.

영어로 발표하고 있지만, 간단한 내용이라 충분히 이해하실거라 생각합니다---;);

원본 URL ) http://www.irongeek.com/i.php?page=videos/rohyt-belani-bad-cocktail-application-hacks-spear-phishing

비디오 파일 다운로드 가능 :
http://blip.tv/file/get/Irongeek-RohytBelaniPhishingAndWebappAttacksCleaned728.avi