■ 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
'Server > 보안' 카테고리의 다른 글
Kali Linux - DNS Spoofing 공격 (Ettercp 이용) (0) | 2019.08.02 |
---|---|
Kali Linux - NFS 취약점 공격 (0) | 2019.07.30 |
Kali Linux - ARP Spoofing 공격 (Ettercp 이용) (0) | 2019.07.28 |
Kali Linux - DHCP Starvation 공격 (Yersinia 이용) (0) | 2019.07.23 |
Kali Linux - 취약점 분석 도구, 명령어(정보 수집 / openvas, nessus, nmap, dig, beef) (0) | 2019.07.22 |