반응형

'분류 전체보기'에 해당되는 글 212건

반응형

세션결함

웹해킹/Bee-box 2017. 12. 29. 12:32
반응형

이번에는 세션결함에 대해 포스팅해보려고 한다. 로그인할때 아이디, 패스워드 입력없이도 세션만 알아낸다면 바로 로그인이 가능하기 때문에 세션이 해킹되게 되면 많은 문제를 야기할 수 있다. 세션자체가 한번 사용되면 버려지는 것이기 때문에 조금만 신경써서 보안을 설정해놓으면 큰 문제는 없지만 요즘 블랙해커들은 수법이 우리가 상상할 수 없을 정도로 고도화되어 있기 때문에 서버를 개발할 때도 항상 신경써서 개발해야 한다. 



1. 세션결함이란?


-  세션을 탈취당하는 행위이며, 가장 많이 도출되는 취약점 중 하나이다. 보통 세션관리미흡에서 많이 발생한다.

- 관리자 페이지에 대해 접근할 때 가장 많이 나오는 취약점 중 하나이다.

- 회원가입을 할 때 항상 아이디 비밀번호가 맞냐고 페이지 창으로 물어보는 경우가 있는데 이런식으로 보안 설정을 해      놓아야 세션이 탈취당할 일이 없다. 세션은 한 번 사용되고 폐기되는 것이기 때문에 물어봄과 동시에 또 한 번 세션이        바뀌게 된다.



* 세션결함 공격 실습


(1) Session Mgmt - Administrative Portals 공격




세션에 대한 실습은 의외로 간단하다. 그만큼 세션을 탈취하는 자체가 어렵지 않다는 반증이기도 하다. 현재 보안레벨이 low로 설정되어 있는데 페이지가 Lock가 되어 있지만 URL을 보면 admin=0이라는 주소가 있는데 이것만 admin=1로 바꾸어주면 페이지가 풀리게 된다.




admin=1로 바꾸어주니 URL 페이지 접근이 허용되었다는 메시지가 나오게 된다.





반응형

'웹해킹 > Bee-box' 카테고리의 다른 글

Xss공격(Reflected)  (0) 2017.12.29
Xss공격(Stored)  (0) 2017.12.29
인증결함  (0) 2017.12.29
XML/XPath 인젝션  (0) 2017.12.28
Blind SQL 인젝션  (0) 2017.12.28
블로그 이미지

만년필석사

,

인증결함

웹해킹/Bee-box 2017. 12. 29. 00:10
반응형

이번엔 인증결함에 대해 포스팅해보려고 한다. 실습자체는 간단한데 이 공격방식 또한 많이 쓰여지는 방식이기 때문에 항상 주의가 필요하다.


1. 인증결함이란?


- 인증에 필요한 사용자의 계정정보를 노출하는 취약점

- HTML코드, GET요청 URL에 변수를 노출

- 취약한 암호 인증

- 취약한 인증 과정


2. 인증결함 공격 과정



<출저: 보안프로젝트>



공격플로우를 보면 인증과정 결함, 세션관리 취약점 등으로 사용자 권한을 획득해 로그인 해 정보를 빼내는 경우가 많기 때문에 항상 세션관리, 인증방식에 대한 보안 검토를 철저히 할 필요성이 있다.



* 인증결함 공격실습*


(1) Broken Auth(Insecure Login Forms) 공격



InSecure Login Form의 보안단계를 Low로 설정했을시에 특이한 현상이 발생한다. 저렇게 블록지정해놓은 곳을 보면 아이디 비밀번호가 그대로 노출되어 있다. 예전에 많이 사용하던 방식이라고 하는데 요즘에는 보안이슈에 예민하기 때문에 거의 사용하진 않는다고 한다. 사진에 있는 아이디, 비밀번호만 입력해주면 바로 로그인 되는 것을 볼 수 있다.



로그인이 되면 success라는 문구가 나오는게 보이면 정상적으로 실행된 것이다.





이번에는 보안레벨을 medium으로 설정했는데 이 역시도 금방 해킹할 수 있다. 아까처럼 눈에 보이게끔은 아니지만 페이지 소스를 보면 바로 비밀번호 해킹이 가능하다.





페이지 소스를 보면 뭔가 암호화 하는 코드가 보일 것이다. 코드를 분석해서 일일히 알아낼 수도 있기는 하지만 시간이 걸리기 때문에 블록지정한 코드들을 복사해서 크롬 자바스크립트 콘솔을 활용해서 비밀번호를 알아냈다.




자바스크립트 콘솔에 코드를 붙여넣고 alert(secret)라는 명령어를 넣고 실행하면 바로 비밀번호를 알아낼 수 있다. 저 비밀번호를 넣고 로그인을 하면 비밀번호가 바로 공개된다.


 


(2) Broken Auth - Weak Passwords 공격 (1)


말그대로 패스워드 취약점을 이용한 공격방법이다. 이건 프록시를 잡아서 해야 하는데 일단 칼리리눅스가 무료버전이기 때문에 스레드도 하나밖에 안되서... 비밀번호 해킹하려면 한 3~4일은 돌려야 가능할 것이다. 그렇기 때문에 하는 방법만 포스팅했다.




일단  bee, bug라고 입력하고 프록시를 잡아준다.



그리고 버퍼스윗으로 와서 send to intruder을 클릭해 intruder로 프록시들을 보내준다.



그리고 패스워드에만 $$를 지정해준다. 오른쪽 Add, Clear로 쉽게 설정할 수 있다.



Payload로 가서 타입을 Brute forcer로 바꿔준다. 이 타입은 좀 더 많은 공격을 할 수 있다. min,max length도 3으로 맞춰준다.(비밀번호가 3자리였기 때문에) 이렇게 설정해줘도 46656번을 돌아야 비밀번호 알아내기가 가능해진다.




옵션은 따로 지정해 줄 건 없지만 스레드가 하나기 때문에 비밀번호를 찾는데 엄청난 시간이 걸린다. 유료로 사게 되면 스레드 설정이 가능하기 때문에 좀 더 빨리 비밀번호를 찾아 낼 수 있을 것이다.



그리고 target으로 가서 start Attack를 눌러주면 저렇게 실행되면서 비밀번호를 찾는다. 이게 스레드가 1개여서 3~4일은 돌려야 알아내기가 가능할 것이다-_-;;


(3) Broken Auth - Weak Passwords 공격 (2)



사진에 보이는 것처럼 구글에 검색을 하고 userpassword-passwds-phpbb.txt순으로 들어간다.





그리고 리눅스 창으로 가서 wget함수를 쓰고 URL을 복사해서 저렇게 넣어주고 실행해준다.



버프스윗으로 가서 Payloads쪽에 타입을 이번엔 SimpleList로 지정해주고 받은 파일 phpbb.txt를 그대로 로드해준다.



그리고 Positions탭으로 와서 Start Attack을 실행해주면 다음과 같은 화면이 나오면 정상적으로 실행된 것이다. 저런식으로 자주 사용되는 비밀번호들을 하나씩 찾아내게 된다. 이 또한 엄청 오래 걸리기 때문에 그냥 하는방법만 제시해 놓을 생각이다. 


(4)  Broken Auth - Password Attack



password attack도 크게 다른 내용은 없다. 보안레벨이 Low로 되어 있으면 아무거나 입력해도 바로 로그인이 되는 현상이 발생한다.



반면 보안레벨을 High로 맞춰놓고 했을시에 캡차가 나오게 되는데 이렇게 되면 Bruth Forcing이 불가능해져서 비밀번호를 알아내기 힘들어지게 된다. 사용자가 보고 일일히 입력을 해야 하기 때문이다.



인증결함방식 공격도 좀 다양했는데 항상 사용자 인증, URL 취약점 노출에 주의해야 한다고 생각한다. 인증결함방식에 대한 이론도 많기 때문에 조금 더 찾아보고 공부해보면 좋을 것 같다.





반응형

'웹해킹 > Bee-box' 카테고리의 다른 글

Xss공격(Stored)  (0) 2017.12.29
세션결함  (0) 2017.12.29
XML/XPath 인젝션  (0) 2017.12.28
Blind SQL 인젝션  (0) 2017.12.28
메타스플로잇(기초)  (0) 2017.12.28
블로그 이미지

만년필석사

,
반응형

이번 포스팅은 XML, XPath 인젝션에 대해 포스팅해보려고 한다. 사실 이 공격방식도 다른 공격들을 다뤘지만 많이 유사하고 크게 어렵지 않는 부분이다.


1. XML/XPath 란?


- XML구조에 악의적인 쿼리, 코드를 삽입해서 정보를 탈취하는 공격

- XML은 데이터를 트리구조로 표현한 것이 특징이며 XPath는 일종의 쿼리라고 생각하면 쉽다. 더 쉽게 설명하면 XML    은 데이터베이스이고 XPath는 SQL이라고 생각하면 훨씬 간단하고 편하다.


2. XPath 명령어


 <출저: 보안프로젝트>


XPath 명령어도 다양하게 있으므로 한번 참고용으로 보면 도움이 된다.




* 공격실습


1) XML/XPath 인젝션(Login Form) 





이 공격방식도 기존 공격방식이랑 비슷하다. 화면에 나온 명령어를 입력하고 로그인 버튼을 누르면 아래와 같이 화면이 잘 출력됨을 볼 수 있고 참일 경우에만 저런 화면이 나온다. 




만약 거짓임이 판별되면 화면처럼 빨간색 글자가 나오게 되면서 거짓임을 표시해준다.




2) 공격쿼리 실습



몇가지 공격쿼리가 있는데 neo' and count(../count::*) = 6 or 'a'='b 라고 입력해주면 저런식의 화면이 나오게 된다. ../은 상위디렉토리인 heros로 가서 heros에 있는 내용을 출력하겠다는 의미인데 그 값이 6인지 확인해보는 쿼리이다.





이번에는 neo' and string-length(name(parent::*)) = 6 or 'a'='b  라는 쿼리를 입력해주고 실행시켜도 저렇게 화면이 참으로 나온다. 길이를 알아보기 위한 쿼리인데 parent안에 있는 이름을 알아보려는 쿼리이다. 이 공격방식도 앞에서 설명한 Blind SQL인젝션 공격이랑 많이 흡사하다.




이번에는 neo' and substring(name(parent::*),1,1) = 'h' 'a'='b라는 쿼리를 입력해주고 실행시키면 참이 나오는데 substring에는 지난번에도 포스팅했지만 문자열을 알기 위한 함수이다. h라는 것이 첫번째 글자에 있기때문에 참이 나오는 것이다. 



3) XML/XPath(Search)실습


이번것도 별다른 건 없다. URL에 쿼리를 삽입하는 방식은 Blind 공격과 많이 흡사하다. 비박스  xmli_2.php파일로 들어가면 xpath 전달 경로를 볼 수 있다. 여기에 코드를 삽입해준다.






action이라는 부분에 공격할 쿼리인 ')] | //* | a[('를 삽입시켜주면 다음과 같은 화면이 조회된다. 그렇게 되면 heros에 있는 xml파일들이 다 조회가 가능하게 된다. 이런식으로 SQL 인젝션을 통해 xml파일 해킹 또한 가능하게 된다. 아래 사진은 heros.xml파일 내용이다. 이 부분들이 출력되는 것이다.




이렇게 XML/XPath 인젝션에 대해서도 포스팅 해봤지만 기존에 포스팅했던 공격들과 매우 흡사한 형태를 띠고 있다. XML변조 공격도 많이 이루어지고 있으니 항상 공부하고 대비하는 방법을 생각해보는 것이 좋을 것 같다.

반응형

'웹해킹 > Bee-box' 카테고리의 다른 글

세션결함  (0) 2017.12.29
인증결함  (0) 2017.12.29
Blind SQL 인젝션  (0) 2017.12.28
메타스플로잇(기초)  (0) 2017.12.28
sqlmap 활용법  (0) 2017.12.28
블로그 이미지

만년필석사

,
반응형

이번에는 Blind SQL 인젝션에 대해 포스팅 해보려고 한다. Blind SQL 인젝션 공격 역시 활용도가 매우 높고 많이 사용하는 공격이기 때문에 취약점을 잘 찾아서 대비하는게 중요하다. 악의적인 쿼리를 삽입해서 사용자 id password를 알아낼수 있기 때문에 대비책이 어떤것이 있을지에 대해 고민해 봐야 할 것 같다.


1.  Blind SQL 인젝션이란?


- 쿼리의 결과를 참과 거짓으로만 판별시켜서 웹페이지를 공격하는 기법

- 출력내용이 참 아니면 거짓만 존재하기 때문에 데이터베이스의 내용들을 조작해서 공격하는 점이 가능하다는게 특징이다.


2. Blind SQL 인젝션 공격플로우


<사진출저: 보안프로젝트>


사용자 DB정보를 알아낼때 처음에는 참과 거짓으로만 판단해서 알아보고 해커가 어느정도의 길이가 필요한지 쿼리를 써서 알아내고 마지막에 최종적으로 아스키코드 쿼리를 대입시켜서 비밀번호를 찾아낸다. 이런 취약점이 발생하지 않도록 사전에 예방하는 것이 중요하다. 악의적인 쿼리가 어떤 것이 있는지, 어떻게 알아내는지 알아보자.



* 공격 실습*


(1) Blind SQL 인젝션 공격으로 쓰는 쿼리들



이런식으로 information_schema 데이터베이스를 사용하겠다고 명령문을 주고 테이블을 조회해보면 여러가지 정보들이 나오게 된다.



테이블의 table_name을 조회해보기 위해 select table_name from tables limit 0,1 명령어를 주면 table_name에 테이블이 있다고 표시되게 된다. 그리고 length명령어를 줘서 테이블이름의 길이를 조회해보면 14라는 결과값이 나오게 된다. 악의적인 해커들이 이런식으로 자신이 어느정도의 길이가 되는 정보를 알고싶은지 조회할 때 이런 쿼리를 쓰게 된다. 하나 더 추가로 아래 구문과 같이 = 1이라는 숫자를 붙여줬는데 이게 table_name안에 있는 테이블이 길이가 1이 맞는지 확인해보기 위해서 쓴다. 하지만 결과는 0(거짓)으로 나오게 된다. 




반면에 14라는 값을 주게 되면 1이 출력이 되게 되는데 이것은 참이라는 뜻이다. 아까도 봤지만 길이는 14였기 때문이다.



이제 길이를 알았기 때문에 암호화된 이름을 어떤식으로 푸는지 알아보자.



substr이라는 쿼리문을 썼는데 문자열 시작 위치에서부터 개수만큼의 글자를 가져오는 쿼리문이다. 

substr(문자열, 시작위치, 개수) 이런식으로 쿼리문을 구성해주면 된다. 주로 Blind SQL 인젝션 공격할 때 쓰는 대표적인 쿼리이다. 사진에서 보면 table_name에서 어떤 글자인지 알아보기 위해 조건문을 줬는데 뒤에 1,1이라고 썼는데 첫번째 글자부터 1개를 출력해서 C가 나온 것이고 2,1은 두번째 글자부터 1개를 출력해 H를 출력하는 형식으로 해서 테이블 이름을 알아내는 구조이다.



또 하나의 공격 쿼리가 있는데 참인지 거짓인지 알아보는 형식으로 푸는 쿼리이다.



이런형식으로 아까와 비슷한 쿼리문을 썼지만 맨 뒤에 A,B,C와 같은 문자가 붙었다는 것이 특징이다. 3번째 글자부터 1개를 출력해서 그게 A인지 B인지 C인지 판별해서 맞으면 1 틀리면 0을 출력시켜 테이블 이름을 알아내는 공격 쿼리이다. 이 또한 많이 쓰이고 있는 공격쿼리 중 하나이다.




마지막으로 아스키코드 방식으로 공격하는 쿼리가 있는데 어떤형식인지 알아보자.




이런형식을 띠고 있는데 ascii라는 쿼리문이 추가된 화면이 보일 것이다. 뒤에 65, 66은 아스키코드 번호인데 이런형식으로 참인지 거짓인지 판별해서 아스키코드 값을 해독해내서 알아내는 방식이 있다. 아스키코드를 잘 모른다면 구글에 아스키코드표가 있으니 그걸 참고해보면서 공부하면 될 것 같다.


(2) Blind SQL 인젝션 Boolean-Based 실습


이번에는 비박스를 활용해서 Blind SQL인젝션에 대해 실습해 보려고 한다. Boolean-Based라는 것을 선택하고 핵을 눌러준다.





이게 참인지 거짓인지 확인해보기 위해 'or 1=1 #이라는 명령어를 주고 탐색을 눌러보면 정상적으로 데이터베이스가 있다고 결과가 나오게 된다.(참)



반대로 'or 1=2 #이라는 명령어를 주고 탐색을 누르면 데이터베이스가 존재하지 않는다는 결과가 나오게 된다.(거짓)





이제 movie라는 테이블에서 id=1이고 첫번째 시작글자가 G가 맞는지 확인해보는 실습이다. 'or id=1 and substr(title,1,1) = "G" #이라는 쿼리를 입력하고 탐색을 누르면 결과가 참이라는 화면이 나오게 된다. 이런 기초 실습이 되어 있어야 후에 응용도 할 수 있으니 잘 알아두면 좋다.




반대로 타이틀 뒤에 2라는 것을 넣어주고 G가 맞는지 보면 데이터베이스가 없다고 거짓이 나오게 된다. 실제로 테이블을 확인해봐도 2번째에서 첫번째값은 G가 아님을 확인할 수 있다.



(3) Blind SQL인젝션 (WS/SOAP) 실습




이것도 아까 했던 실습과 큰 차이는 없다. 이번엔 웹페이지 URL을 바꿔서 알아보는 방법인데 이 역시도 title 취약점을 이용해서 해킹해보는 실습이다. 타이틀은 아무거나 주고 뒤에 or 'a'=a라고 입력하면 화면에 100movie~라는게 출력됨을 볼 수 있다. 해커들이 주로 이 방식을 이용해 공격한다.




반면 b라는 값을 넣어주면 화면에서와 같이 movie테이블에서 확인할 수 없다는 거짓판별을 내린다.



(4) sqlmap 테스트 실습


이번에는 sqlmap으로 배너를 알아보기 위한 실습이다. 지난번 포스팅에서도 한번 한거라 크게 어려움은 없을 것이다. 



칼리리눅스를 실행시키고 위와 같은 명령어를 입력해준다. 자신이 사용하고 있는 URL 주소와 프록시를 걸어서 알아낸 쿠키값을 넣어주고 실행시킨다.



그리고 몇분동안 실행이 진행되다 보면 banner가 실행되어 현재 시스템 정보들을 알아낼 수 있다. 지난 포스팅에서도 이야기 했지만 Sleep함수는 절대 함부로 쓰면 안되는 함수이다! 



Blind SQL인젝션 실습에 대해 간단히 포스팅 해봤는데 생각보다 노가다성도 강한 공격이다. 계속 바꿔주고 바꿔주는 형식으로 해서 공격해야 하는 방식이기도 하지만 해커들이 많이 사용하는 공격이기도 하기 때문에 잘 알아두면 대응책을 생각해 볼 수도 있을 것이다. 본인도 계속 알아가는 과정이며 많은 공부를 한다고 생각한다. 

반응형

'웹해킹 > Bee-box' 카테고리의 다른 글

인증결함  (0) 2017.12.29
XML/XPath 인젝션  (0) 2017.12.28
메타스플로잇(기초)  (0) 2017.12.28
sqlmap 활용법  (0) 2017.12.28
SQL 인젝션 기초  (0) 2017.12.26
블로그 이미지

만년필석사

,
반응형

이번 포스팅에서는 메타스플로잇 기초 활용법에 대해 해보려고 한다. 메타스플로잇도 많이 사용하는 해킹도구이며 이 또한 강력한 해킹도구이기 때문에 항상 가상에다가만 실험해야 한다.


1. 메타스플로잇이란?


- 오픈소스도구로 취약점을 분석할 때 주로 쓰임

- 공개된 공격코드 정리,검증으로 시간을 단축해주는 도구이다.

- 취약점에 대한 쉘코드가 제공되며, 취약점을 분석하는데 있어서 짧은시간안에 취약점을 발견할 수 있다.



(1) 메타스플로잇 실습


먼저 구글에 다음 사진과 같이 검색을 해준다.




그리고 GitHub로 들어가 Raw를 클릭해준다.






그리고 이런식으로 오픈소스가 나오게 되는데 기본적으로 메타스플로잇은 오픈소스이기 때문에 취약점에 대해 분석이 용이하다. Raw를 클릭해주고 아래와 같은 사진의 화면이 나온다면 정상적으로 된 것이다.






그리고 현재 접속되어 있는 URL을 복사해서 이미지를 설치할 것이다. 아래 사진과 같은 명령어를 입력한다.



데스크탑 폴더안에 wget을 써서 그대로 붙여넣고 엔터를 누르면 저렇게 화면이 나오면 정상적으로 잘 설치된 것이다.







그리고 설치된 파일을 카피한다. 위 사진에 블록지정된 부분을 카피해서 저렇게 명령어를 써주고 실행시켜 사진과 같은 화면이 뜨게 되면 정상적으로 잘 작동된 것이다.



그리고 메타스플로잇 DB를 실행시켜 준다. 본인 것은 이미 실행중에 있다.



그리고 메타스플로잇의 콘솔을 실행시켜준다. 사용자가 사용할 수 있는 일종의 쉝창이라고 보면 된다.



이런 화면이 나오게 되면 쉘 창이 정상적으로 실행된 것이다.



올렸던 파일이 어디에 있는지 경로를 확인해 주는 것이다. search bwapp를 입력해주고 use명령어로 경로를 붙여넣고 실행해주면 cmdi를 사용할 수 있는 환경이 전부 구축이 된 것이다.



그리고 Rhost를 check해서 취약점을 분석하면 된다. 자신의 호스트 주소를 넣고 check명령어를 써주면 저런식으로 취약점이 있다고 결과창이 나오게 된다.



run이라는 명령어를 사용해서 백도어가 연결되면서 메타프리터가 연결이 되게 된다. 메타프리터는 일종의 쉘이다.



이렇게 shell이라는 명령어를 입력해주고 whoami, cat함수 등을 입력해주게 되면 정보들을 전부 볼 수 있다.



이번 포스팅에서는 메타스플로잇이 어떤 것인지에 대해 간단하게 알아보았다. 본인도 메타스플로잇을 활용해 해킹을 해보지는 않았지만 어느정도 메타스플로잇의 활용도에 대해 공부하고 실습해보고 익숙해지게 되면 다시 그 활용실습에 대해 포스팅 해볼 계획이다.

반응형

'웹해킹 > Bee-box' 카테고리의 다른 글

XML/XPath 인젝션  (0) 2017.12.28
Blind SQL 인젝션  (0) 2017.12.28
sqlmap 활용법  (0) 2017.12.28
SQL 인젝션 기초  (0) 2017.12.26
iframe, ssl 인젝션  (0) 2017.12.25
블로그 이미지

만년필석사

,

sqlmap 활용법

웹해킹/Bee-box 2017. 12. 28. 00:30
반응형

이번 포스팅은 sqlmap에 대해 포스팅 해보려고 한다. sqlmap은 DB정보도 다 캘 수 있을 정도로 강력한 툴이기 때문에 항상 가상서버, 가상사이트에다가만 실습해야 하고 실사이트, 실서버 공격 절대 금지다! 항상 해킹은 악한곳에 쓰는것이 아닌 악한목적으로 해킹하려는 블랙해커들의 해킹을 방지하는 방법을 연구하기 위해 공부하는 것이다. 이 점만 꼭 명심하고 해킹공부를 해야 한다.


1. SQL Map이란?

- 탐지과정, sql 인젝션 결함을 사용한 익스플로잇, 데이터서버를 접수를 자동화한 오픈소스 침투 점검 도구이다. 

- SQL Map은 항상 궁극적인 침투 점검자를 위한 틈새특성, 데이터베이스로부터 데이터 가져오기, OS Command 실행과 같은 강력한 탐사 엔진을 보유하고 있다.

- SQL Map은 SQL 인젝션할 때 많이 사용하는 도구로 항상 조심해서 사용해야 하며 반드시 가상웹사이트에서만 사용해야 한다.


*SQL Map 공격 실습*


(1) SQL injection(GET/Search) 공격




일단 SQL Injection(Get/search)를 선택하고 핵을 눌러준다. 보안레벨은 Low로 세팅시키고 aaaaa를 입력하고 검색버튼을 눌러준다.




그렇게 되면 이런식으로 URL이 뜨게 되는데 여기서 title에 대한 취약점을 이용해 해킹해보는 실습을 해보려고 하는 것이다. 저 URL 값을 copy해준다.



그리고 sqlmap -u "URL주소" -b -v 3 -p title 이라는 값을 리눅스창에 입력해주고 엔터를 눌러준다. 여기서 -b는 banner들을 보여주는 명령어이며 -v는 정보를 보여주는데 1이라는 값이 가장 상위이며 숫자가 커질수록 상세하게 정보를 볼 수 있다. -p는 파라미터를 의미한다.



이런식으로 화면이 뜰텐데 당연히 잘 안될 것이다. title 뒤에 쿠키값을 입력을 안해줬기 때문이다. 쿠키값 가져오는 법은 아래 사진처럼 프록시를 걸어주고 버퍼스윗을 활용해서 하면 된다.



이런식으로 걸어주고 블록지정한 부분이 쿠키값인데 이걸 copy해준다.




title 뒤에 저렇게 명령어를 입력하고 방금 복사했던 것을 그대로 쿠키명령어 뒤에 붙여주고 엔터를 눌러주면 된다.




정상적으로 실행이 되었으면 이런 화면이 나오는데 현재 서버 운영체제들, 어플리케이션 정보들을 볼 수 있다. 아까 banner라는 명령어를 써서 이런 정보들이 나타나게 되는 것이다.




banner는 시스템 현황을 알려줬고 이번엔 mysql에 어떤 정보가 저장되어 있는지 알아보려는 명령어를 써줬다. -D는 데이터베이스를 의미하며 testdb는 현재 있는 데이터베이스이다. 




그러면 이런식으로 어떤 테이블 정보가 저장이 되어 있는지 한눈에 확인할 수 있다. 






이번에는 table안에 어떤 정보가 있는지 알아보려고 한다. 데이터베이스 뒤에 -T '테이블명' --dump를 입력해준다. -T는 테이블을 조회할때 쓰는 명령어이다.




명령어를 입력하고 정상적으로 동작했다면 이런식으로 테이블안에 있는 정보들을 전부 다 볼 수 있다. 하지만 언제까지나 꼭 가상환경에다가만 해야 되고 절대 실환경공격 금지이다!


(2) SQL Injection(POST/Search) 공격


Post방식도 Get방식과 차이는 거의 없다. 단지 프록시를 잡아주는 것 외에는 공격방식은 동일하다.




이런식으로 프록시를 잡아주고 아까는 sqli.1.php였지만 이번엔 sqli.6.php이다. 




이런식으로 명령어를 입력해준다. 아까 Get방식과 차이점이 좀 있다면 URL쪽이 sqli_6.php로 바뀌었다는 것과 title부분에 --data가 추가되었다는 것인데 --data는 Post방식에서 데이터에 대한 내용을 담는 명령어이다. 




명령어가 잘 실행이 되면 이런식으로 아까와 같은 화면이 잘 출력이 되게 된다.



그리고 참고사항이 하나 있는게 Sleep함수가 있는데 이건 스레드들을 전부 잠재워버릴 수 있는 무서운 함수이다. 스레드가 동작하지 않으면 그 DB자체가 동작할 수 없기 때문에 항상 조심해서 사용해야 한다. 



sqlmap활용법도 간단하게 포스팅해봤는데 sql인젝션 공격이 워낙 다양하다보니 많은 실습과 이론공부가 병행되어야 할듯 싶다. 다음 포스팅은 메타스플로잇의 간단한 활용법에 대해 포스팅 해 볼 생각이다.

반응형

'웹해킹 > Bee-box' 카테고리의 다른 글

Blind SQL 인젝션  (0) 2017.12.28
메타스플로잇(기초)  (0) 2017.12.28
SQL 인젝션 기초  (0) 2017.12.26
iframe, ssl 인젝션  (0) 2017.12.25
PHP Command 인젝션 공격  (0) 2017.12.25
블로그 이미지

만년필석사

,
반응형

이번엔 SQL 인젝션에 대해 포스팅하려고 한다. SQL 인젝션으로 인해 많은 공격을 당하고 고객정보도 탈취하는 사건이 요즘에도 계속 일어나고 있다.(대표적으로 뽐뿌사이트) 


* 공격실습


(1) SQL Injection(GET/Search)


일단 비박스에서 mysql에 접속해서 다음과 같은 명령어들을 입력해줘서 테이블을 만든다.


이런식으로 입력을 잘하게 되면 아래 사진과 같은 화면이 나온다.



이렇게 결과가 나오면 잘 만들어진 것이다.




사진과 같이 SQL Injection search모드를 선택하고 search 버튼을 눌러주면 DB목록이 나오게 된다.



쿼리목록에 use information_schema라고 입력하고 show tables;라고 입력하면 17개의 컬럼이 나오게 된다.



그리고 찾기 목록에 0' union select 1, table_name, 3,4,5,6,7 from information_schema.tables라고 입력해주면 우리가 mysql에서 추출했었던 스키마 쿼리와 똑같은 컬럼이 나온다는 것을 볼 수 있다.






0' union select 1, concat(id, login),password,email,secret,6,7 from users;라고 입력해주면 위 사진과 같은 화면이 나오게 된다. id, password, email이 나와 있긴한데 release컬럼을 보면 전부 해쉬값으로 나와있다. 이걸 해독해주는게 필요하다. 




hash -identifier라고 리눅스에 입력해주고 맨 아래로 내려보면 sha1~이렇게 나와 있는데 이건 구글 해독기를 이용해 해독해보도록 하겠다.



이렇게 해독해보면 우리가 로그인할때 썼던 password가 해독되어 있음을 볼 수 있다. 이렇게 mysql DB 이름을 손쉽게 해쉬함수를 사용해서 알아낼 수 있었다. 이번에 뽐뿌사이트도 이 공격으로 해쉬함수가 해독당해 해킹당한 대표적인 사례이다.


<대응방안>



High단계로 보안단계가 상승되면 check버튼이 동작되게 되는데 여기서 mysql_real_escape_string이라는 함수가 있는데 이 함수가 특수문자들에 백슬래쉬를 붙여서 입력된 값을 SQL문법으로 인식되지 않게끔 방어하는 함수이다. 



mysql_real_escape 함수를 써서 입력한 데이터를 필터링을 걸면 High방어가 될 수 있다.



위 사진과 같이 High단계로 설정하고 검색했을시에는 아무것도 나오지 않음을 알 수 있다.





(2) SQL Injection (GET/Select) 공격


그리고 또하나 공격기법은 테이블 내용이 limit함수를 쓰면 계속 바뀌는 것을 볼 수 있다. 


<대응방안>


stmt prepare함수가 가장 안전한 함수중에 하나로 꼽힌다. sql을 정형화해서 사용하며, 만약 where 조건에 no= 1=1 이런식으로 해서 쿼리를 하게 되도 no값하고만 비교를 하게 되서 결국엔 변조가 불가능하게 된다. 그렇기 때문에 prepare함수를 쓰는게 가장 안전하다고 할 수 있다.



이런식으로 High에다 설정하고 limit값을 바꿔보면 전혀 변화가 일어나지 않다는 것을 볼 수 있다.



(3) SQL Injection(POST/Search) 공격

이 공격도 파라미터만 잡아주는 것 외엔 아까 했던 GET과 공격방식은 거의 흡사하다.



일단 abcd를 입력해주고 버프스윗에서 파라미터를 잡아준다.



이런식으로 파라미터가 잡히게 되는데 abcd' or 1=1 #을 title에다가 입력해주고 intercept off를 하게 되면 다음과 같이 모든 테이블들이 조회되는 것을 볼 수 있다.




(4) SQL Injection(POST/Select) 공격


다음은 이렇게 Post/Select를 Hack해주고 첫번째 타이틀을 선택하고 go버튼을 눌러준다.




그리고 버프스윗에서 파라미터를 잡아주고 2번째 타이틀을 선택해주고 싶을때 8 or 1=1 limit 1,1이라고 입력해주고 intercept off를 눌러준다.



그러면 아래와 같이 두번째 타이틀인 Iron Man이 출력이 되었다는 것을 볼 수 있다.





SQL인젝션 기초 공격은 이정도 인데 다음 포스팅에서는 좀 더 심화된 공격으로 포스팅 해보도록 하겠다. SQL 인젝션은 가장 많이 해커들이 사용하고 있는 수법이기 때문에 항상 보안설정에 대한 대비가 필요하다.











반응형

'웹해킹 > Bee-box' 카테고리의 다른 글

메타스플로잇(기초)  (0) 2017.12.28
sqlmap 활용법  (0) 2017.12.28
iframe, ssl 인젝션  (0) 2017.12.25
PHP Command 인젝션 공격  (0) 2017.12.25
HTML 인젝션(2)-Stored  (0) 2017.12.25
블로그 이미지

만년필석사

,
반응형

이번에는 iframe, ssl 인젝션에 대해 포스팅 해보려고 한다. 이번 인젝션들도 블랙 해커들이 많이 사용하는 수법중에 하나이다.


* 공격 실습


(1) iframe 공격


iframe 공격은 HTML문서 안에 있는 또 다른 HTML 문서를 보여주는 태그로 다른 프레임들과는 달리 어디서나 사용이 가능하며 너비, 높이등을 조절할 수 있기 때문에 웹페이지에 안보이게끔 악성 페이지를 삽입할 수 있어 치명적인 공격을 할 수 있다. 



iframe 인젝션을 실행시키면 다음과 같은 화면이 나오게 된다. 여기서 이제 페이지 한개를 삽입해 보도록 하겠다.



이런식으로 삽입이 되었다10.0.2.5/bWAPP/iframei.php?                               ParamUrl=robots.txt " height="250" width="250"></iframe><iframe frameborder="0" src=http://10.0.2.5/bWAPP/attack.html height="0" width="0"></iframe>&ParamWidth=250&ParamHeight=250


를 입력해주면 아래 사진과 같은화면을 만들 수 있다.





이렇게 높이 너비를 0으로 만든 결과이다. 아무것도 보이지 않기 때문에 악성페이지가 삽입되었는지 사용자들은 알 길은 없다.



비박스에서 이렇게 attack.html파일로 만들어 준다음에 아까 써놓은 주소를 다시 실행시켜 보면 보안레벨이 낮으면 다음과 같은 화면이 나온다.



이렇게 쿠키값을 탈취할 수 있게 된다. 쿠키가 탈취되면 사용자정보 또한 전부 노출될 수 있기 때문에 매우 위험하다.


<대응방안>



사진에 나와 있는 코드를 보면 보안레벨이 높은 경우 if문에서 robots.txt파일만 불러와 하드코딩을 실행하게 되는데 변조된 URL은 무시하고 그냥 오로지 하드코딩 된것만 실행하게 된다. 보안레벨이 낮은경우엔 요청된 URL값을 paramURL의 변수로 받고 그대로 xss를 거쳐 출력되고 있음을 볼 수 있다.




이렇게 보안레벨이 High가 될 경우에는 아까 보안레벨이 Low에서 노출된 쿠키값이 전혀 나오지 않음을 볼 수 있다.



(2) ssl 공격


Server Side Includes의 약자이며 서버사이드 쪽에 정보를 갖고 있는 곳을 의미하며 정보를 탈취하는 공격기법이 바로 ssl공격이다.


이렇게 Firstname, Lastname을 입력해주고 lookup을 누르게 되면 두번째 이미지와 같은 화면이 나오게 된다. 이번엔 명령어를 한번 넣어보도록 하겠다. data를 알려주는 명령어이다.


이렇게 나오면 정상적인 화면이다. 보다 시피 LOW레벨에서는 date명령어를 입력하면 date날짜가 전부 노출됨을 알 수 있다. 다른 명령어도 한번 써보면 아래와 같은 화면이 나온다.


<!--#exec cmd="cat /etc/passwd" --> 명령어를 입력해줬는데 보안레벨이 Low에서는 저런식으로 사용자 정보들이 전부 노출되게 된다. 


<대응방안>


보안레벨이 높을때는 근본적으로 특수문자들을 차단했기 때문에 웹페이지에 정보가 노출되지 않는다. 반면 보안레벨이 낮을때는 data에서 특수문자들을 그대로 흘려보내 처리하기 때문에 웹페이지에 전부 정보가 노출되게 되는 것이다.



보안레벨이 높은상태에서 ls관련 명령어를 입력해주면 저런식으로 입력된 문자만 뜰뿐 아무런 정보도 노출되지 않음을 알 수 있다.


여기까지 HTML 인젝션에 대해 포스팅해보았다. 정말 많은 인젝션 기법들이 있어 항상 대응법에 대해 많이 생각해보는 시간을 가져야 할 것 같다. 다음 포스팅은 SQL 인젝션에 대해 해보려고 한다.

반응형

'웹해킹 > Bee-box' 카테고리의 다른 글

sqlmap 활용법  (0) 2017.12.28
SQL 인젝션 기초  (0) 2017.12.26
PHP Command 인젝션 공격  (0) 2017.12.25
HTML 인젝션(2)-Stored  (0) 2017.12.25
HTML 인젝션(1)-Reflected  (8) 2017.12.25
블로그 이미지

만년필석사

,