1.client side language
-HTML,javascript,...
2.server sied language
-PHP
3.SQL
취약점 공부하기에 앞서
1).취약점
-모든 입력에 대해서 테스트:GET,POST,COOKIE
! 대부분의 보안은 많은 시간을 필요로 한다.
! 웹 해킹의 기본은 소스 보기
2). 대응책
-전통적인 보안 기법: 방화벽,보안 솔루션(백신,..),모의해킹,보안패치
-효율적인 보안 기법:시큐어 코딩 -> 현실적인 문제
! 대부분의 취약점은 이미 존재하는 상태에서 배포
! 이전까지는 보안 패치를 통해서 대처 ->발견되는 취약점의 속도를 패치가 따라잡지 못한다.
1.XSS(Cross site Scripting)
- 웹 어플리케이션에서 사용자 입력값에 대한 필터링이 제대로 이루어지지 않을 경우, 공격자가 입력 가능한 폼(웹 브라우저 URL 또는 게시판 등)에 악의적인 스크립트를 삽입, 해당 스크립트가 희생자 측에서 동작하도록 하여 악의적인 행위를 수행하는 취약점
- 공격자는 취약점을 이용하여 사용자의 개인정보 및 쿠키정보 탈취, 악성코드 감염, 웹 페이지 변조 등의 공격을 수행
-다른 기법과 큰 차이점은 공격의 대상이 Server이 아닌 Client
1) Stored XSS(저장형 XSS)
- 공격자가 취약한 웹서버에 악성 스크립트를 저장(게시판 등을 통해 DB에 저장)해 놓으면 희생자가 해당 자료를 요청(게시물 클릭 등) 할 때 해당 악성 스크립트가 삽입된 응답 페이지가 전달되어 클라이언트 측에서 동작하는 방식
이런식으로 글을 쓸때 내용에 <script> alert('XSS') </script> 스크립트를 삽입시켜주고 스크립트가 실행되는지 확인해야한다
alert으로 xss가 출력되는것을 보아 스크립트가 실행되는걸 볼수있다
여기서는 xss 기법을 확인해 보고자 alert 스크립트를 사용하였지만
만약 악성 스크립트가 삽입되면 당하는 사람은 스크립트가 실행되는지도 모르고 당할수가 있다
이걸 확인할려면 들어가는 페이지마다 소스보기를 통해 스크립트를 확인해야하는데 이건 현실적으로 불가능한 방식이라
XSS는 간단하면서도 강력한 공격 기법이다
제목에 스크립트를 삽입해도 실행이 가능하다
zboard 게시판에서는 쪽지 기능에서 제목과 내용 모두 공격이 가능하다
댓글도 마찬가지로 가능하다
2) Reflected XSS
- 외부에 있는 악성 스크립트(외부 사이트 또는 이메일 등에 악성 스크립트가 포함된 링크 등)가 희생자 액션에 의해 취약한 웹서버로 전달되고, 웹서버의 응답 페이지에 해당 악성 스크립트가 삽입되어(DB에 저장되는 것이 아님) 희생자 측에서 동작하는 방식
-일부 브라우저에서 악의적인 스크립트에 대응하고 있기 때문에 저장된XSS보다 위협이 적은 편이다.
하지만 악성서버로 유도되면 저장된 XSS와 위협은 동일하므로 입려값 검증이 꼭 필요하다
인터넷 옵션에서 XSS 체크를 풀어주어야 확인이 가능하다
"일부 브라우저에서 악의적인 스크립트에 대응하고 있기 때문에" 위에서 언급한 내용처럼 대응을 하고있다.
그치만 완벽한 방법은 아니고 얼마든지 우회가 가능하다
ㅇ
조인버튼을 클릭하고
check ID 버튼을 클릭하면
이런식으로 user_id를 GET 방식으로 전달할수있는걸 볼수있다
이걸 조작을 통해서 user_id에 <script>alert('XSS')</script> 이런 스크립트를 삽입 할수있다
공격이 가능하다
* 대응책
1) 사용자의 입력값에 대한 검증은 반드시 "서버" 단에서 해야 한다. 클라이언트 단에서 검증을 수행하더라도 이는 공격자가 웹 프락스 툴을 이용해 쉽게 우회 가능하기 때문에 서버 단에서 추가적인 검증이 반드시 필요하다.
2) 사용자 입력 문자열에서 HTML 코드로 인식될 수 있는 특수문자를 일반문자로 치환하여 처리한다.
3) 게시판 등에서 HTML 태크를 허용해야만 하는 경우라면 HTML 태그 화이트 리스트를 선정한 후, 해당 태그만 허용하는 방식을 적용한다.
소스 보기를 통해
action값이 write_ok.php로 전달되는걸 확인할수 있고 그 이름은 name 속성을 통해서 전달되는걸 볼수있다
따라서 write_ok.php 파일을 열어서 <script>가 발생하면 실행되지 않는 코딩을 추가해주면 방어가 가능하다
이게 시큐어 코딩 이다
스크립트를 추가하면 방어가 가능하다
'웹 해킹' 카테고리의 다른 글
[Web해킹] 서버 측 언어를 이용한 취약점+웹쉘/바인드쉘/리버스 쉘 (0) | 2017.12.05 |
---|---|
[Web해킹] CSRF(Cross Site Request Forgery)) (0) | 2017.12.01 |
[Web해킹] 제로보드 설치하기 (0) | 2017.11.30 |
[Web해킹] 게시판 제작하기 (게시판 글 보여주기,업데이트,삭제)-마무리 (0) | 2017.11.29 |
[Web해킹] 게시판 제작하기 (게시판 글 작성 ) (0) | 2017.11.29 |