1. 커맨드 인젝션 - 이론
- 웹 요청 메시지에 임의의 시스템 명령어를 삽입하고 전송하여 웹 서버에서 해당 명령어를 실행하도록 하는 공격
- 공격 결과 호스트 내부의 명령어 실행 가능
- ‘;’ 는 복수의 명령어 실행하고자 할 때 사용 -> x.x.x.x;cat /etc/passwd -> 패스워드 알게 됨
2. 커맨드 인젝션 - 실습
- 그냥 IP 주소를 입력하여 ping 명령 결과 확인
- 커맨드 인젝션 실습 문제 source 파일을 확인
- shell_exec() 함수를 통해 명령을 수행 중! -> shell_exec 함수와 같이 쉘을 직접 호출하여 명령어를 수행하는 함수를 코드에 사용하면 취약점이 생길 수 있음!
- ;ls 입력해보기
- ;cat /etc/passwd 입력해보기
3. 커맨드 인젝션 공격 대응
- 직접적으로 시스템 명령어를 호출하지 않는 것이 가장 좋은 방법
: 소스코드 레벨에서 exec()이나 system()과 같은 직접적으로 명령어를 실행하는 함수를 사용하지 않고, - 프로그래밍 언어 및 라이브러리에서 자체적으로 제공하는 함수 사용
ex. System(“mkdir $dir_name”) -> mkdir($dir_name)
-시스템 명령어를 사용할 수밖에 없는 경우는 사용자 입력값이 명령어에 사용될 수 없도록 점검
-입력값 검증
추후에 bwapp의 커맨드 인젝션 공격 실습을 난이도별로 풀이과정을 작성할 예정...
'웹해킹' 카테고리의 다른 글
웹해킹 #6 크로스 사이트 요청 변조(CSRF) 공격 (1) | 2019.10.13 |
---|---|
웹해킹 #5 크로스 사이트 스크립팅 공격 (XSS) (1) | 2019.10.12 |
웹해킹 #3 SQL 인젝션 (0) | 2019.09.29 |
웹해킹 #2 실습 환경 구축 및 버프스위트 사용법 (0) | 2019.09.29 |
웹해킹 #1 웹 기본 지식 (URL, HTML, SSS, CSS, HTTP, 쿠키와 세션) (0) | 2019.09.29 |