웹해킹

Command injection

bbostudyy 2025. 9. 30. 16:43

Command injection이란?

검증되지 않은 사용자 입력이 OS 명령어로 실행될 때 발생하는 취약점으로 작은 입력 조작만으로 서버 권한 탈취가 가능하다.

 

공격 기법

  • 단순 주입(echo,whoami)
현재 사용자 whoami
OS 버전 확인 uname -a/ver
네트워크 설정 ifconfig/ipconfig /all
열려있는 연결 netstat -an
실행 중인 프로세스 ps -ef/tasklist
  • Blind 기법 - 명령 실행 결과가 HTTP 응답에 직접 안나타남
  • 명령어 구분자 사용
; 하나의 라인에 입력된 명령어들을 모두 실행
& 엠퍼센드 기준 앞은 백그라운드 실행한 뒤 즉시 뒤의 명령어 실행
&& 앞 명령어 실패 여부에 따라 뒤의 명령어 실행
| 앞 명령어 실행 결과를 뒤 명령어로 넘김
|| 앞 명령어 실행 성공 시 뒤 명령어 실행X

 

Command injection 실습

실습 링크에 들어가 상품의 상세 페이지를 누른 뒤 패킷을 확인하였다.

 

패킷을 repeater로 전송한 뒤 앞 명령어의 결과를 뒤 명령어로 이어주는 |와 사용자 이름을 보여주는 whoami를 입력한 뒤 send하였다.

 

다시 돌아와서 동일하게 |whoami를 입력해주고 상품 상세 페이지에 다시 들어가보니

 

 

사용자 이름이 뜨는 것을 확인할 수 있었다.

 

과제

Lab: Blind OS command injection with time delays | Web Security Academy

 

Web Application Security, Testing, & Scanning - PortSwigger

PortSwigger offers tools for web application security, testing, & scanning. Choose from a range of security tools, & identify the very latest vulnerabilities.

portswigger.net

실습 제목을 보니 blind 기법 중 시간 지연을 활용해서 공격하는 것 같다.

 

실습 페이지 안에서도 피드백을 작성하는 창에 들어가 일단 아무 글자를 입력하였다.

 

피드백 보내는 버튼을 클릭한 뒤 패킷을 확인해보니 내가 입력한 것들이 떴다. 해당 패킷을 repeater로 보냈다.

 

10초동안 시간을 지연하는 & ping -c 10 127.0.0.1 &를 입력해보았다. 10초 지연이 발생하지 않았다. 명령어를 백그라운드로 보내고 기다리지 않아서 응답 지연이 발생하지 않는다고 한다. & 대신 |를 입력하거나 위치를 바꿔보기도 하였지만 모두 시간 지연이 발생하진 않았다.

 이번엔 앞 명령어 실행 성공 시 뒤 명령어 실행하지 않는 || 뒤에 시간 지연 페이로드를 입력하였고 

이번엔  10초 지연이 발생하였다.

 

'웹해킹' 카테고리의 다른 글

XSS  (0) 2025.11.05
Path traversal  (0) 2025.10.28
SQL Injection  (0) 2025.09.24
[Root Me]HTTP - POST 풀이  (0) 2025.05.28
[Root Me] PHP - Command injection 풀이  (0) 2025.05.28