본문 바로가기

전체 글

(81)
[주통기 웹 취약점] 정보 누출, 악성 콘텐츠 정보 누출 취약점 : 웹 사이트에 중요 정보가 노출되거나 소스코드 주석이나 오류 메시지 등에서 과도한 정보가 노출되는 취약점 사용자 관련 정보 : ID, PW, 주소 등 서버 관련 정보 : 서버 관리자 및 사용자 정보, 서버 버전 정보, 서버 절대 경로, 서버 내부 정보 등 공격자는 해당 취약점을 이용해 2차 공격을 위한 정보로 활용할 수 있다. [보안 방법] * 사용자가 주민등록번호 뒷자리, 비밀번호 입력 시 별표 표시하는 등 마스킹 처리를 하여 주변 사람들에게 노출되지 않도록 함 * 웹페이지를 운영 서버에 이관 시 주석은 모두 제거하여 이관 * 중요정보(개인정보, 계정정보, 금융정보 등)를 HTML 소스에 포함하지 않도록 함 * 로그인 실패 시 반환되는 에러 메시지는 특정 ID의 가입 여부를 식별할 ..
[Authorization] CTF - authorization 4, 5, 6 문제풀이 게시글을 작성해야 하는데 공지사항 페이지에는 글쓰기 버튼이 없다 게시글로 접근해도 우회에 사용할만한 수정 버튼이 없음 소스코드를 확인해봐도 별다른 정보를 확인할 수 없었다. 클라이언트 측에서 인가를 하고 있는게 아님을 확인 공지사항 페이지가 notice_list.php, 글 읽기 페이지가 notice_read인 걸 봐서 혹시 글쓰기 페이지가 notice_write.php가 아닐까해서 접근해보니 글쓰기 페이지가 등장했다 아무 글이나 입력하고 create하니 플래그를 확인할 수 있었다 flag 임시저장 게시글을 클릭하니 권한이 없다고 한다 글읽기 페이지가 아니여도 게시글을 확인할 수 있는 페이지가 뭐가 있을까 생각하니 수정 페이지가 있었다 아무 게시글이나 작성하고 수정 페이지 접근해서 id를 42로 수정하니..
[Authorization] CTF - authorization 2, 3 문제풀이 소스코드를 확인하자마자 수상한 자바스크립트(...)와 fire 버튼에서 goMenu('1018','') 함수 발견 자바스크립트가 있는 경로로 접속해서 권한을 체크하는 코드임을 확인했다 콘솔로 함수를 실행해서 플래그 획득 위 문제와 마찬가지로 자바스크립트와 goMenu 함수 발견 자바스크립트 코드를 확인해보니 뭔소린지 모를... 난독화 되어있다 대충 goMenu('9999','admin')을 실행하면 플래그를 획득할 수 있을 것 같다 콘솔에 입력하고 실행해보니 역시나 플래그가 나왔다 인증, 인가는 서버에서 구현하자!
[Authorization] CTF - authorization 1 문제풀이 로그인 후 소스코드를 확인해보니 주석처리로 접근 제어를 구현한 것을 발견 주석 내용대로 fire_attack_danger.php에 접근하니 alert 창으로 플래그 확인이 가능했다 접근제어는 클라이언트 (주석, 자바스크립트, 쿠키 이용) 측에서 하지 말고 서버에 구현하자
불충분한 인증, 인가 취약점이란? (접근 통제 용어, 대표적인 케이스) 먼저 용어 정리부터 해보자 접근 통제는 식별 > 인증 > 인가 3단계를 원칙으로 한다. 여기서 확인할 취약점은 인증과 인가다. 식별 : 본인이 누구라는 것을 시스템에 밝히는 것 인증 : 본인임을 주장하는 그 사용자가 본인이 맞다고 시스템이 인증해주는 것 (신원 확인) 인가 : 인증된 주체에게 접근을 허용하고 특정 업무를 수행할 권리를 부여하는 과정 불충분한 인증 중요 페이지에 접근 시 인증 구현이 미흡하게 된 경우이다. 인증 취약점 대표 케이스 1. Cookie를 통한 인증 쿠키는 클라이언트 측에 저장된 정보이기 때문에 공격자가 자바스크립트를 이용해서 쉽게 탈취 가능하다. 2. 프로세스 건너뛰기 본인인증을 하는 페이지에서 자주 발생한다. 예를 들어 회원가입 절차가 아래와 같을 경우 (1) 약관 동의 (2..
[File Vuln] CTF - Get Flag File2 문제풀이 확장자를 png로 하는 웹쉘을 업로드한 후 해당 게시글에 접근해서 코드를 확인해보니
[File Vuln] CTF - Get Flag File 문제풀이 게시글에 임의의 파일을 업로드하고 다운로드 링크 주소 복사를해서 확인해보니 아래와 같이 filePath로 파일이 저장된 일부 경로를 받아서 download.php 페이지를 이용하여 다운로드 하고 있었다. filePath 경로를 조작해서 php의 기본 파일인 index.php을 찾아갔다. 소스코드를 확인해보니 플래그가 주석처리 되어있었다. 추가로 리눅스의 중요 파일인 passwd 파일을 받기 위해 경로를 조작해봤다. (../ 를 계속 추가해서 경로를 거슬러 올라감) 시스템 사용자 정보도 획득했다. 경로 조작으로 쉽게 소스코드 탈취가 가능했다. 이 경우 생각해볼 수 있는 보안 방법은 ../ 필터링을 하거나 아니면 더 확실하게 파일을 웹 서버가 아닌 DB에 저장해두는 방법이 있다.
[File Vuln] CTF - Web Shell3 문제풀이 인사말 페이지로 이동 lang 파라미터로 특정 페이지를 가져와서 브라우저에 출력하는 것을 확인 ==> LFI 취약점 발견 버프슈트로 확인 LFI 취약점의 최대 장점은 파일의 확장자 png, txt, php 등등 상관 없이 무조건 파일을 실행해서 보여준다는 것이다. 게시글에 web.png(웹쉘)를 업로드하고 링크 주소 복사를 통해 파일이 업로드된 경로를 확인하여 lang 파라미터를 조작한다. find / -name "*flag*" 로 플래그가 있는 파일 찾기 cat 명령어로 파일 내용을 확인해보니 플래그가 들어있었다. 이 경우에는 업로드된 파일의 경로를 먼저 알아내야 한다. 링크 주소 복사를 통해 쉽게 알아낼 수 있었지만 파일 다운로드 페이지가 따로 존재하는 경우 확인이 어려울 수 있다.