2023. 5. 18. 01:19ㆍSite/DVWA
# bruteforce attack
- 인증 시스템을 해킹하거나 데이터를 탈취하기 위해 비밀번호, PIN, 암호화된 데이터의 키 또는 다른 인증 정보를 무차별 대입하는 공격 방법
- 공격자는 대량의 가능한 비밀번호 목록을 작성한 다음 이를 시스템에 대입하여 올바른 비밀번호를 찾을 때까지 계속 시도
cf)
사전대입방법
방법
1. 직접코딩[파이썬]
단점 : 직접 개발해야되므로 시간소모
장점 : 공격속도가 빠름
2. 히드라
단점 : cmd로 하므로 약간 사용어려움이있음
장점 : 오픈소스, FTP, SSH등 인증과 관련된 프로토콜은 거의 가능하며 다양한 프로토콜을 지원함
3. 버프슈트의 인프로더 기능
단점 : 전송속도가 느려서 공격속도가 느림
장점 : 패킷을 잡아서 공격함, 사용법이 간단함
- 자동화된 소프트웨어를 사용하여 비밀번호를 대입하며, 이를 통해 많은 시도를 빠르게 수행할 수 있음
# 공격 순서도
공격자는 대량의 가능한 비밀번호 목록을 작성 -> 자동화된 소프트웨어를 사용하여 비밀번호를 대입 -> 시스템은 비밀번호를 검증하고 올바르지 않으면 거부 -> 공격자는 시스템이 거부하는 모든 비밀번호를 재시도 -> 공격자는 시스템이 거부하는 모든 비밀번호를 재반복함
# low
일단 비밀번호 틀리게 입력
소스코드를 보니 get으로 전달하고 input타입으로 name과 password를 받음. 틀렸으면 나타나는 문구도 보임
참고로 칼리에서 /usr/share/dvwa/vulnerabilities 로 이동하면 각 취약점 문제에 대한 low, medium, high, impossible 소스코드를 볼 수 있음
먼저 Dvwa에 비밀번호 1234입력해서 틀리게 한다음 버프슈트로 패킷잡아봤다
공격 상태가 보여지는데 기존 password 값인 길이만 4537로 값이 다르게 나타났다. 따라서 해당 부분이 패스워드이다.[status말고 length보고 판단]
# medium
1. 비밀번호 부분에 snaitise 추가됨
-> mysqli_real_escape_string()함수 추가
== php에서 제공하는 함수로 MYSQL과 커넥션을할때 String을 Escape한 상태로 만들어준다.
mysqli_real_escape_string(connection, escapestring);
cf)
MYSQL 과 연결하는 connection과 escape형태로 만들어줄 string을 입력한다.
NULL(\x00), \n, \r, \, ', " 문자 앞(왼쪽)에 \를 붙여 사용자의 입력에 의해 악의적인 쿼리문이 실행되는 것을 막는다.
우리가 string을 입력할때 Tom's cat 이란 입력을 하면 '는 sql문에 앞서 있던 ' 와 중첩이 될 수 있다.
이러한 문제를 막기위해 \n, \r \" 처럼 구별해주는 형태로 만들어주는 것을 Escape string 이라고 한다.
2. Low와 다른게 로그인 실패시 2초뒤 다시 할 수 있는 딜레이 설정됨
Low레벨과 같은방법으로 공격하면됨. 차이점은 attack할 때 결과값이 2초뒤마다 나타남
# high
Token이 추가됨. 로그인 하는 처음 화면의 토큰값이랑 비교하는 것 같다. 이 경우에는 강제 소스코드를 만들어서 넣어야 되는데 추후에 다시 시도를 해봐야 될 것 같다...
# impossible
임파서블에서는 로그인이 계속 실패되면 15분 잠금
표시한 부분에서 3번 틀리면 15분간 잠금
이런것처럼 버프슈트에서 제일 안전한 방법은 회수제한을 주고 틀리면 잠그는 방법인 것 같다
'Site > DVWA' 카테고리의 다른 글
about dir burster & nikto & dnsenum (0) | 2023.05.20 |
---|---|
file upload (0) | 2023.03.08 |