Server/보안

Web 취약점 분석 - Brute Force Attack, Command Injection (환경: beebox, DVWA / 분석: Burp Suite)

heyoon2j 2019. 8. 3. 23:42

■ Web 취약점 분석

- beebox, DBWA: 취약한 Web 환경이 구축되어 있다.

- Burp Suite: 취약한 부분을 분석할 수 있다.

 

 · Beebox 환경 구축

- 기본 네트워크는 Host-only로 설정되어 있다.

- NAT로 변경

 

- 위 측 상단의 컴퓨터 모양 -> Manual configuration... 클릭

- unlock -> password : bug 입력

 

Wired connection -> Properties

- 네트워크 설정

 

- USA 오른쪽 마우스 -> Keyboard Preferences

- 기존 설정은 Remove로 지우고, Add를 클릭하여 Korea 선택

 

- VMware Tool 설치

- 설치방법은 Kali Linux와 동일하다.

 

- Patch 파일을 바탕화면에 복사

 

- 관리자로 로그인, Password : bug

# cp /home/bee/Desktop/virtual_cafe.png /var/www/images/ : 웹페이지 폴더에 이미지 복사

 

# nano /var/www/index.html : 바탕화면에 복사해둔 PNG 파일로 이미지 변경

 

- 바탕화면에 복사해둔 패치 파일들을 dvwa 폴더와 bwAPP 폴더에 복사한다.

# cp /home/bee/Desktop/recaptchalib.php /var/www/dvwa/external/recaptcha/recaptchalib.php
# cp /home/bee/Desktop/impossible.php /var/www/dvwa/vulnerabilities/captcha/source/impossible.php 
# cp /home/bee/Desktop/index1.php /var/www/dvwa/vulnerabilities/captcha/index.php 
# cp /home/bee/Desktop/low.php /var/www/dvwa/vulnerabilities/captcha/source/low.php
# cp /home/bee/Desktop/medium.php /var/www/dvwa/vulnerabilities/captcha/source/medium.php
# cp /home/bee/Desktop/high.php /var/www/dvwa/vulnerabilities/captcha/source/high.php 

# cp /home/bee/Desktop/config.inc.php /var/www/bWAPP/config.inc.php

 

- https://www.google.com/recaptcha에 접속

 

- 새 사이트 등록을 하게 되면, 키를 얻을 수 있다.

 

- # nano /var/www/dvwa/config/config.inc.php : DVWA 설정 파일 수정

 

- 'recaptcha_public_key'에는 사이트 키를 복사, 'recaptcha_private_key'에는 비밀 키를 복사한다.

 

# /etc/init.d/apache2 restart : apache 재실행

 

 

· DVWA

- 계정 Username: admin / Password: password

 

- DVWA Security: 해당 부분에서 사이트의 보안 수준을 결정할 수 있다.

- 원하는 레벨을 선택해 주고 Submit 클릭, Low 선택

1) Low(취약한 소스 코드): 보안 수준이 완전히 취약하고, 보안 조치가 전혀 없는 상태이다. 

2) Medium(보안 적용 소스 코드): 해당 수준은 개발자가 응용 프로그램 보안을 시도했지만, 보안 설정을 하지 못한 좋지 않은 보안 관행을 보여준다.

3) High(안전한 소스 코드): 해당 수준은 Medium 수준에서 확장된 상태로, 코드를 보호하기 위한 코드와 어렵거나 나쁜 습관이 혼합되어 있는 상태를 보여준다.

4) Impossible(불가능): 모든 취약점에서 안전하다.

 

- 웹 설정 -> Proxy 설정 / Burp Suite를 사용하기 위해서 설정한다.

 

- 취약점 코드를 확인하기 위해 Burp Suite를 실행한다(Kali Linux에 포함되어 있다)

- Burp Suite는 웹 스캐너로 해당 Application으로 취약점을 분석한다.

- "Intercept is on" 상태인 경우 Proxy 역할을 해서 Web Site 접속 시, 정보를 중간에서 가주고 오게 된다.

- 취약점 분석해야 되는 경우를 제외하고는 off 상태로 두면 된다.

 

 

1. Brute Force Attack

- 무차별 대입 공격

- 특정한 암호를 풀기 위해 가능한 모든 값을 대입하는 것을 의미

 

* 대응 방안

 1) 암호화

 2) 여러 번 입력했을 때, 오류가 발생하면 다음 입력까지 대기 시간을 주는 등의 방법 이용

 

- Username과 Password 입력 후, Login

 

- Burp Suite에서 정보를 확인할 수 있다.

- 보안 수준이 "Low"로 암호화가 되어있지 않아 여러 번 입력해도 대기시간이 생기거나 하지 않는다.

- 그리고 암호화가 되어있지 않기 때문에 위와 같이 모든 내용을 알 수 있다.

 

- 위와 같은 여러 Username, Password가 적혀있는 TXT 파일 생성(대입을 위한 파일)

 

- 오른쪽 마우스 키 -> Send to Intruder

 

- Intruder -> Positions

- Attack Type: Cluster bomb 선택

- "clear"를 눌러 초기화시키고, username과 password만 "add"를 눌러 Payload 추가

 

- Payload -> Payload set은 1번(username)으로 설정 -> Payload Options에서 Load를 클릭하여 위에서 생성한 Username TXT 파일을 Load

 

Payload set은 2번(password)으로 설정 -> Payload Options에서 Load를 클릭하여 위에서 생성한 Password TXT 파일을 Load

- 설정 후, "Start attack" 클릭

 

- 공격에 대한 결과로 위와 같이 결과가 출력된다.

- 중간에 확인하게 되면 Length가 다른 것을 확인할 수 있는데, 해당 username과 password로 로그인이 가능하다는 것을 나타낸다.

=> Impossible에서는 Status가 200이 아닌 302로 나오는 것을 확인할 수 있다. Impossible에서는 여러 번 로그인 실패 시에 처리하는 코드가 들어있기 때문이다.

 

- username과 password을 공격을 통해 알아낸 값으로 변경 후 Forward 클릭

 

- 위와 같이 정상적으로 로그인했다는 문구가 나오게 된다.

 

- Impoassible과 Low 소스 코드를 비교하게 되면, Impossible에는 로그인 실패 시에 추가적으로 처리하는 코드가 입력되어 있는 것을 확인할 수 있다.

 

 

2. Command Injection

- 웹 요청에 시스템 명령어를 보내 이를 실행하도록 하는 공격

 

* 대응 방안

 - "|", "&", ";" 등 시스템상에서 멀티라인을 지원하는 특수 문자에 대한 검증을 실시하는 코드를 사용함으로써, 해당 함수에 유해한 값이 전달되지 않게 해야 한다 [1]

 

 

- "[IP] | ls -al" 입력, IP뿐만 아니라 or을 의미하는 "|"와 같이 명령어를 입력한다.

 

- 위와 같이 해당 IP에서 "ls -al" 명령어를 실행한 결과를 출력하게 된다.

 

- High와 Low 소스 코드를 비교하게 되면, High에는 입력되는 추가 입력에 대해서 처리하는 코드가 있지만 Low에는 그렇지 않은 것을 확인할 수 있다.

 

 

 

출처

[1] http://i-bada.blogspot.com/2013/01/16command-injection.html