반응형
SMALL

'웹해킹/Bee-box'에 해당되는 글 22건

반응형
LIST
반응형
SMALL

이번에는 Xss공격(Reflected)에 대해 포스팅하려고 한다. Stored에서도 설명했듯이 Reflected공격도 큰차이는 없지만 사용자에게 악의적인 코드를 심어 그걸 클릭하게끔 유도한다는 방식은 비슷하기 때문에 어떤 공격이 있는지 알아본다.



1. Xss공격(Reflected)


- 사용자에게 악의적인 코드를 심어 클릭하게 유도해서 세션정보를 빼내는 공격 

- 사용자에게 공격해서 다시 반환되어 돌아온다는 것이 특징이며 돌아오는 것은 세션정보, 로그인정보 같은 것이다.



<출저: 보안프로젝트>





* Xss-Reflected 공격 실습



(1) Xss - Reflected(Get) 공격


이 공격도 앞서 SQL 인젝션에서 했던  Get 공격과는 큰차이는 없다. 


 

First name, Last name에 경고창을 띄워주는 코드와 쿠키값을 볼 수 있는 코드를 입력해주고 실행을 하면 사진과 같이 쿠키값이 나온다는 것을 볼 수 있다. 위에 입력한 스크립트 공격은 많이 쓰이는 코드를 외우는 것도 좋다. 



보안을 High로 설정했을시에는 쿠키값이 노출되지 않고 입력했던 코드가 그대로 보여지는 것을 볼 수 있다. 



(2) Xss - Reflect(Post)공격



Post공격은 프록시를 잡아줘야 하기 때문에 저렇게 값을 넣고 버퍼스윗을 이용해 프록시를 잡아준다.



fitstname,Lastname에 쿠키값을 알아내는 코드를 입력해주고 Intercept off를 눌러준다.



이런식으로 쿠키값을 알려주는 경고창이 뜬다. 이런식으로도 쿠키값을 가져오는 것을 알 수 있다. 보안레벨이 High로 맞추고 프록시를 잡고 실행하게 되면 쿠키값이 뜨지 않고 입력한 코드가 뜨는 것은 Get방식 보안과 다를건 없다.


(3) Xss - Reflected(JSON) 공격



Reflected(Json) 공격도 다른 공격들과 큰차이는 없지만 저렇게 아무거나 조회하게 되면 결과값이 안나온다. 데이터베이스에 있는 값들만 조회가 가능하다. 



사진과 같이 명령어를 입력해준다. 단지 차이점이 조금 있다면 앞에 </script>를 입력하고 뒤에 <script>를 한번 더 입력했다. 뒤에는 차이가 없다.



저 값을 실행해보면 다음과 같이 경고창 메시지가 나오게 된다. Json 공격으로도 역시 쿠키값이 탈취가 가능함을 보여주는 공격이다.


(4) Xss - Reflected(AJAX/JSON) 공격




이 공격 또한 프록시를 잡아줘야 한다. 쿠키값을 검색하는 명령어를 입력하고 프록시를 잡아준다.





이런식으로 프록시를 잡아주게 되는데 입력한 스크립트 공격코드가 잘 입력됨을 볼 수 있으며 Ajax특성을 잘 살렸다는 것을 볼 수 있다.  주소창에 xss_ajax_2-2부터 title값까지 복사해주고 URL뒤에 넣어주면 된다.


이런식으로 또한 Ajax 공격으로도 쿠키값을 알아낼 수 있다.





이번에는 medium으로 맞춰놓고 아까 카피한 ajax 2-2 주소값을 그대로 넣어서 실행시켰다.



이번에는 이렇게 php파일을 다운로드 하라는 형식으로 나오게되서 쿠키값을 알아내기가 불가능해졌다. 




보안레벨을 High로 맞춰놓고 실험을 했다. 아까와 똑같이 주소값을 입력해주고 실행해준다.



실행해주면 &lt와 같은 값이 나와 쿠키값 탈취가 불가능해짐을 알 수 있다.



<대응방안>



비박스에서  xss_ajax_2-2.php파일을 보면 보안레벨이 높을수록 방어가 잘되어 있다는걸 볼수 있다. 제일 두드러진 특징이 header값을 넣어주었다는 건데 Content-type을 이미 명시를 해주었다. 그렇기 때문에 text/json을 실행하려고 해도 공격자가 넣은 스크립트를 실행할 수 없고 데이터를 실행하는 것이 되기 때문에 전혀 쿠키값을 알아낼 수 없는 것이다.

 



보안레벨이 medium일때도 마찬가지로 header안에 Content-type를 넣어줘서 악의적인 목적으로 삽입된 자바스크립트가 동작할 수 없도록 해주고 있다. 반면 보안레벨이 low일때는 전혀 보안이 안되어있고 무방비로 쿠키값이 탈취당하게 될 수밖에 없는 구조이다.







이번엔 이미지를 삽입한 공격이다. 이미지가 없기 때문에 저런식으로 빈상자가 나오게 된다. 



명령문 뒤에 onerror='alert(1)>이라는 것을 추가해줬더니 저런식으로 악의적 자바스크립트가 삽입이 되었다. 이미지가 없으면 1을 출력하라는 명령어이기 때문에 계속 경고창이 뜬다는 것을 볼 수 있다.


(5) Xss - phpmyadmin 공격



이번엔 phpmyadmin공격이다. 이 공격도 악의적으로 어떠한 버튼을 만들어 이상한페이지로 이동하게 해서 세션을 탈취할 수 있기 때문에 알아두면 좋은 공격이고 방어를 할 수 있게 될 것이다.



이런식으로 URL주소값을 입력해주고 type을 추가해주면 저런식으로 만들 수 있다.



뒤에 코드를 조금 더 추가해줘야 하는데 비비코드형식으로 입력해줘야 한다. [a@http://10.0.2.4/bWAPP/attack.php@]click[/a] 이런형식으로 뒤에 입력을 해준다음 실행해주면 click이라는 버튼이 생기게 된다.



실행해주면 이렇게 mysql 정보를 전부 탈취할 수 있게 된다. 


(6) Xss - PHP_Self 공격




이 공격도 다른것과 크게 다르진 않다. 쿠키값을 탈취하는 코드를 넣어서 실행해준다.



실행이 되면 이런형식으로 쿠키값이 탈취됨을 볼 수 있다.


<취약점 분석>



화면에 보면 form action 뒤에 server라는 변수가 있는데 php_self를 받아서 자기 자신을 실행시키게끔 변수를 받고 있다. 하지만 이 방식은 편의성이 제공될 수는 있지만 사용자에게는 취약점이 발생할 수 있다.




URL에 악성자바스크립트를 넣어서 실행한다.



실행이되면 이런식으로 악성자바스크립트가 삽입되어 경고창이 뜬다는걸 알 수 있다. Php Self는 편리함도 있지만 이런식의 취약점도 발생할 수 있기때문에 보안에 더 각별히 신경써야 한다.


(7) Xss - Reflected(HREF) 공격



HREF공격은 공격이 좀 특이한 것 같았다. 다른것과 별다를바는 없었지만 vote라는 곳에 마우스를 갖다 대기만해도 악성코드가 삽입된 자바스크립트 경고창이 나와 이 또한 위험하다고 생각했다. sun이라고 검색해주면 저렇게 목록들이 나온다.



이번에는 Sun onmouseover=alert("xss") a를 검색해서 실행한 결과이다. Vote라는 곳에 마우스를 갖다 대면 저런식으로 자바스크립트 경고창이 나오게 되어 공격이 된다.


<취약점 원인>



마우스 우클릭을 해서 페이지 소스를 보게 되면 방금 삽입시켰던 코드를 볼 수 있다. 저게 원래는 vote라는 값으로 되어 있었지만 a href취약점을 이용해 뒤에 자바스크립트 코드를 삽입시키면 방금과 같이 경고창이 삽입될 수 있다.



이렇게 Reflected공격도 엄청나게 다양하다는 것을 포스팅해봤다. 공격법이 워낙 다양해 많은 내용이었다. 하지만 실습으로 끝나지 않고 왜 취약한지, 취약점을 강점으로 바꿀 수 있는 방법이 무엇이 있을지 어떤 함수를 써야 보안이 잘되는지에 대해 조금 더 분석하는 습관을 기르면 언젠가는 보안 보고서 같은 것도 잘 쓸 수 있지 않게 될까 생각한다.


반응형
LIST
블로그 이미지

만년필석사

,

Xss공격(Stored)

웹해킹/Bee-box 2017. 12. 29. 18:45
반응형
SMALL

이번에는 XSS Stored공격에 대해 포스팅해보려고 한다. XSS공격이 주로 자바스크립트를 이용해 악의적인 코드로 변조해서 공격하는 방법이다. 특히 Stored공격은 게시판에 댓글, 게시글, 쪽지 등에 악성코드를 삽입해서 공격하는 기법이다. 


1. XSS Stored 공격이란?


- 게시판과 같은 곳에 댓글, 게시글, 쪽지 등에 악성코드를 주입해서 공격하는 기법이다. 주로 자바스크립트를 활용한 공격이다.

- 자바스크립트를 활용해서 많은 공격이 이루어지고 있으며 보안레벨이 높아진다해도 html공격은 쉽게 막을 수가 없는 것이 특징이다.

- 공격자가 자바스크립트를 활용해 XSS공격을 하면 사용자도 모르게 그것을 클릭하게 되는데 세션, 쿠키정보를 뺄 수 있기 때문에 사용자 정보 등을 해킹이 가능하기 때문에 매우 위험한 공격이라고 볼 수 있다.



* XSS Stored 공격 실습



(1) XSS - Stored (Blog)



게시판을 이용한 공격이라고 설명했지만 SQL 인젝션에서 했었던 공격하고는 큰 차이는 없다. 화면에 보이는 것처럼 입력해주면 경고창에 1이라고 뜨면서 게시판에는 쿠키 정보들이 전부 기록되어 있는 것을 볼 수 있다. 이건 보안레벨이 가장 낮았을 때의 이야기지만 저런식으로 바로 쿠키가 노출되는 사이트는 사실상 보안을 전혀 안해놨다고 봐도 무방할정도로 위험하다.



가장 기본적인 XSS 공격방법이다. alert(1)을 줘서 저런식으로 1이라는 경고창이 뜨게 되는 것이다. 


<대응방안>


보안레벨이 높을때는 xss_check_3를 사용해서 공격을 무력화 시켜서 그대로 소스코드를 반환하는 방식으로 하고 있지만 보안레벨이 낮을때는 entry로 그냥 반환해 쿠키값이 전부 노출되게 되어 있다. 보통 보안레벨이 높은 코드는 html을 활용한 공격도 무력화 시킬 수 있다. htmlspecialchar함수가 html을 활용한 공격을 무력화 시킬 수 있는 가장 안전한 코드이다.




보안레벨이 High일때 아까 쿠키값을 얻으려고 입력했었던 코드가 그대로 노출되서 쿠기값 확인이 불가능하다는 것을 볼 수 있다.




(2) XSS - Stored (User-Agent) 공격





User-Agent Switcher을 구글에서 검색해 다운받고 사진과 같이 입력해주고 ok버튼을 누른다. User-Agent공격방식도 해커들 사이에서 꽤 사용되고 있는 방법이기 때문에 알아두면 좋다.




프록시를 잡아서 입력한 값이 맞는지 userAgent를 확인해주고  Forward를 눌러주고 프록시를 off해준다. 



그렇게 되면 사진과 같이 쿠키정보를 탈취할 수 있다. 하지만 보안레벨이 High로 되었을 시에는 쿠키정보가 나오지않고 입력한 코드가 그대로 출력됨을 볼 수 있을 것이다. 이 또한 대응방안은 위에서 작성한 것과 동일하다. 



Xss-Stored 공격에 대해 살펴봤는데 여러가지 수법으로 공격할 수 있는 방법이기 때문에 항상 유의해야 하며 Xss 공격자체가 OWSAP10에서 3위를 차지할 정도로 매우 강력한 공격이기 때문에 보안레벨이 높은 함수들을 써서 방어하는 것이 최선이다. 본인도 XSS공격에 대해 좀 더 많이 살펴보고 사례들은 어떤것들이 있는지에 대해서도 꾸준히 공부해 볼 생각이다.


반응형
LIST

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

중요정보 변경 및 초기화, 상품가격조작  (0) 2017.12.30
Xss공격(Reflected)  (0) 2017.12.29
세션결함  (0) 2017.12.29
인증결함  (0) 2017.12.29
XML/XPath 인젝션  (0) 2017.12.28
블로그 이미지

만년필석사

,

세션결함

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

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



1. 세션결함이란?


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

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

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



* 세션결함 공격 실습


(1) Session Mgmt - Administrative Portals 공격




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




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





반응형
LIST

'웹해킹 > 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
반응형
SMALL

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


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 취약점 노출에 주의해야 한다고 생각한다. 인증결함방식에 대한 이론도 많기 때문에 조금 더 찾아보고 공부해보면 좋을 것 같다.





반응형
LIST

'웹해킹 > 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
블로그 이미지

만년필석사

,
반응형
SMALL

이번 포스팅은 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변조 공격도 많이 이루어지고 있으니 항상 공부하고 대비하는 방법을 생각해보는 것이 좋을 것 같다.

반응형
LIST

'웹해킹 > 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
블로그 이미지

만년필석사

,
반응형
SMALL

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

반응형
LIST

'웹해킹 > 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
블로그 이미지

만년필석사

,
반응형
SMALL

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


1. 메타스플로잇이란?


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

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

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



(1) 메타스플로잇 실습


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




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






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






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



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







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



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



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



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



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



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



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



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



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

반응형
LIST

'웹해킹 > 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
반응형
SMALL

이번 포스팅은 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인젝션 공격이 워낙 다양하다보니 많은 실습과 이론공부가 병행되어야 할듯 싶다. 다음 포스팅은 메타스플로잇의 간단한 활용법에 대해 포스팅 해 볼 생각이다.

반응형
LIST

'웹해킹 > 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
블로그 이미지

만년필석사

,