Web 22

[Dreamhack] csrf-1

목표 : CSRF를 통해 관리자 계정으로 특정 기능을 실행시키기 /vuln - 이용자가 입력한 param 파라미터 값을 출력함 - 이 때, 이용자의 파라미터에 frame, script, on 세 가지의 악성 키워드가 포함되어 있으면 *로 치환함 -> XSS가 발생할 수 있는 키워드를 필터링함 -> 취약점) 하지만, 필터링 키워드 이외의 꺽쇠 를 포함한 다른 키워드와 태그는 사용 가능하므로 CSRF 공격 가능 /memo - 이용자가 메모를 남길 수 있으며, 작성한 메모를 출력함 - 이용자가 전달한 memo 파라미터 값을 기록하고, render_template 함수를 통해 출력함 /admin/notice_flag - 메모에 FLAG를 작성하는 기능. - 이 기능은 로컬호스트(127.0.0.1)에서 접속해야 ..

Web 2022.02.13

[Dreamhack] Web Hacking STAGE 5 (CSRF)

ClientSide : CSRF 서명을 신중하게 관리 = 중요한 웹 서비스의 쿠키를 잘 보관 Cross Site Request Forgery (사이트 간 요청 위조, CSRF) - 이용자의 의지와는 무관하게 공격자가 의도한 행위를 특정 웹사이트에 요청하게 만드는 공격 - 임의 이용자의 권한으로 임의 주소에 HTTP 요청을 보낼 수 있는 취약점 ex) 웹 페이지를 만들어 이용자의 입력을 유도한 후, 이용자가 값을 입력하면 이를 중요 사이트 등으로 전송하여 마치 이용자가 동의한 것 같은 요청을 발생시킴 ↑ CSRF 취약점이 존재하는 예제 코드 ↑ - 송금 과정에서 계좌 비밀번호, OTP 등을 사용하지 않았음. CSRF 공격 성공 조건 공격자가 작성한 악성 스크립트를 이용자가 실행해야 한다. -> 메일이나, ..

Web 2022.02.07

[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..

Web 2022.02.06

[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 : 악성 스크립트가 이용자 요청 내에 존..

Web 2022.01.30

[Dreamhack] Web Hacking STAGE 3

STAGE 3. Background: Cookie & Session 쿠키 🍪 HTTP 프로토콜 특징 1) Connectionless : 하나의 요청에 하나의 응답을 한 후 연결을 종료하는 것 2) Stateless : 통신이 끝난 후 상태 정보를 저장하지 않는 것 이러한 특성을 갖는 HTTP에서 상태를 유지하기 위해 쿠키가 탄생함. 쿠키 : Key와 Value로 이뤄진 일종의 단위로, 서버가 클라이언트에게 쿠키를 발급하면, 클라이언트는 서버에 요청을 보낼 때마다 쿠키를 같이 전송함. 서버는 클라이언트의 요청에 포함된 쿠키를 확인해 클라이언트를 구분할 수 있음. : HTTP에서 상태를 유지하기 위해 사용하는 Key-Value 형태의 값 쿠키의 용도 1) 클라이언트의 정보 기록 ex) 웹 서버는 각 클라이언..

Web 2022.01.23

[Webhacking.kr] old-05

Login 버튼을 누르면 아래와 같이 이동하고, 어떻게든 login 해보려고 해도 Wrong password 라는 문구만 뜨게 된다. Join 버튼을 누르면 아래와 같은 경고창이 뜬다. 위에서 본 각각의 페이지 소스를 확인해봐도 별로 눈에 띄는 건 없었다. URL로 접근하기 위해 아까 전에 확인한 로그인 페이지의 URL을 살펴보았다. 뒷부분의 login.php 를 지우고 URL 접속을 시도해본 결과, 가능했다 !! 아까 경고창만 뜨고 접속하지 못한 join.php 를 클릭해보았다. 그 결과, access_denied 라는 경고창과 함께 빈 화면이 나왔고, 페이지 소스를 확인해보았다. 아래와 같이 복잡해보이는 소스코드를 볼 수 있었다. 우선, 무작정 콘솔 창에 몇 개의 변수를 확인해봤고, 대충 쿠키 값이 ..

Web/wargame 2022.01.16

[Dreamhack] Web Hacking STAGE 2

STAGE 2. Background: HTTP/HTTPS 인코딩 표준 1) 아스키 - 알파벳과 특수 문자 등을 표현함 ex) 1000001을 아스키로 변환하면 A가 됨 2) 유니코드 - 모든 언어의 문자를 하나의 표준에 담겠다는 목표로 제정되었음 - 한 문자는 최대 32비트로 표현되어 약 42억개를 표현 가능함 - 최근에는 각종 이모지들도 유니코드에 포함되고 있음 프로토콜 - 규격화된 상호작용에 적용되는 약속 - 각 통신 주체가 교환하는 데이터를 명확히 해석할 수 있도록 문법(syntax)을 포함함 - 표준 통신 프로토콜의 예) TCP/IP, HTTP, FTP 등 HTTP(Hyper Text Transfer Protocol) - 서버와 클라이언트의 데이터 교환을 요청과 응답 형식으로 정의한 프로토콜 - ..

Web 2022.01.15

[Webhacking.kr] old-25

소스코드를 봐도 별 내용이 없고, hello.php가 실행된 것으로 보인다. flag.php와 index.php를 실행시켜 보았다. 소스코드는 마찬가지로 별 내용이 없다. FLAG is in the code 라는 문구가 출력된 것으로 보아, 서버에 있는 flag.php 파일에 접근해서 코드를 확인해야 할 것으로 보인다. LFI(Local File Inclusion) - 공격자가 공격 대상 서버에 위치한 파일을 실행, 공격에 활용하는 취약점. - 공격 대상 서버에 있는 디렉토리로 접근하여 원하는 값을 열어볼 수 있도록 함. - LFI 공격 시도를 위해 주로 Path Traversal 취약점을 이용함. - Path Traversal 취약점: 접근 권한이 없는 웹 서버의 파일에 접근하기 위해 특정한 방식으로 ..

Web/wargame 2021.11.28