반응형

1. XSS (Cross-site Scripting)

 : 웹 사이트에서 입력 데이터가 적절한 값인지 검사하지 않고 웹 브라우저를 실행할 때 발생

 - 종류 : Stored XSS, Reflected XSS, Dom Based Scripting

 - 보안상 가장 위협적인 것은 Stored XSS

 - 서버에 전달되는 모든 변수 값에서 발생 가능

 - 목적 : 공격자가 세션을 탈취하여 다른 사용자의 권한을 취득 / 악성코드 배포 / 피싱하여 사용자의 중요한 정보 획득


1.1 Stored XSS

 - 악의적인 스크립트 코드가 웹이 입력되면서 데이터데이스에 저장. 

 - 불특정 다수의 사용자가 공격자의 게시물에 접근하면 지속적으로 악의적인 스크립트가 실행되기 때문에 위협 영향도가 높음

 - 범죄자는 이를 이용하여 악성코드를 배포하는 데 많은 비중을 두고 있음 (최근에는 랜섬웨어가 많이 설치됨)


1.2 Reflected XSS

 - 웹 페이지 URL에 존재하는 파라미터에 악의적인 스크립트 코드를 입력하여 사용자가 URL을 클릭하면 파라미터에 입력한 악성 스크립트 코드가 실행되게 하는 공격

 - 이 취약점은 사용자들이 알아채기 쉽고, 일부 브라우저에서 악의적인 스크립트에 대응하고 있기 때문에 Stored XSS에 비해 위협이 적은 편


* 작은따옴표가 필터링되어 있을 때 (= addslashes 함수로 필터링할 경우)

 - String.fromCharCode 함수 이용

 ex) <script>alert(String.fromCharCode(83,117,99,99,101,101,100,33))</script>

 => Succeed!를 alert 해줌


 - String.fromCharCode 함수 = 자바 스크립트 내장 함수로, 인자로 받는 아스키코드나 유니코드를 문자열로 반환

 - 만약 htmlspecialchars 함수로 필터링되어있으면 < 와 > 도 필터링이 되어 위의 공격은 실패한다.


* JSON의 경우 페이지 자체에서 스크립트 코드를 사용하는 경우가 있다. 이럴 때

</script><script>alert('Succeed');</script>

코드를 이용해보면 XSS 취약점이 존재하는지 알 수 있다.


* 이미지 태그를 활용한 XSS

 - 이미지 태그에서는 태그에 입력한 주소에 이미지가 존재하지 않을 경우 'onError' 속성으로 이미지를 대체

 ex) <img src=x onerror=alert('Success')>


* alert 함수가 필터링되어 있는 경우

 - eval 함수를 이용

 - eval 함수 : 수식 형태로 된 문자열을 실수로 반환하는 자바스크립트 내장함수

 - 작은따옴표에 의한 값은 보통 텍스트 문자로 처리되지만, eval 함수를 사용하면 PHP 코드로 해석하고 실행한다.


* a 태그(anchor) 태그를 이용하는 경우

 - XSS에 취약하다면 onClick나 onmouseover 등의 이벤트 속성을 이용하여 공격할 수 있다.

 - 입력하는 부분이 a 태그의 일부분으로 들어갈 경우

 0 onmouseover=alert('Success") 0

로 공격을 했을 때 만약 해당 하이퍼링크 부분에 마우스를 올렸을 때 경고창이 뜬다면 취약한 것이다. (이 때 양쪽에 있는 0은 문법 오류를 막기 위함.. 상황에 따라 앞만 넣을수도 뒤에만 넣을 수도 있다)


* phpMyAdmin 취약점 (http://www.cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2010-4480)

 - Version 3.3.8.1 또는 3.4.0-beta1 이전의 버전을 가진 PhpMyAdmin의 error.php 파일에 취약점 존재

 - '@' 문자를 포함하여 조작된 BBCode(Bulletin Board Code) 태그를 통하여 XSS가 가능

ex) http://10.10.10.4/phpmyadmin/error.php?type=bugged!&error=[a@http://10.10.10.4/bWAPP/bad.html@]Click Here[/a]


 - type : 오류의 종류

 - error : BBcode 태그 -> @를 이용하여 [a@url@page] 형태로 태그 조작

 - @page는 지정하지 않거나 문자 값을 입력(예시에서는 지정하지 않았음)


* BBCode ?

 = 자바 스크립트 및 HTML 인젝션 공격을 방어하기 위하여 만들어짐

 =  BBCode에서 자바스크립트나 HTML로 변환할 때 XSS 공격이 가능한 취약점이 발견


* XSS 공격 순서

1. <script>alert('Success');</script>

2. <script>alert(document.cookie)</script> -> 성공한다면 '가 막혀있는 것

3. <script>alert(String.fromCharCode(83,117,99,99,101,115,115))</script>


* PHP_SELF를 이용한 취약점

 - PHP_SELF = 웹 서버가 실행 중인 현재 웹 페이지의 경로를 나타내며 $_SERVER에 속하는 속성 -> $_SERVER['PHP_SELF'] 형태로 사용

 - $_SERVER['PHP_SELF']는 URL을 웹 페이지의 경로로 인식하고 받아들이기 때문에 URL에 악성 스크립트 코드를 입력할 경우 XSS에 취약

ex) http://10.10.10.4/vul.php/"/><script>alert("Success");</script>

 -> "/>를 통해 HTML 폼 태그를 강제로 닫은 후 스크립트 입력

반응형

'Hacking > Web' 카테고리의 다른 글

A6. 민감 데이터 노출  (0) 2017.02.16
매직해시(Magic Hashes) 취약점  (0) 2017.02.16
addslashes(), mysql_real_escape_string() 우회  (9) 2017.02.01
A1-injection  (0) 2017.02.01
해킹맛보기 웹 해킹 파트 정리  (0) 2017.01.08
블로그 이미지

rootable

,