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 |