웹해킹 #9 파일 업로드 공격 - 파일 업로드 기능을 이용하여 웹쉘이라고 하는 악성 파일 업로드하고 시스템 명령을 실행하는 공격 1. 파일 업로드 공격 개요 - 파일 업로드하는 기능에 보안 대책이 적용되어 있지 않을 때 발생 * 웹쉘 : 웹을 통해 시스템 명령어를 실행할 수 있는 웹 페이지의 일종 2. 파일 업로드 공격 실습 - 이미지 파일 대신 webshell.php 업로드 - 업로드가 성공했으며, ../../hackable/uploads/webshell.php 라는 경로를 통해 파일이 http://192.168.56.102/dvwa/hackable/uploads/webshell.php에 업로드 된 것 확인 가능 (URL 경로가 /dvwa/vulnerabilities/upload/ 이므로 ../ 두 번 사용시 http://192.1.. 웹해킹 #8 파일 인클루전 공격 - 주로 PHP 애플리케이션 대상으로 발생 : PHP는 인클루드 기능을 제공하기 때문에 * 인클루드 : include라는 함수를 이용하여 다른 파일을 소스 코드에 직접 인클루드시킬 수 있는 기능 -> 인클루드할 파일을 외부 사용자가 지정할 수 있는 경우 파일 인클루전 취약점이 존재하고, 공격자는 본인이 원하는 파일 인클루드 가능! 1. 파일 인클루전 공격 개요 ① 로컬 파일 인클루전(Local File Inclusion, LFI) : 공격자가 인클루드할 수 있는 파일이 호스트 내부의 파일 ② 리모트 파일 인클루전(Remote File Inclusion, RFI) : 공격자가 인클루드할 수 있는 파일이 호스트 외부의 파일 (★ 원격 인클루드가 가능해 더욱 심각한 공격) - 정상적인 파일인 file.php가.. 웹해킹 #7 취약한 인증 공격 *정의 : 사용자 계정 정보를 확인하거나 세션 토큰과 같은 인증에 사용되는 토큰 정보를 입수하여 인증 과정 우회 * 발생 원인 : 인증 과정이 제대로 보호되어 있지 않아서 공격자가 인증 과정을 우회할 수 있는 경우 발생 - 취약한 인증 리스크 사례 ① 프로그램 설치 시 기본 관리자 계정이 admin/admin과 같이 쉽게 추측할 수 있는 값으로 설정된 경우 ② 패스워드 또는 패스워드를 알아내기 위한 힌트를 다른 사용자가 초기화 및 복구할 수 있는 경우 ③ 세션 관리의 문제로 인해 사용자의 세션 ID가 노출되어 공격자가 세션 하이재킹 공격이 가능한 경우 ④ 세션ID를 쉽게 추측할 수 있는 경우 ⑤ 세션에 대한 타임아웃이 없어, 오래된 세션 ID를 사용해서 인증이 가능한 경우 1. 브루트 포스 공격 개요 -.. #1 Crawling 이해 및 기본 1. 크롤링이란? : Web상에 존재하는 Contents를 수집하는 작업 ① HTML페이지를 가져와서 HTML/CSS 등을 파싱하고, 필요한 데이터만 추출하는 기법 ② Open API(Rest API)를 제공하는 서비스에 Open API를 호출해서, 받은 데이터 중 필요한 데이터만 추출하는 기법 ③ Selenium 등 브라우저를 프로그램이으로 조작해서, 필요한 데이터만 추출하는 기법 2. BeautifulSoup라이브러리 : HTML의 태그를 파싱해서 필요한 데이터만 추출하는 함수를 제공하는 라이브러리. HTML 데이터 파싱 import requests //Python에서 HTTP 요청을 보내는 라이브러리인 requests 요청 from bs4 import BeautifulSoup //BeautifulS.. LOB #6 wolfman ID : wolfman Passwd : love eyuna - darkelf.c 내용을 확인 버퍼의 크기는 40이고, 코드의 내용은 위와 같다 - main 함수 디버깅 스택의 크기는 44 (buffer(40)+i(4))이므로 dummy값은 존재하지 않는다 sfp에서 40만큼 떨어진 거리에 buffer가 존재한다 - argv[1]의 길이가 48까지만 허용되므로 buffer(40) + sfp(4) + ret(4) =48만큼만 들어갈 수 있다 그러므로 쉘코드는 argv[1]에 들어가면 안된다 -> argv[1] 대신 argv[2]에 쉘코드를 넣고 argv[2]의 주소를 ret에 넣는 방법 사용 - argv[2]의 주소를 알아내기 위해 strcpy 다음 코드에 break point를 걸고 디버깅 창에서 다음과 .. FTZ #5 ID : level5 Passwd : what is your name? - hint를 먼저 확인한다 - /usr/bin에 이동하면 파일 목록 중 level5가 있는 것을 확인가능하다 위의 사진과 같이 level5의 파일에 level6의 setuid가 걸려있는 것도 확인 가능하다 level5 파일을 실행해보면 아무일도 존재하지 않는다 - /tmp에 이동하여 파일 목록을 살펴보면, level5.tmp에 관한 파일은 존재하지 않는다 일단 임의로 level5.tmp 파일을 만들어 보자 파일 내용을 뭘로 해야할지 몰라 일단 비밀번호를 출력해주는 시스템 함수를 입력하였다 그 후 level5를 실행 후 만든 level5.tmp 파일을 확인하면 다음 level의 비밀번호가 대신 쓰여져 있다 추측 상 level5를 실행.. FTZ #4 ID : level4 Passwd : suck my brain - 먼저 hint를 확인해본다 - /etc/xinetd.d/에 백도어를 심어놓았다고 했으니 해당 위치로 이동해본다! backdoor가 있는 것을 확인할 수 있다! - backdoor를 보면, 코드 내용 전체를 알 수는 없지만 finger라는 명령어를 실행하면 server위치의 해당 파일이 실행되는 것이라고 추측했다.. 그리고 user에는 level5가 걸려있는 것을 확인가능하다 - /home/level4/tmp 위치에 backdoor 파일을 만든다 이때 파일의 내용을 my-pass 명령어가 실행되도록 한다! - finger 명령어를 실행하면 아무 일도 일어나지 않는다! finger 명령어를 더 자세히 알아보아야 할 것 같아 검색해봤다 * fi.. FTZ #3 ID : level3 Passwd : can you fly? - hint를 먼저 확인한다 - 일단 more hints의 정답을 보면 ① 동시에 여러 명령어를 사용하려면? ';'(세미콜론) 사용 ② 문자열 형태로 명령어를 전달하려면? ""(큰따옴표) 사용 - level4의 uid가 걸려있는 파일을 찾는다 * autodig 즉, /bin/autodig를 실행시킬 때 ';'을 이용해서 /bin/bash 명령어와 my-pass 명령어를 동시에 입력해준다! 이때, 문자열로 전달하기 위해 ""로 감싸주면 된다! 이전 1 2 3 4 다음