본문 바로가기

수업 및 해킹실습

[Linux] 프록시(Proxy)와 브루트포스(Brute force) 공격

웹 해킹 실습

문제

 

netscan

netscan을 이용하여 IP정보, GW,

HOST, MAC 확인

 

mac주소가 같기 때문에 

같이 사용하는 주소라고 유추

 

유추한 세 주소를 통해 

텔넷 접속을 시도

 

192.168.10.60 접속 성공

서버의 apache버전, OS버전,

PHP버전 등 확인 가능함

 

웹으로 192.168.10.60 접속

 

프록시를 사용하여 Forward 함

숨겨져 있는 hidden 페이지를 찾음

 

/hindden/index.html

히든페이지 접속 시 힌트 발견

 

위 힌트를 토대로 /hidden/a/b/c/

접속 시 hidden.txt 파일을 발견

 

hidden.txt파일을 열었을 때 

계정을 찾으라고 힌트를 줌

 

프록시를 킨 상태에서

정보를 준 ID인 secureftp와

PW는 아무거나 세자리 입력

 

입력한 세 자리를 드래그하여 ADD

브루트 포스 공격을 수행함

 

브루트 포스 공격을 수행하기 위해

키 조합을 a~z까지 수행 (영문 3자리기때문)

최소 3자리부터 최대 3자리까지 수행

 

Request count가 17,576개

1분에 50개의 request인 것을

생각하면 너무 오래 걸림

 

hydra 도구를 이용하여 병렬 공격 진행

ssl/tls같은 보안 프로토콜에도 가능

사용자의 이름인 secureftp를 

길이가 3인 패스워드를 사용

 

a는 모든 알파벳 소문자, 대문자,

숫자, 특수문자 등 문자 집합

 

password가 pap인 것을 확인

 

good.txt 파일을 찾아 get으로 받아옴

 

good.txt파일을 확인해보면

계정 ID를 주고 PW 브루트 포스 공격 힌트 줌

 

받은 힌트 조합인 agto6497으로

2자리인 브루트포스 공격을 진행

Start attack 

 

브루트 포스 공격 성공

PW는 g7인 것을 확인

 

ID : master

 PW : g7      

아이디와 비밀번호 입력후 로그인

 

ID와 PW를 정확하게 입력하여

로그인에 성공, 환영메시지 확인

 

웹 해킹 공격 순서

 

 


 

쉘 스크립트

if (조건문)을 이용한 쉘 스크립트 작성

e 옵션을 통해 파일이 존재 여부 확인

해당 경로로 복사를 하면 "복사 끝!!! 완료!! 출력

파일이 없으면 else문으로 와서 "파일 없어 다시~" 출력

 

실행 시 파일이 없기 때문에

파일 없어 다시~ 출력

해당 경로와 파일을 생성

 

실행 시 복사 끝!!! 완료!! 출력

 

두번 째 쉘 스크립트 작성

첫번 째와 차이는 $와 [ 임

 

[] : 조건을 평가함(숫자, 문자열 비교 등)

$ : 변수의 값을 참조 출력 변수 저장

 

위와 같이 파일 생성

 

참 잘하셨어요 출력

 

while : 조건이 참인 동안 반복

-le 옵션을 통해 변수인 x가 10보다

작거나 같을 때 조건이 참이 됨

 

하지만 에러. 이유는 변수가 참조되지 않음

 

변수 x=0;으로 참조하고 다시 실행해보면

 

변수 x가 0이므로 10보다 작기때문에

echo "$x" 즉 0을 계속 출력함

 

expr은 수학 연산, 문자열 처리,

비교 연산 등을 수행함

 

x=$(expr $x +1)

반복문이 실행할 때마다

변수 x에 +1을 더하여 출력함

 

10보다 작거나 같을 때까지 +1을 증가하여

10까지 증가될 때까지 반복해서 출력함

 

sleep : 실행을 지연시킴

default : 초

m :분

    h : 시간

d : 일

 

2초 시간을 지연시켜 실행

 

반복문 실행 시 2초마다 시간을 지연시켜

딱밤 횟수 1씩 증가하여 n대 아얏~!! 출력

 

until : 조건이 거짓일 때 계속 실행

즉, 조건이 참이 될 때까지 반복

 

count는 0이지만 4보다 크거나 같을 때(거짓)
count가 1씩 증가하여 반복 출력함

 

0은 4보다 크거나 같을 때 조건이

거짓이기 때문에 1씩 증가하여 출력이 됨

 

RANDOM : 랜덤 숫자를 생성

0부터 32767까지 정수를 반환

그 값을 9로 나눈 나머지는 항상 0이상 8이하

 

0부터 10까지의 랜덤 숫자를 생성

변수 R에 저장, 조건에 만족하면 실행

10이 나올경우 8번 조건문 실행

5가 나올경우 5번 조건문 실행

0이 나올경우 11번 조건문 실행

나머지 값은 15번 행 출력

 

0부터 11까지 랜덤 숫자를 생성하여

랜덤으로 값을 생성, 해당 조건 실행하여 출력

 

비교 연산

 

for : 특정 작업을 여러번 실행

do...done : 반복할 코드 블록을 정의

 

첫 번째 코드는 인덱스만 출력하는 반면

두 번째 코드는 모든 요소를 출력하고 

마지막 a[4]도 다시 출력하여 중복 값을 출력 

 

실행 시 첫 포문에서 a[2] 인덱스의 값이 5,

a[4] 인덱스의 값이 9 출력

두 번째 포문에서 인덱스 @가 들어가서

모든 요소 출력 후, 인덱스 4번의 9출력

 

이중 포문

첫 번째 for문과 두 번째 for문 반복하여

i번은 1세트씩 증가할 때마다 , j회를 

1부터 9까지 전부 증가하여 출력

 

첫 번째 for문은 i가 1부터 9까지 반복

두 번째 for문은 j가 1부터 9까지 반복 후

곱셈 결과를 출력, echo ""로 줄바꿈

 

각 단이 구분되어 1단부터

9단까지 곱셈 결과를 출력