본문 바로가기

웹해킹

ServerSide: Command Injection

웹 애플리케이션 제작용 언어는 시스템에 내장되어 있는 프로그램들을 호출할 수 있는 함수들을 지원한다.

PHP는 system, Nodejs는 child-process, 파이썬은 os.system 등이 있다.

이런 함수들은 인자를 셸 프로그램에 전달한다.

Command Injection 취약점은 명령어를 실행해주는 함수를 잘못 사용하여 발생하는 취약점이다.

 

셸 프로그램은 다양한 메타 문자를 지원한다.

&&, ;, | 는 여러 개의 명령어를 연속으로 실행시킬 수 있다.

 

@app.route('/ping')
def ping():
	ip = request.args.get('ip')
	return os.system(f'ping -c 3 {ip}')

Command Injection이 발생하는 예제 코드이다.

ping 명령어는 네트워크 연결 상태를 테스트하기 위한 명령어이다.

하지만 여기서 ip에

127.0.0.1; id

를 입력하면 ping 명령어뿐만 아니라 id 명령어까지 사용할 수 있다.

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

ServerSide: File Vulnerability  (0) 2023.11.04
드림핵 command-injection-1 롸업  (0) 2023.11.04
드림핵 Mango 롸업  (0) 2023.11.04
드림핵 simple_sqli 롸업  (0) 2023.11.04
SQL Injection  (0) 2023.11.04