Web (22) 썸네일형 리스트형 웹 보안 (5, 6주차 - PHP 실습) 보호되어 있는 글입니다. [Dreamhack] csrf-2 보호되어 있는 글입니다. [Dreamhack] csrf-1 목표 : CSRF를 통해 관리자 계정으로 특정 기능을 실행시키기 /vuln - 이용자가 입력한 param 파라미터 값을 출력함 - 이 때, 이용자의 파라미터에 frame, script, on 세 가지의 악성 키워드가 포함되어 있으면 *로 치환함 -> XSS가 발생할 수 있는 키워드를 필터링함 -> 취약점) 하지만, 필터링 키워드 이외의 꺽쇠 를 포함한 다른 키워드와 태그는 사용 가능하므로 CSRF 공격 가능 /memo - 이용자가 메모를 남길 수 있으며, 작성한 메모를 출력함 - 이용자가 전달한 memo 파라미터 값을 기록하고, render_template 함수를 통해 출력함 /admin/notice_flag - 메모에 FLAG를 작성하는 기능. - 이 기능은 로컬호스트(127.0.0.1)에서 접속해야 .. [Dreamhack] Web Hacking STAGE 5 (CSRF) ClientSide : CSRF 서명을 신중하게 관리 = 중요한 웹 서비스의 쿠키를 잘 보관 Cross Site Request Forgery (사이트 간 요청 위조, CSRF) - 이용자의 의지와는 무관하게 공격자가 의도한 행위를 특정 웹사이트에 요청하게 만드는 공격 - 임의 이용자의 권한으로 임의 주소에 HTTP 요청을 보낼 수 있는 취약점 ex) 웹 페이지를 만들어 이용자의 입력을 유도한 후, 이용자가 값을 입력하면 이를 중요 사이트 등으로 전송하여 마치 이용자가 동의한 것 같은 요청을 발생시킴 ↑ CSRF 취약점이 존재하는 예제 코드 ↑ - 송금 과정에서 계좌 비밀번호, OTP 등을 사용하지 않았음. CSRF 공격 성공 조건 공격자가 작성한 악성 스크립트를 이용자가 실행해야 한다. -> 메일이나, .. [Dreamhack] xss-2 xss-1 문제와 유사해보이지만, vuln(xss) page를 확인해보면, xss-1과 달리 파라미터에 전달된 script가 실행되지 않는다. xss-1과 비교해보면, xss-2에서는 render_template을 사용하고 있어 XSS가 발생하지 않는다는 것을 알 수 있다. memo 페이지는 xss-1과 다른 점이 없어 보인다. flag 페이지도 xss-1과 다른 점이 없어 보인다. 따라서, XSS를 우회할 수 있는 방법을 찾아야 한다. 와 같은 방법이 있는데, 우선 vuln(xss) page를 우회해보자. 태그가 아닌 를 사용한 결과, 우회할 수 있었다. 를 사용하여 아래와 같은 익스플로잇 코드를 입력한 결과, 플래그를 얻을 수 있었다. 참고 https://lrtk.tistory.com/63?categ.. [Dreamhack] Web Hacking STAGE 4 (XSS) STAGE 4. Cross-Site-Scripting (XSS) Cross Site Scripting (XSS) - 클라이언트 사이드 취약점 중 하나 - 공격자가 웹 리소스에 악성 스크립트를 삽입해 이용자의 웹 브라우저에서 해당 스크립트를 실행할 수 있음 - 특정 계정의 세션 정보를 탈취하고 해당 계정으로 임의의 기능을 수행할 수 있음 - 쿠키 탈취에 많이 사용됨 XSS 발생 예시 - 이용자가 삽입한 내용을 출력하는 기능에서 발생 XSS 발생 종류 1) Stored XSS : 악성 스크립트가 서버 내에 존재, 이용자가 저장된 악성 스크립트를 조회할 때 발생 ex) 게시물과 댓글에 악성 스크립트를 포함해 업로드하여 이용자가 읽도록 유도 2) Reflected XSS : 악성 스크립트가 이용자 요청 내에 존.. [Dreamhack] Web Hacking STAGE 3 STAGE 3. Background: Cookie & Session 쿠키 🍪 HTTP 프로토콜 특징 1) Connectionless : 하나의 요청에 하나의 응답을 한 후 연결을 종료하는 것 2) Stateless : 통신이 끝난 후 상태 정보를 저장하지 않는 것 이러한 특성을 갖는 HTTP에서 상태를 유지하기 위해 쿠키가 탄생함. 쿠키 : Key와 Value로 이뤄진 일종의 단위로, 서버가 클라이언트에게 쿠키를 발급하면, 클라이언트는 서버에 요청을 보낼 때마다 쿠키를 같이 전송함. 서버는 클라이언트의 요청에 포함된 쿠키를 확인해 클라이언트를 구분할 수 있음. : HTTP에서 상태를 유지하기 위해 사용하는 Key-Value 형태의 값 쿠키의 용도 1) 클라이언트의 정보 기록 ex) 웹 서버는 각 클라이언.. [Webhacking.kr] old-05 Login 버튼을 누르면 아래와 같이 이동하고, 어떻게든 login 해보려고 해도 Wrong password 라는 문구만 뜨게 된다. Join 버튼을 누르면 아래와 같은 경고창이 뜬다. 위에서 본 각각의 페이지 소스를 확인해봐도 별로 눈에 띄는 건 없었다. URL로 접근하기 위해 아까 전에 확인한 로그인 페이지의 URL을 살펴보았다. 뒷부분의 login.php 를 지우고 URL 접속을 시도해본 결과, 가능했다 !! 아까 경고창만 뜨고 접속하지 못한 join.php 를 클릭해보았다. 그 결과, access_denied 라는 경고창과 함께 빈 화면이 나왔고, 페이지 소스를 확인해보았다. 아래와 같이 복잡해보이는 소스코드를 볼 수 있었다. 우선, 무작정 콘솔 창에 몇 개의 변수를 확인해봤고, 대충 쿠키 값이 .. 이전 1 2 3 다음