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

만년필석사

,