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