https://dreamhack.io/wargame/challenges/330
[wargame.kr] crack crack crack it
Description .htaccess crack! can you local bruteforce attack?
dreamhack.io
인덱스 페이지다. 클라이언트에게 `.htpasswd` 파일을 제공한다.
blueh4g:$1$8CpulMi3$JMs3YTM88yXJOuBrIAVcQ0
`.htpasswd` 파일은 이런 형식으로 되어있다.
`blueh4g`는 아이디
`$1`은 해싱 방식. 여기선 md5를 썼다
`$8Cpulmi3`은 솔트
그 이후는 해싱된 값이다.
이러한 형식에 대해서는 아래 사이트를 참고했다.
https://www.vidarholen.net/contents/blog/?p=32
Password hashing with MD5-crypt in relation to MD5 – Vidar's Blog
If you haven’t reinstalled recently, chances are you’re using MD5-based passwords. However, the password hashes you find in /etc/shadow look nothing like what md5sum returns. Here’s an example: /etc/shadow: $1$J7iYSKio$aEY4anysz.gtXxg7XlL6v1 md5sum:
www.vidarholen.net
문제에서 비밀번호에 대한 정보를 줬다.
- `G4HeulB`로 시작한다
- 이후의 글자들은 소문자 알파벳 혹은 0-9까지의 숫자로 이루어져 있다
이를 통해 브루트 포싱을 하라고 유도한다는 것을 알 수 있다. 사실 문제에서 브루트 포싱 하라고 알려줌
찾아보니 로컬에서 패스워드 크래킹할 때 `John the ripper`라는 툴을 많이 쓴다고 한다. 칼리에도 깔려있으니 해당 툴로 진행하겠다.
john --1=[0-9a-z] --mask=G4HeulB?1 --min-length=8 ./htpasswd
해당 명령어로 패스워드를 구할 수 있다.
`john`은 `john the ripper`를 실행시키는 명령어다
`--1=[0-9a-z]`는 숫자와 소문자 알파벳을 의미한다.
`--mask=G4HeulB?1`는 앞 글자를 지정하고 뒤에 오는 글자의 범위를 제한할 수 있다. ` G4HeulB `로 시작한다는 것을 반영했고, `?1`을 통해 이후의 글자들이 소문자 알파벳 혹은 0-9까지의 숫자로 이루어져있다는 것을 반영했다. `1`은 앞에서 선언한 `--1=[0-9a-z]`이다.
만약 숫자만 가진다면 `?d`로 나타낼 수 있고 대문자 알파벳이면 `?u` 소문자 알파벳이면 `?l`로 나타낸다. 해당ㅎ는 글자가 없다면 위와 같이 `--1=[]`, `--2=[]`로 선언하여 사용할 수 있다.
`--min-length=8`은 최소 길이를 지정할 수 있다. 반대로 `--max-length`로 최대 길이를 지정할 수 있다.
`./htpasswd`은 크랙할 파일을 지정한다. `htpasswd`파일 그대로 넣으면 프로그램이 알아서 어떤 형식으로 해싱되어있는지 파악해서 브루트포싱한다. `--format`을 통해 형식을 지정해줄 수도 있다.
위와 같이 크랙한 결과를 볼 수 있다.
john --show ./htpasswd
위의 명령어로 결과를 확인할 수도 있다.
크랙한 파일을 다시 크랙하려고 하면 안되는 것을 확인할 수 있을 것이다. 이럴땐 이전에 실행한 기록을 지워야 한다.
숨겨진 파일에 들어가 `john.pots`를 지워주면 다시 실행시킬 수 있다.
아무튼 찾은 패스워드를 입력시켜주면 flag를 얻을 수 있다.
짜잔
방어 방법
이 문제는 htpasswd 파일을 쥐어주며 패스워드를 찾아달라는 컨셉의 문제였다. 만약 실제 웹사이트였다면, htpasswd에 클라이언트가 접근가능하도록 설계해서는 안된다.
출처:
https://httpd.apache.org/docs/trunk/ko/programs/htpasswd.html
htpasswd - basic authentication에 사용할 사용자파일을 관리한다 - Apache HTTP Server Version 2.5
htpasswd - basic authentication에 사용할 사용자파일을 관리한다 이 문서는 최신판 번역이 아닙니다. 최근에 변경된 내용은 영어 문서를 참고하세요. htpasswd는 HTTP basic authentication에 사용할 사용자명과
httpd.apache.org
'웹 해킹 > 드림핵' 카테고리의 다른 글
[드림핵] node-serialize 풀이 (0) | 2024.03.10 |
---|---|
[드림핵] filestorage 풀이 (0) | 2024.03.03 |
[드림핵][wargame.kr] dmbs335 풀이 (0) | 2024.02.25 |
[드림핵] BypassIF 풀이 (0) | 2024.02.25 |
[wargame.kr] dun worry about the vase 풀이 (1) | 2024.02.24 |