Try Attack/Web Hacking[basic]

Command Injection

D4tai1 2018. 8. 12.

1. Command Injection

- 원격 명령어 실행 취약점

- 공격 시 공격자는 자신이 실행하고자 하는 명령어를 서버에 원격으로 실행 가능

 

1) 환경

- Unix or Linux 운영체제를 사용하여 명령어를 실행할 수 있도록 만들어 놓은 사이트 및 Application [ex) ping test]

 

- kali linux 2018.1 운영체제의 공격자 클라이언트

- 공격자 클라이언트에 설치된 Burp Suite[proxy server기능, 값 변조를 위해] 프로그램을 사용

- 서버와 클라이언트 간의 오고가는 패킷을 확인하기 위해 firefox 프록시기능 on

 

2) 선행지식

- 명령어 

 ;

앞 명령어 실행 후 뒤 명령어 실행 

 &&

앞 명령어가 참이면 뒤 명령어 실행 

 ||

앞 명령어가 거짓이면 뒤 명령어 실행 

 |

앞 명령어의 결과를 뒤 명령어로 전달 

 echo [message] > [filename]

파일 생성  

 echo [message] >> [filename]

기존 파일에 추가작성

 

아래와 같이 연습해 볼 수 있다.

- 생성, 확인, 추가, 확인, 여러 명령어의 순차적인 실행

 

 

3) 시연 [ping_test site]

[1] ping test를 할 ip를 작성 후 입력

 

[2] ip를 적어야 하는 곳에 다른 명령어를 함께 입력

 

[3] burp suite를 이용하여 프록시 on 후 intruder에서 타겟 주소 확인

 

[4] 변조할 위치 선택 후 add

 

[5] payload.txt 파일에 공격스크립트 작성

- 뒤에 명령어가 실행되도록 맨 앞에 ;(세미콜론)을 붙인다.

- 권한은 모든권한을 전부 부여한다.

- <?php ?> 는 php문 작성시에 사용된다.

- phpinfo(); 는 php버전정보를 출력하는 php함수이다.

[6] 페이로드에서 방금 작성한 payload.txt 파일을 첨부한다.

 

[7] 타겟, 변조위치, 변조리스트 확인 후 공격한다

 

[8] 실제로 파일이 생성되었는지 확인한다.

 

[9] URL에 만들어진 ./attackme.php 사이트에 접속한다.

 

4) 추가지식

- 예를 들기위해 phpinfo(); 같은 함수를 실행시켜 basic site로 접속하였지만,

  echo 'shell_exec("rm -rf /*");' >> click.php  와 같이 Fuzzing(퍼징, 예상치 않은 데이터를 입력하여 장애를 발생)할 경우 서버에 문제가 생길 수 있다. [shell_exec() 함수는 php상에서 shell명령어를 사용할 수 있도록 한다.]

 

5) payload Vs exploit

- 페이로드 : 공격 자체의 코드, 즉 옮겨졌을 때 실행되는 코드[위에서 사용한 attackme.php], 침투가 끝나고 실행되는 코드

- 익스플로잇 = 침투를 하기 위한 코드

 

6) 대응방안

- Secure coding

- input의 형태가 xxx.xxx.xxx.xxx 가 아니면 차단

- &, |, ; 등의 특수기호 input시 차단

 

주의사항 : 취약한 사이트의 경우 공격이 통할 수 있으니 실제로 사용하지 마십시오.

 

'Try Attack > Web Hacking[basic]' 카테고리의 다른 글

Web hacking 이론  (0) 2019.04.27
File Upload  (0) 2018.08.12
File Inclusion  (0) 2018.08.12
프로토콜 분석  (0) 2018.08.12
brute force  (0) 2018.08.11

댓글