일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- beebox #bWAPP #webhacking #web #웹해킹 #정보보안 #bruteFource #무차별공격
- C언어 #C #C프로그래밍 #프로그래밍 #언어
- C언어 #C #C프로그래밍 #프로그래밍 #언어 #c언어포인터 #c언어포인터연산
- C언어 #C #C프로그래밍 #프로그래밍 #언어 #c언어포인터와문자열 #c언어문자열
- C언어 #C #C프로그래밍 #프로그래밍 #언어 #C동적메모리할당 #malloc #메모리
- beebox #bWAPP #webhacking #web #웹해킹 #정보보안 #IT #PUT메소드 #PUT #HTTP메소드 #취약점
- 포렌식 #사이버포렌식 #Forensic #정보보안 #IT
- #FAT파일시스템 #파일시스템구조 #파일시스템 #Forensic #정보보안 #IT
- C언어 #C #C프로그래밍 #프로그래밍 #언어 #c언어포인터의포인터 #c언어2중포인터
- beebox #bWAPP #webhacking #web #웹해킹 #정보보안 #phpcodeinjection #injection
- C언어 #C #C프로그래밍 #프로그래밍 #언어 #선택정렬 #선택정렬알고리즘
- XSS #ReflectedXSS
- beebox #bWAPP #webhacking #web #웹해킹 #정보보안 #IT #CSRF #
- beebox #bWAPP #webhacking #web #웹해킹 #정보보안 #SQLi #sqlinjectioon
- C언어 #C #C프로그래밍 #프로그래밍 #언어 #포인터 #포인터변수 #c언어주소 #주소
- C언어 #C #C프로그래밍 #프로그래밍 #언어 #Call by value #Call by reference
- beebox #bWAPP #webhacking #web #웹해킹 #정보보안 #xss #storedxss #CrossSiteScripting
- beebox #bWAPP #webhacking #web #웹해킹 #정보보안 #commandinjection
- beebox #bWAPP #webhacking #web #웹해킹 #정보보안 #IT #robots.txt #검색엔진노출
- beebox #bWAPP #webhacking #web #웹해킹 #정보보안 #IT #SQLi #TimeBaseSQLi #sqlinjection
- 사이버포렌식 #포렌식 #FAT
- c언어문자열처리방법 #c언어문자열
- C언어 #C #C프로그래밍 #프로그래밍 #언어 #c언어포인터배열 #c언어포인터 #포인터 #c포인터
- C언어 #C #C프로그래밍 #프로그래밍 #언어 #c2차원배열동적할당 #c언어동적할당 #c동적할당 #c언어동적할당2차원배열
- 파일시스템과파티션 #포렌식 #사이버포렌식 #Encase #Forensic #파티션 #파일시스템 #정보보안
- C언어 #C #C프로그래밍 #프로그래밍 #언어 #c배열포인터 #c언어포인터 #c언어배열포인터 #배열포인터
- c언어malloc #동적할당 #c언어동적할당 #c언어malloc사용하기
- beebox #bWAPP #webhacking #web #웹해킹 #정보보안 #BrokenAuthentication
- C언어 #C #C프로그래밍 #프로그래밍 #언어 #로또번호생성 #로또번호만들기 #중복제거 #중복제거알고리즘
- beebox #bWAPP #webhacking #web #웹해킹 #정보보안 #IT
- Today
- Total
Hello Security World
[Web Hacking] Bee - Box -Union Base SQL Injection(POST)- 본문
Union Base SQL Injection
1-2 SQL INJECTION 공격 POST (난이도 하)
‘Sqli_6.php’ 페이지는 POST 메서드로 HTTP 연결 요청을 보내고 있어서 sqli_1.php 페이지와
는 다르게 URL에 변수가 나타나지 않는다. 그러나 sqli_1.php와 마찬가지로 검색란에 사용
되는 movie 변수가 취약하므로 검색란에 SQL쿼리를 입력하면 취약점 여부를 확인할수 있다.
이번에는 프락시 도구로 변수를 확인하고 SQL 인젝션을 시도한다. 프록시 도구로는 버프스
위트를 사용한다. 버프스위트에서 [intercept is on]이 활성화되어 있으면 Raw 탭 내용에서 공
격을 시도할 변수를 찾거나 HTTP요청 헤더 밑에 실리는 body에서 변수를 찾는다. Body에
실린 ‘title’과 ‘action’변수 둘 다에 SQL인젝션 공격을 시도해 보자.
작음따옴표를 입력하면 결과를 항상 참으로 만드는 쿼리를 입력하여도 SQL구문 오류가 발
생하기 때문에 작은따옴표를 사용하지 않고 SQL 인젝션 공격을 위하여 기존 쿼리와 결합하
여 결과를 출력하는 UNION SELECT 구문을 사용한다. 따라서 기존 쿼리에서 사용하는 칼럼
수를 찾아 movie 변수에 주입할 쿼리의 칼럼 수와 맞춘다.
버프스위트로 movie변수에 조작한 SQL인젝션 구문을 입력한다. 이때 실제 사용하는 변수를
넣으면 표에는 그 값에 해당하는 데이터가 나오기 때문에 사용하지 않는 숫자 값을 넣어야
한다.
Movie 변수는 숫자형으로 선언되어 있는 칼럼이다 따라서 문자를 입력할경우 오류를 발생시
킨다.
조작한 SQL구문을 버프위트로 잡아서 movie변수에 삽입한다.
조작한 SQL구문의 결과로 웹 어플리케이션의 데이터베이스 명과 데이터베이스 서버 버전,서
버에서 MySQL 이 위치한 경로를 출력한다.
사용자의 호스트 이름,사용자 이름과 비밀번호를 출력하는 SQL구문을 입력한다.
인젝션 결과가 페이지에 보인다. ‘mysql’ 테이블의 호스트 이름과 사용자 이름,비밀번호의 해
시 값을 출력한다. 원래는 모든 사용자의 정보가 보이지만 sqli_13.php페이지는 결과값을 하
나만 출력하기 때문에 처음에 저장된 정보만 보인다.
테이블 명을 파악하기 위하여 다음과 같은 SQL구문을 movie변수에 삽입한다. 현재 데이터베
이스 서버 버전이 5.0 이상이기 때문에 다음과 같이 information_schema로 데이터베이스에 저
장된 테이블을 파악한다. Where 절로 기본 제공되는 information_schema와 mysql을 제외하고
사용자가 지정한 스키마만 출력하도록 조건을 넣는다.
SQL 인젝션 결과 , 데이터베이스의 테이블 스키마와 테이블 명 , 칼럼 명이 출력된다.
SQL map
수동으로 확인할 수 있는 정보가 적기 때문에 SQL인젝션 자동화 도구인 sqlmap 을 사용하
여 데이터베이스와 테이블 명을 알아본다. 위와 같이 칼리 리눅스에서 콘솔에서 sqlm
ap 명령어를 실행하면 된다.
-u 옵션에 자동화 공격을 시도할 페이지의 주소를 입력하고, POST 메소드를 이용 하고 있기
때문에 –data 옵션을 사용하여 SQL 인젝션 을 시도할 변수를 명시한다. 또한, bwapp는 로그인
후 사용이 가능하기 때문에 –cookie 옵션으로 쿠키 값을 입력해야 변수에 대한 자동 인젝션
기능이 수행된다. 쿠키 값은 버프스위트로 알 수 있으며 HTTP연결 요청 헤더 중 ‘cookie’
변수의 내용이다.
데이터베이스를 알아낼 때 취약한 파라미터가 movie뿐이므로 –p 옵션에서 SQL인젝션을 시도
할 변수를 movie로 지정한다. 또한, 테이블명을 알아보기 위하여 --DBs옵션 대신 –tables 옵션
을 넣어 다음과 같이 sqlmap사용 명령어를 입력한다.
sqlmap 사용 결과로 모든 데이터베이스의 테이블 명을 출력하지만, sqli_13.php페이지의 데이
터베이스는 bWAPP이므로 bWAPP 데이터베이스의 테이블 명만 확인한다. movie 변수에는 현
재 페이지에서 사용하는 정보, users 테이블에는 사용자 정보가 저장되어 있다고 추측된다.
이번에는 users 테이블의 칼럼을 확인하기 위해 sqlmap 사용 명령어를 입력한다. 테이블 명
을 알기 위하여 사용한 –tables 옵션 대신 --columns옵션을 사용한다.
sqlmap 결과로 현재 데이터베이스의 테이블에 있는 칼럼 명을 출력한다. 사용자의 계정 정보
가 있다고 추측한 users테이블의 칼럼 명을 확인한다. 칼럼 명은 사용자의 계정 정보와 관련
있는 ‘id , login , password’이다.
sqlmap에서 알아낸 정보를 조합하여 수동으로 UNION SELECT 구문을 입력한다. 테이블은 us
ers로 지정하고 노출되는 칼럼 순서에 내용을 알고 싶은 칼럼 명을 입력한다.
movie 변수에 쿼리를 입력하고 버프스위트에서 [Forward] 버튼을 클릭한다.
union 쿼리문을 이용하여 노출된 데이터베이스의 내용이다. 관리자의 이메일과 해시화된 비
밀번호가 노출되었다.
1-2 SQL INJECTION 공격 POST (난이도 상)
(난이도 상) 에서 제시한 대응방안을 살펴보자. movie변수에 UNION SELECT구문을 입력하여
도 SQL구문 오류 메시지가 아닌 영화를 찾을 수 없다는 메시지를 출력하고, 난이도 하와는
다르게sqli_13.php페이지가아닌‘sqli_13-ps.php’페이지다.
movie 변수에 입력한 숫자 값이 id 변수에 들어가는데, id변수는 recordset에 저장된 데이터베
이스 내용의 순서 번호를 뜻한다. bind_param함수를 사용하여 데이터베이스에서 사용하는 변
수들을 불러오고 execute 함수로 쿼리를 실행한다. 그다음 bine_result함수로 각 변수를 연결하
고 sotre_result 함수로 쿼리 결과를 저장한다.
'정보보안 > BWAPP Bee-box' 카테고리의 다른 글
[Web Hacking] Bee - Box -OS Command Injection- (0) | 2020.05.03 |
---|---|
[Web Hacking] Bee - Box -Blind SQL Injection- (0) | 2020.05.03 |
[Web Hacking] Bee - Box -Union Base SQL Injection(GET)- (0) | 2020.05.03 |
[Web Hacking] Bee - Box -HTML Injection- (0) | 2020.05.03 |
[Web Hacking] Bee - Box -OWASP TOP 10 및 설치- (0) | 2020.05.03 |