일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |
- 티스토리챌린지
- kbdinteractiveauthentication
- 포인터와 배열
- 네트워크정리
- bandit 비밀번호
- 취약점진단
- overthewire bandit level 0
- 오블완
- bandit level
- overthewire bandit 문제풀이
- AWS
- 네트워크문제
- 객체지향
- bandit 문제풀이
- 함수와 디버깅
- bandit level 11 -> level 12 문제풀이
- 혼자공부하는네트워크
- sk shieldus rookies 23기
- overthewire bandit 문제
- web hacking
- sk루키즈
- 혼공네트
- 해킹
- 보안
- 정보보안
- overthewire 문제
- 공부기록
- 네트워크이론정리
- 데이터와 로직
- Dreamhack
- Today
- Total
아임노드
실무 환경에서의 주요 취약점_Command Injection 본문
실무 환경에서의 주요 취약점_Command Injection
Noody 2024. 12. 12.
Command Injection
- 명령어 주입 공격 (여기서의 명령어는 OS에서 지원하는 명령어)
- 일반 웹페이지에서는 잘 안나타남 - 임베디드 장비에서 주로 발견(공유기,프린터,CCTV등)
ex) http://test.com/cmd?=;ls
명령어를 추가로 사용할 수 있는 입력 문자열을 통해 추가 명령어 실행
- ; , |, ||, && 4개의 문자열이 대표적인 추가 명령어 실행 입력 값
; + ls / | + ls ...
Command Injection
1. dvwa > Command Injection(security level:low) 탭으로 이동
* security level은 DVWA Security탭에서 변경 가능
2. 오른쪽 하단 view source 클릭
이 부분을 확인하기
ping은 통신상태를 나타냄
shell_exec 함수외에도 system 함수도 있다.
이런 함수들이 홈페이지를 구성하는 페이지에서 사용되면 취약하다! 라고 판단해볼 수 있다.
3. 앞선 취약상태 인지 후 터미널 창에서 테스트 진행
> ; , | , || , && 네 가지 문자열이 가지는 성질 확인해보기
# ls -al ; pwd
-> ls -al 과 pwd 모두 실행
# ls -1234 ; pwd
-> ls -al 실행x / pwd 실행
=> 앞에 명령이 성공하든 실패하든 ;(세미콜론) 뒤 명령어는 실행된다!
# ls -al | pwd
-> 앞이 참이면 뒤가 실행
# ls -1234 | pwd
-> 앞이 거짓이면 뒤에 실행X
=> 앞의 참/거짓에 따라 뒤가 실행되거나 실행되지 않는다!
# ls -al || pwd
-> 앞이 성공하면 뒤가 실행X
# ls -1234 || pwd
앞이 실패하면 뒤가 실행O
=> 앞 참/거짓 여부에 따라 뒤는 반대결과가 실행된다!
# ls -al && pwd
-> 모두 실행O
# ls -1234 && pwd
-> 모두 실행X
=> 모두 참일 경우만 출력된다!
4. 위 문자열 성질을 가지고 취약점 진단해보기
* 127.0.0.1은 현재 기기의 로컬 IP 주소
...
5. Burpsuite로 패킷 잡아보기
> 127.0.0.1 적어준 상태에서
> 프록시 manual로 바꾸고 burpsuite의 Intercept is on으로 변경
> 위 사진의 submit 눌러주면 burpsuite에서 패킷 확인 가능
> 이 상태에서는 재생공격이 가능하다.
[ctrl+R] 누르기 > Repeater 탭 색상 바뀜(수집한 패킷을 send to Repeater 한 것임)
> 여기서 ip 파라미터에 ;pwd 추가해보기
추가 후 send 클릭
> 결과 확인
127.0.0.1 이 PING 으로 실행되고 그 아래 pwd가 실행된 것도 확인할 수 있다.
이걸로 패킷을 재사용해서 점검하는 것도 가능하구나를 알 수 있다.
6. High 레벨에서 다시 점검해보기
>high 레벨의 Command Ingjection 탭으로 이동 (소스코드 없이 진단)
> 4가지 입력값을 가지고 넣어 볼 수 있는 경우의 수 (우회)
다시 127.0.0.1 입력 후 패킷잡기
ip=127.0.0.1&Submit=Submit
ㄴ&Submit=Submit 는 고정 값이므로 ip 파라미터만 보도록 한다.
ip=127.0.0.1 로 우회할 수 있는 방법 찾기
이번에는 공백을 넣어보도록 하자.
여기서는 ;에 대한 7번의 경우의 수 + 나머지 세 개의 문자열 경우의 수까지 포함하여
총 28번의 테스트를 진행해야 한다.
1) 127.0.0.1 ; ls (데이터 간에 공백 입력)
2) 127.0.0.1; ls (뒤에만 공백 입력)
3) 127.0.0.1 ;ls (앞에만 공백 입력)
4) 127.0.0.1%20;ls (%20=공백)
5) 127.0.0.1%00;ls (%00=null)
6) 127.0.0.1;%20ls
7) 127.0.0.1;%00ls
* 스패이스(공백), %20, %00은 단순히 한번이 아니라 여러번이 될 수도 있다.
(최소 3개 이상은 해봐야 필터링이 되는지 아닌지 보다 정확히 확인 가능)
* 일반적으로 burpsuite Repeater 창에서 Response을 보고 실행이 됬는지 아닌지 확인하면 되지만
dvwa에서는 그냥 'Enter an IP address:' 검색에다가 테스트해봐도 된다.
* ||는 ip 주소를 뺀 상태에서도 진행해보도록 한다. (ip=||ls&Submit=Submit)
* 명령어 뒤에 넣는 경우도 있는 (ex) ip=127.0.0.1&&ls%00%00%00&Submit=Submit
> 우회 가능한 경우 확인
- ip=127.0.0.1|ls&Submit=Submit
- ip=|| ls&Submit=Submit
7. 소스코드 보기
소스코드를 볼 수 있는 경우 이러한 것들을 확인해볼 수 있다.
>시큐어 코딩 적용됨
여기서 | 에 한 칸이 띄어져 있었기에 우회가 가능했다.
bwapp 홈페이지 A1 OS Command Injection에서도 테스트 해보자.
'[SK shieldus Rookies 23기] 공부 노트 > 취약점 진단 도구 및 활용법' 카테고리의 다른 글
실무 환경에서의 주요 취약점_File Upload (1) | 2024.12.16 |
---|---|
실무 환경에서의 주요 취약점_File Inclusion (1) | 2024.12.12 |
실무 환경에서의 주요 취약점_Brute-Force 공격 (1) | 2024.12.07 |
실무 환경에서의 주요 취약점_디렉토리 인덱싱(경로 순회) (0) | 2024.12.07 |
취약점 진단 도구_Request and Respone을 받기_curl (0) | 2024.12.06 |