Command Injection
Command Injection 은 웹 애플리케이션에서 시스템 명령을 사용할 때, 세미콜론 혹은 &, && 를 사용하여 하나의 Command를 Injection 하여 두 개의 명령어가 실행되게 하는 공격 입니다. OWASP Top10 중 1위에 속해 있는 Injection 공격으로 서버자체의 콘솔 명령어를 실행시킬 수 있기 때문에 공격이 성공한다면 매우 큰 피해가 발생할 수 있습니다.
그림은 Command Injection 공격의 한 예를 보여주고 있습니다. 현재 웹 애플리케이션에서는 서버의 파일을 cat 명령어를 사용하여 사용자 입력과 함께 보여줄 수 있도록 만들어져 있습니다. 해커는 이 기능을 악용하여 리눅스에서 ① 두 개의 명령을 한 줄에 동시에 실행할 수 있도록 하는 연결자 인 “세미콜론”을 사용하여 ifconfig명령을 실행시키기 위해 웹 페이지에 요청을 보냅니다. ② 사용자로 부터의 요청을 아무런 검증없이 서버에 전송합니다. ③ 요청된 명령을 서버에서 실행하고, 서버의 민감정보를 그대로 노출합니다. 그 이후 여러 가지 명령어로 정보를 수집한 해커는 서버 내 라이브러리 중 원데이 취약점을 이용하여 리눅스 서버의 root 권한을 획득합니다.
해당 웹 서버 개발자는 해커를 위한 웹셸을 만들어 둔 것이나 다름없습니다. 서버의
명렁을 실행하는 함수는 되도록이면 사용하지 말아야 하고, 사용하더라도 서버에 영향을 끼칠 수 있는 명령어는
사용이 불가능 하도록 하여야 합니다. 실 서버와 분리하여 운영하는 것도 좋은 방법입니다.
'Security > Web Hacking' 카테고리의 다른 글
sqlmap 모든 옵션 및 사용법 정리 (0) | 2019.04.03 |
---|---|
데이터베이스(DB) 종류 별 명령어 정리2 (0) | 2019.04.02 |
데이터베이스(DB) 종류 별 명령어 정리 (2) | 2019.03.31 |
XSS(Cross-Site Scripting) 이란? (0) | 2019.03.14 |
SQL Injection 이란? (SQL 삽입 공격) (4) | 2019.03.13 |