2022. 3. 15. 23:13ㆍ웹취약점/DVWA
운영체제 명령 실행(Command Injection) 공격은 웹 애플리케이션에서 system(), exec()와 같은 시스템 명령어를 실행 시킬 수 있는 함수를 제공하며 사용자 입력값에 대한 필터링이 제대로 이루어지지 않을 경우 공격자가 운영체제 시스템 명령어를 호출하여 백도어 설치나 관리자 권한 탈취 등 시스템 보안에 심각한 영향을 미칠 수 있는 취약점.
점검방법: -URL 파라미터 값 부분에 운영체제 명령어를 입력하는 방법.
-입력폼에 명령어를 입력하는 방법.
메타 문자
메타문자 | 설명 |
' ' | 명령어 치환: ' ' 안에 들어있는 문자로 치환 |
$ ( ) | 명령어 치환: $ ( ) 안에 들어있는 문자로 치환 해주며 중복으로 사용가능 |
&& | 명령어 연속 실행: 한줄에 여려 명령어 실행. 단 앞 명령어의 오류가 없어야 뒷 명령어가 실행가능 |
| | | 명령어 연속 실행: 한줄에 여려 명령어 실행. 단 앞 명령어의 오류가 발생시 뒷 명령어가 실행가능 |
; | 명령어 구분자: 한줄에 여려 명령어 실행. 앞 명령어를 구분할때 사용 |
| | 파이프: 앞명령어 입력이 뒷 명령어 입력으로 실행 |
실습
실습환경 | Windows10 |
실습사이트 | DVWA |
유형 | 운영체제 명령실행- 입력폼삽입공격 |
Level-Low
접속 시 IP주소를 입력하는 폼이 나옵니다.
127.0.0.1
아이피 입력 시 핑이 나가는 것을 확인할 수 있다.
127.0.0.1 && ls -al
메타 문자 "&&"를 사용하여 시스템 함수 "ls -al"을 입력하면 디렉터리 목록이 표출되어 공격이 된 것을 볼 수 있다.
Level-Medium
소스코드를 확인해보면 "substitutions": 문자열에서 해당 문자를 찾아 다른 문자로 변경한다. 즉 "&&", " ; " -> " ' ' " 문자로 치환하여 필터링을 하고 있다.
127.0.0.1 | cat /etc/passwd
하지만 Command Injection 공격은 여러 가지 메타 문자를 사용할수있다. 필터링 되지 않은 메타문자 "|"를 사용하면 된다.
Level-High
아까보다 더 많은 문자를 필터링하고 있는 것이 보인다. 하지만 '| ' 이문자를 자세히 보게 되면 파이프 다음에 공백이 있는 것을 볼 수 있다. 그러므로 파이프는 필터링이 되지 않았다고 볼 수 있다.
127.0.0.1|id
파이프를 사용해 사용자 정보를 호출하게 되면 사용자 정보가 나타나 공격이 성공하는 것을 볼 수 있다.
'웹취약점 > DVWA' 카테고리의 다른 글
DVWA- Brute Force (0) | 2022.03.13 |
---|