면접 예상 질문
1. 자기소개
> 인사
2. 헤킹 공부는 어떻게 하셨나요?
-> 웹 해킹 스터디를 진행하며 SQL injection, 파일 업로드 취약점 등 주요 취약점을 공부하였습니다. 또한 실제 가상화 머신에 여러 기능을 갖춘 홈페이지를 제작해 본 후 팀원들과 서로의 페이지를 해킹하고, 보고서 작성 후 리뷰, 시큐어 코딩을 수행하였습니다.
3. 가장 자신있는 해킹 공격 기법이 무엇인가요?
-해킹 공격기법 설명
무엇, 왜 일어나는지, 시나리오, 대응방안
을 위주로 간결하게 설명해야한다.
4. 할 수 있는 다른 공격 기법
학원에서 많이 시켜서 대답하는 류 >스니핑 >sql map
답변 추천
- ARP Spoofing
- Xpath injection
- XXE
[공격 기법 정리]
(1) SQL Injecion
1. 데이터 추출 2. 데이터 우회
Union SQL Injection은 기존 정상쿼리와 악성쿼리를 합집합으로 출력하여 정보를 획득한다.
*대응방안
- 사용자 입력 변수화(PreparedStatement)
$stmt = $conn->prepare("INSERT INTO MyGuests (firstname, lastname, email) VALUES (?, ?, ?)");
$stmt->bind_param("sss", $firstname, $lastname, $email);
-정렬 order by 등은 화이트 리스트 필터링
답변 예시
공격자가 임의의 SQL 질의문을 삽입할 수 있는 공격입니다. 사용자의 입력을 SQL 질의문에 그대로 넣어서 사용했기때문에 발생됩니다. 이것으로 인해 데이터 우회와 변조, 추가, 추출이 가능합니다. 함수를 이용해 DB의 쉘을 획득하는 것도 가능합니다. 인젝션으로 파일업로드(서버 측 코드)가 가능함.
대응방안으로는 (1) Prepare Statement :미리 컴파일 한 후 사용자 파라미터를 ?로 두고 사용자 입력값을 바인딩하게 된다. >>원래 DB 성능 개선을 위해 나옴, 속도가 빨라져서 안쓸 이유가 없음.
(2)사용자 입력값 검증 (필터링) : order by(정렬부분) , 테이블, 컬럼이름 등
Asc/Desc
if input == 'asc':
sql = "" + "asc"
else:
sql = "" + "desc"
**time based 응답시간 차이를 통해 공격 가능
bilnd 와 같지만 sleep함수를 사용함.(부화 가 크다.)
(2) XSS
클라이언트 측에 임의 스크립트 코드를 삽입하는 공격
CSRF vs XSS
실행되는 페이로드가 서버측 vs 클라이언트 측
답변 예시
XSS는 클라이언트 스크립트를 삽입하는 공격으로 악용 시나리오는 세션 탈취, 키로거 삽입, 리다이렉트 등이 있습니다.
Stored XSS는 서버 저장되어 무차별 공격을 가능하게 하지만 타켓팅을 할 수 없습니다. Reflected XSS 저장 안하고 바로 클라이언트를 공격합니다. 원클릭 유도로, 사회공학기법과 연계되면 위험도 더 높습니다.
대응방안으로는 HTML 특수 문자를 모두 HTML Entity로 치환하고, HTML Editor의 경우 전부 다 치환해서 화이트 리스트 기반으로 허용태그를 살리고, 블랙리스트 방식으로 악성 이벤트 핸들러 필터링해야합니다.
**특이한 이벤트핸들러 onResize, onplay, ondbclick, onmouseover
</img src=x onerror~~>
o on onr 한글자씩 해서 필터링 패턴, 뒤에 어디서 짤리면 %00 대문자 치환 등으로 우회를 생각해볼수있음.
**beef https://5log.tistory.com/131 사용해보기
(3)CSRF
+XSS
답변 예시
피해자가 원하지 않는 요청을 보내게 만드는 것. 위험은 사용자의 권한 탈취, 도용. 서버 측에서 요청이 해당 클라이언트가 맞는지 검증을 하지 않기 때문에 발생. (1) 인증정보확인 모든것에 적용하기 어려우니 (2) CSRF 토큰을 사용합니다. // 토큰도 우회 가능하다. iframe을 써서 인증페이지로 유도하고 CSRF 토큰을 가져와서 공격 단, XSS와 연계가능할 시만 가능합니다.
(4) File Upload/Download
(1) 서버 측 실행 파일 : Web Shell (서버 측의 ) -> 서버 쉘 장악
(2) Phising : php 서버 측 html 업로드
(4) XSS : Stored XSS(html, js)
대응방안
(1) DB에 파일 저장
blob 큰 데이터를 바이트형식으로 저장(?)
(2) NAS 나 파일 서버 따로 운영
파일 서버에 php 설치 안함
(3) 확장자를 고정
test.php 에서 이름만 빼와서 test.png로 확장자 고정
if= ext =="jpg":
file name=""+".jpg"
else if:
else:
file name = ""+".png"
우회: test.php%00.png
(4) 필터링
*우회가 가능할 수도 있다를 염두해야함.
화이트/블랙(우회가능하기때문에 신중하게 짜야합니다.)
**파일 다운로드 취약점
서버 안에 어떤파일이든 가져와서 문제. 불특정 파일 가져옴. 서버측 코드를 다운받아 DB계정정보 탈취, 취약점 찾는 2차 공격으로 이어질 수 있음.
../../../ 필터링, 대응방안으로 파일 경로를 DB에 file ID관리, 경로 관리, DB에 직접 파일 저장
(5) 인증과 인가
- 서버 측 검증을 한다.
인증은 본인인지아닌지 (서버측에서 해야함.), 인가는 해당행동을 할수있는지 없는지
보통 클라이언트 측에서 검증해서 문제가 생기기때문에
서버측에서 검증해주어야한다.
블랙리스트 필터링 우회
(1)쓰지 못하는 문자를 다른 대체문자로 교체
(2)URL Encoding
(3)00, %0a, %0b
OWSP top 10: 접근 제어 취약점, 암호화 실패, 주입 취약점, 안전하지 않은 보안설계, 알려진 취약점, 식별 및 인증 실패, 데이터 무결성 오류, 보안 로깅 및 모니터 실패, SSRF
'Web hacking > Nomaltic) 웹 해킹 수업 노트 👩💻' 카테고리의 다른 글
[20주차] 모바일 앱 해킹 공부 가이드 (0) | 2022.03.03 |
---|---|
[19주차] 기본 지식 복습 (0) | 2022.02.24 |
[18주차]SSI Injection 취약점 (0) | 2022.02.17 |
[17주차] 보고서 리뷰(팁, 예상질문) (0) | 2022.02.10 |
📝 LDAP injection & Blind LDAP Injection 문헌 번역 (0) | 2022.02.04 |