본문 바로가기

전체 글

(59)
[InsecureBankv2] 취약한 암호화 실행 취약점 개요취약점 설명암호화 알고리즘에 대한 취약점으로, 중요 데이터 전송시 취약한 암호화 알고리즘을 이용하는 것을 의미한다. 취약한 알고리즘으로는 RC2, RC4, RC5, MD4, MD5, SHA1, DES, 3DES 등이 있다.보안 위협키값을 소지하지 않으므로 공격자가 똑같은 데이터를 만들고 변조가 가능하다.발생 위치LoginActivity.java 취약점 진단 과정Step 1) LoginActivity.java 확인username, password에 각각 아이디와 패스워드를 받아 저장한다. 아래의 if문을 보면, username은 Base64로 인코딩하여 저장하고, password는 aes 암호화를 진행하는 것을 확인할 수 있다. Base64는 암호화가 아니라 인코딩이므로, 쉽게 원래의 값을 알 ..
[Dreamhack] shell_basic 소스 코드 분석execve 셸코드를 사용할 수 없음을 알 수 있다.// Compile: gcc -o shell_basic shell_basic.c -lseccomp// apt install seccomp libseccomp-dev#include #include #include #include #include #include #include #include #include void alarm_handler() { puts("TIME OUT"); exit(-1);}void init() { setvbuf(stdin, NULL, _IONBF, 0); setvbuf(stdout, NULL, _IONBF, 0); signal(SIGALRM, alarm_handler); alarm(1..
[Dreamhack] Shellcode Exploit Tech: Shellcode0.1. 셸코드익스플로잇을 위해 제작된 어셈블리 코드 조각셸을 획득하기 위한 목적으로 셸코드를 사용해서 “셸”이 접두사로 붙음셸을 획득하는 것은 시스템 해킹의 관점에서 매우 중요해커가 rip를 자신이 작성한 셸코드로 옮길 수 있으면 해커는 원하는 어셈블리 코드가 실행되게 할 수 있음어셈블리어는 기계어와 거의 일대일 대응되므로 사실상 원하는 모든 명령을 CPU에 내릴 수 있게 됨셸코드는 어셈블리어로 구성되므로 공격을 수행할 대상 아키텍처와 운영체제에 따라, 셸코드의 목적에 따라 다르게 작성됨아키텍처별로 자주 사용되는 셸코드를 모아서 공유하는 사이트가 있지만 공유되는 셸코드는 범용적으로 작성된 것이기 때문에 실행될 때의 메모리 상태 같은 시스템 환경을 완전히 반영하지..
[Dreamhack] file-download-1 소스 코드 분석/upload파일명에 ..가 들어가면 upload_result.html을 반환한다. 그렇지 않은 경우, 해당 파일을 열어서 내용을 보여준다.@APP.route('/upload', methods=['GET', 'POST'])def upload_memo(): if request.method == 'POST': filename = request.form.get('filename') content = request.form.get('content').encode('utf-8') if filename.find('..') != -1: return render_template('upload_result.html', data='bad char..
[Dreamhack] image-storage 소스 코드 분석list.phpuploads 디렉터리의 파일을 리스트 형식으로 출력한다. Image Storage Home List Upload $value) { echo "".$value.""; } ?> upload.phpPOST 방식으로 uploads 디렉터리에 파일을 업로드 할 수 있다. 0 ) { echo "Error: " . $error . ""; }else { if (file_exists($di..
[Dreamhack] File Vulnerability ServerSide: File Vulnerability1. File Upload Vulnerability1.1. Path Traversal파일 업로드 취약점(File Upload Vulnerability)웹 서비스를 통해 이용자의 파일을 서버의 파일 시스템에 업로드하는 과정에서 발생하는 보안 취약점이용자가 업로드 될 파일의 이름을 임의로 정할 수 있을 때 발생크게 Path Traversal과 악성 파일 업로드로 분류파일 업로드를 허용하는 대개의 서비스는 보안을 위해 특정 디렉토리에만 업로드를 허용제한이 없다면 악의적인 이용자가 웹 서버의 소스 코드나 서버에 있는 중요 시스템 파일을 덮어 쓸 위험이 있음Path Traversal업로드에 존재하는 제약을 우회하여 임의 디렉토리에 파일을 업로드할 수 있는 취약..
[백준/Python] 16234 인구 이동 문제 링크 16234번: 인구 이동첫째 줄에 N, L, R이 주어진다. (1 ≤ N ≤ 50, 1 ≤ L ≤ R ≤ 100) 둘째 줄부터 N개의 줄에 각 나라의 인구수가 주어진다. r행 c열에 주어지는 정수는 A[r][c]의 값이다. (0 ≤ A[r][c] ≤ 100) 인구 이동이 발생하는 일수가 2,000번 보다 작거나 같은 입력만 주어진다.www.acmicpc.net 문제 풀이현재 국가 위치에서 상하좌우의 국가의 인구수 차이를 계산하고, 하나라도 그 차이가 l이상 r이하일 때, 두 국가는 문이 열려 있으므로 인구 이동을 하게 된다.인접한 국가 사이 중 문이 열려 있는 국가를 대상으로 반복 탐색한 후 해당 국가 전체에 대해 인구 이동을 시작한다.(1,1) 위치부터 (n,n) 위치까지의 국가에 대해서 인..
[InsecureBankv2] 안전하지 않은 웹 뷰 취약점 개요취약점 설명웹 뷰는 네이티브 앱에 내재되어 있는 웹 브라우저로, 일반 웹 브라우저와 달리 주소창, 새로고침, 즐겨찾기와 같은 기능은 없고 단순히 웹페이지만 보여줄 수 있다. 웹 뷰에서 자바스크립트 코드가 강제로 실행되게 함으로써 다른 사용자의 중요 정보를 탈취하는 취약점이다.보안 위협사용자가 의도하지 않은 스크립트를 실행하도록 하여 정보 탈취 등의 행위가 가능하다.발생 위치ViewStatement.java 취약점 진단 과정수동Step 1) ViewStatement.java 확인ViewStatement 액티비티에서 웹 뷰가 사용되는 것을 확인할 수 있다. 웹 뷰의 객체를 선언한 후, 접근할 파일 경로를 설정한다.if (fileToCheck.exists()) { //Toast.makeText(th..
[Dreamhack] Tool Tool: gdb버그(bug): 실수로 발생한 프로그램의 결함디버거(Debugger): 완성된 코드에서 버그를 찾는 도구1. gdb & pwndbg1.1. gdb리눅스의 대표적인 디버거오픈 소스로 개발되어 무료로 설치 가능다양한 플러그인들이 개발1.2. 실습 예제// Name: debugee.c// Compile: gcc -o debugee debugee.c -no-pie#include int main(void) { int sum = 0; int val1 = 1; int val2 = 2; sum = val1 + val2; printf("1 + 2 = %d\\\\n", sum); return 0;}코드를 작성하고 컴파일 함$ gcc -o debugee debugee.c$ gdb debugeeGN..
[InsecureBankv2] 안전하지 않은 콘텐츠 프로바이더 접근 취약점 개요취약점 설명콘텐츠 프로바이더는 다른 애플리케이션의 데이터베이스, 파일 등에 접근할 수 있도록 도와주며, 접근하기 위해서는 uri가 필요하다. 안전하지 않은 콘텐츠 프로바이더는 uri에 접근할 수 있는 취약점을 말한다.보안 위협취약한 콘텐츠 프로바이더를 통해서 데이터가 노출될 수 있다.발생 위치AndroidManifest.xml 취약점 진단 과정adbStep 1) AndroidManifest.xml 확인프로바이더의 exported 속성이 “true”로 설정되어 있는 것을 확인할 수 있다. 또한, 취약한 프로바이더가 TrackUserContentProvider임을 알 수 있다.Step 2) 데이터 확인로그인 했던 결과가 출력되는 것으로 추측할 수 있고, 이를 통해 데이터를 조회할 수 있는 취약점이..
[Dreamhack] command-injection-1 소스 코드 분석/ping@APP.route('/ping', methods=['GET', 'POST'])def ping(): if request.method == 'POST': host = request.form.get('host') cmd = f'ping -c 3 "{host}"' try: output = subprocess.check_output(['/bin/sh', '-c', cmd], timeout=5) return render_template('ping_result.html', data=output.decode('utf-8')) except subprocess.TimeoutExpired: ..
[Dreamhack] Command Injection ServerSide: Command Injection 1. Command Injection 1.1. Command Injection 인젝션(Injection) 악의적인 데이터를 프로그램에 입력하여 시스템 명령어, 코드, 데이터베이스 쿼리 등으로 실행되게 하는 기법 Command Injection 이용자의 입력을 시스템 명령어로 실행하게 하는 취약점 명령어를 실행하는 함수에 이용자가 임의의 인자를 전달할 수 있을 때 발생 시스템 함수를 사용하면 이용자의 입력을 소프트웨어의 인자로 전달할 수 있음 파이썬으로 개발된 웹 애플리케이션에서 입력한 임의 IP에 ping을 전송하고 싶다면 os.system("ping[user-input]")을, 임의 파일을 읽고 싶다면 os.system("cat[user-input"..