본문 바로가기
애플리케이션 보안

애플리케이션 보안 [첫 번째 정리]

by 할 수 있다 ! 2024. 3. 18.

안녕하세요 ! 

 

애플리케이션 보안에 대해서 글을 써보려고 합니다. 

 

첫 번째 정리여서 간단하게 정리하도록 하겠습니다. 

 

 

 

애플리케이션 보안 

 

애플리케이션 보안은 소프트웨어 개발 및 운영 과정에서 발생할 수 있는 다양한 보안 위협으로부터 애플리케이션을 보호하는 것을 의미합니다. 이것은 소프트웨어가 공격으로부터 안전하고 사용자의 개인 정보 및 시스템 자산을 보호할 수 있도록 하는 것을 목표로 합니다. 

 

1. 인증 및 인가 

 

사용자의 신원을 확인하고, 해당 사용자가 액세스 할 수 있는 리소스에 대한 권한을 부여하는 것입니다. 

 

취약점 : 약한 인증, 부적절한 인가, 세션 관리의 부적절한 처리 등

 

2. 데이터 보호 

 

민감한 데이터를 안전하게 저장, 전송 및 처리하는 것을 의미합니다. 

 

취약점 : 데이터베이스 인젝션, 크로스 사이트 스크립팅 ( XSS ), 데이터 누출 등 

 

3. 보안 정책 및 절차 

 

조직 내부에서 보안을 책임지고 이행하는 프로세스 및 지침입니다. 

 

취약점 : 부적절한 권한 부여, 보안 정책의 부재 또는 미준수  

 

4. 모바일 보안 

 

모바일 기기와 애플리케이션의 보안을 강화합니다. 

 

취약점 : 사용자 데이터의 노출, 루팅된 기기의 보안 위협, 앱 스토어에서의 악성 애플리케이션 등

 

5. 보안 테스팅 

 

소프트웨어의 보안 취약점을 발견하고 해결하기 위해 시스템을 평가하는 프로세스 입니다. 

 

취약점 : 취약한 코드, 미사용 애플리케이션 프로그래밍 인터페이스 (API), 보안 취약점 분석의 부족 등 

 

6. 위험 관리 

 

보안 위협에 대한 위험을 식별하고, 평가하고, 관리하는 프로세스 입니다. 

 

취약점 : 위험 평가의 부재, 위험에 대한 적절한 대응의 부재 

 

애플리케이션 보안은 지속적인 프로세스이며, 새로운 보안 위협이 나타날 때마다 그에 대한 대응을 업데이트 하고 개선해야 합니다. 따라서 보안 전문가들은 보안 최신 트렌드를 파악하고 지속적인 보안 교육 및 테스트를 통해 애플리케이션의 보안을 유지하는 것이 중요합니다. 

 

 

* OWASP 

 

OWASP 는 오픈 소스 커뮤니티로서 웹 애플리케이션 보안에 대한 정보를 제공하고 보안 취약점을 식별하고 해결하기 위한 프로젝트 및 자원을 제공하는 비영리 단체입니다. OWASP 는 전 세계의 보안 전문가, 개발자 및 기업들이 웹 애플리케이션 보안에 대한 지식을 공유하고 협력할 수 있는 플랫폼을 제공합니다. 

 

1. 보안 가이드 및 자료 : OWASP 는 웹 애플리케이션 보안에 관한  가이드라인, 문서, 도구, 테스트 데이터 등의 자료를 제공합니다. 이것을 통해 개발자와 보안 전문가들이 웹 애플리케이션의 보안 취약점을 식별하고 보호하기 위한 정보를 얻을 수 있습니다. 

 

2. 프로젝트 : OWASP 는 다양한 보안 프로젝트를 진행하고 있습니다. 이 프로젝트들은 보안 취약점의 분석, 새로운 보안 도구 및 기술의 개발, 보안 교육 자료 등을 포함합니다. 

 

3. 취약점 분석 : OWASP는 웹 애플리케이션에서 발견된 보안 취약점을 분석하고 보다 안전한 개발 및 운영을 위한 가이드라인 제공한다. 이것을 통해 웹 애플리케이션의 보안 수준을 향상시키는데 기여합니다. 

 

4. 교육 및 컨퍼런스 : OWASP 는 보안 컨퍼런스 및 교육 프로그램을 주최하고 참여합니다. 

 

OWASP  는 전 세계적으로 많은 개발자, 보안 전문가, 기업 및 기타 단체들과 협력하여서 웹 애플리케이션 보안을 개선하는데 기여하고 있습니다. OWASP 웹 사이트에서는 다양한 보안 자료와 도구를 무료로 제공하고 있으며, 안전한 웹 애플리케이션 개발을 지원합니다. 

 

 

* OWASP TOP 10

 

1. Injection ( 인젝션 )

 

SQL, OS, XXE, LDAP 인젝션 취약점은 신뢰할 수 없는 데이터가 명령어나 쿼리문의 일부분이 인터프리터로 보내질 때 발생합니다. 공격자의 악의적인 데이터는 예상하지 못하는 명령을 실행하거나 적절한 권한 없이 데이터에 접근하도록 인터프리터를 속일 수 있습니다. 

 

2. Broken Authentication and Session Management(인증 및 세션 관리 취약점)

 

인증과 세션 관리와 관련된 애플리케이션 기능이 정확하게 구현되어 있지 않아서 공격자가 패스워드, 키 또는 세션 토큰을 해킹하거나 다른 구현 취약점을 공격해서 다른 사용자 계정을 일시적 또는 영구적으로 탈취하는 것을 허용합니다. 

 

3. XSS (크로스 사이트 스크립팅) 

 

XSS 취약점은 애플리케이션이 신뢰할 수 없는 데이터를 가져와 적절한 검증이나 제한 없이 웹 브라우저로 보낼 때 발생합니다. XSS 는 공격자가 피해자의 브라우저에 스크립트를 실행하여서 사용자 세션 탈취, 웹 사이트 변조, 악의적인 사이트로 이동할 수 있습니다. 

 

4. Broken Access Control ( 취약한 접근 제어 ) 

 

취약한 접근 제어는 인증된 사용자가 수행할 수 있는 것에 대한 제한이 제대로 적용되지 않는 것을 의미합니다. 공격자는 이러한 취약점을 악용하여서 사용자의 계정 액세스, 중요한 파일 보기, 사용자의 데이터 수정, 액세스 권한 변경 등과 같은 권한 없는 기능, 또는 데이터에 액세스를 할 수 있습니다.

 

5.  Security Misconfiguration ( 보안 설정 오류 ) 

 

훌륭한 보안은 애플리케이션, 프레임워크, 애플리케이션 서버, 웹 서버, 데이터베이스 서버 및 플랫폼에 대해 보안 설정이 정의되고 적용되어 있습니다. 기본으로 제공되는 값은 종종 안전하지 않기 때문에 보안 설정은 정의, 구현 및 유지되어야 합니다. 또한, 소프트웨어는 최신의 상태로 유지해야 합니다. 

 

6. Sensitive Data Exposure ( 민감 데이터 노출 ) 

 

많은 웹 애플리케이션들이 신용카드, 개인 식별 정보 및 인증 정보와 같은 중요한 데이터를 제대로 보호하지 않습니다.

공격자는 신용카드 사기, 신분 도용 또는 다른 범죄를 수행하는 등 약하게 보호된 데이터를 훔치거나 변경할 수 있습니다. 중요 데이터가 저장 또는 전송 중이거나 브라우저와 교환하는 경우 특별히 주의하여야 하며, 암호화와 같은 보호 조치를 취해야 합니다. 

 

7.  Insufficient Attack Protection ( 공격 방어 취약점 ) 

 

대부분의 애플리케이션과 API 는 수동 및 자동화된 공격을 모두 탐지 (detect), 방지 (prevent),  대응 (respond) 할 수 있는 기본 기능이 부족합니다. 공격 방어는 기본적인 입력 유효성 검사를 뛰어 넘어서 자동으로 탐지, 로깅, 응답 및 공격 시도 차단을 포함합니다. 애플리케이션 소유자는 공격으로부터 보호하기 위해 패치를 신속하게 배포할 수 있어야 합니다. 

 

8. Cross-Site Request Forgery (CSRF) ( 크로스 사이트 요청 변조 ) 

 

CSRF 공격은 로그온 뒤 피해자의 취약한 웹 애플리케이션에 피해자의 세션 쿠키와 기타 다른 인증 정보를 자동으로 포함하여서 위조된 HTTP 요청을 강제로 보내도록 하는 것 입니다. 이것은 공격자가 취약한 애플리케이션이 피해자로부터의 정당한 요청이라고 오해할 수 있는 요청들을 강제로 만들 수 있습니다. 

 

9. Using Components with Known Vulnerabilities (알려진 취약점이 있는 컴포넌트 사용) 

 

컴포넌트, 라이브러리, 프레임워크 및 다른 소프트웨어 모듈은 대부분 항상 전체 권한으로 실행됩니다. 이러한 취약한 컴포넌트를 악용하여 공격하는 경우 심각한 데이터 손실이 발생하거나 서버가 장악됩니다. 알려진 취약점이 있는 컴포넌트를 사용하는 애플리케이션은 애플리케이션 방어 체계를 손상하거나, 공격 가능한 범위를 활성화 하는 등의 영향을 미칩니다. 

 

10. Underprotected APIs ( 취약한 API ) 

 

최신 애플리케이션 및 API 에서는 API에 연결하는 브라우저 및 모바일 애플리케이션의 자바스크립트와 같은 여러 클라이언트 애플리케이션이 포함되는 경우가 많습니다. 이러한 API는 대부분 보호되지 않으며 엄청 많은 취약점을 포함합니다.

 

 

* 크롤링 실습

 

 

 

이제 크롤링을 해보려고 합니다. 여기서 User-agent: * 는 브라우저를 말합니다.

 

admin 은 일반적으로 시스템이나 웹 사이트에서 관리자를 나타내는 사용자 계정이나 역할을 가리킵니다. 이러한 관리자 계정은 보통 시스템이나 웹 사이트의 설정을 변경하거나 사용자 관리, 데이터베이스 접근 등과 같은 특권을 가지고 있습니다. admin 은 administrator 의 줄임말로 일반적으로 시스템의 주요 기능과 설정을 관리하고 제어하는 역할을 수행합니다. 

 

admin 계정이나 역할은 시스템이나 웹 사이트의 보안을 유지하기 위해 특히 중요합니다. 이 계정이 타인에게 악의적으로 사용될 경우 시스템이나 웹 사이트에 심각한 보안 위협이 될 수 있습니다. 따라서 보안 전략에 따라서 admin 계정에 대한 접근 권한과 보안 정책이 엄격하게 관리되어야 합니다. 

 

 

1. 시스템 설정 변경 : 시스템 관리자는 시스템의 구성 요소 및 설정을 변경할 수 있습니다. 

 

2. 사용자 관리 : 사용자 계정 생성, 수정, 삭제 등을 수행할 수 있습니다. 

 

3. 보안 설정 : 시스템 보안 정책, 액세스 제어 및 권한 부여 등을 관리합니다. 

 

4. 데이터베이스 관리 : 데이터베이스 시스템의 관리 및 데이터 접근 권한을 관리합니다. 

 

5. 로그 분석 : 시스템 로그를 분석하고 이상 징후를 감지하고 대응합니다. 

 

admin 계정은 시스템의 핵심적인 부분을 담당하기 때문에 보안 취약점으로부터 보호되어야 합니다. 이것을 위해 강력한 비밀번호, 두개의 요소 인증, 제한된 권한 부여, 로깅 및 감사 등의 보안 기법을 사용하여서 admin 계정의 보안을 강화해야 합니다. 

 

 

이번에는 beebox documents 페이지에 접속해서 무엇이 문제점이 살펴보겠습니다.

 

1. 관리자 페이지에 대한 접근 제어 미흡 및 인증 처리 미흡 합니다.

 

2. Index of 보안 설정 미흡으로 인한 디렉터리 구조 노출합니다. 

 

3. Apache 서버 보안 설정 미흡으로 인한 버전 정보 노출됩니다. 

 

 

 

칼리 리눅스에서 포트 서비스를 확인합니다. 개발자들 같은 경우에는 포트들은 마음대로 바꿀 수 있습니다. 

 

 

-sV 명령어를 사용해서 버전을 스캐닝 합니다. -sV 버전으로 스캐닝을 해야 하는 이유는 어떤 버전이 취약점이 나왔는지 파악하기 힘들기 때문입니다. 공격자 입장에서도 답답합니다. 그래서 버전을 스캐닝하고 어디가 연결 되었는지 확인할 수 있습니다. 

 

 

-oX 는 Nmap 에서 사용되는 출력 형식을 지정하는 옵션입니다. 이 옵션을 사용하여서 Nmap 의 스캔 결과를 XML 형식으로 저장할 수 있습니다. 

 

 

 

 

cat result.xml 를 누르면 액셀이 터미널에서 출력이 되는데 지저분하게 보이는 것을 알 수 있습니다.

 

 

 

 

엑셀 파일을 컨트롤 + V 를 눌러서 C 드라이브 아무 곳이나 붙여넣기 합니다. 

 

 

 

그리고 엑셀 파일을 열어서 붙여넣기 하면 이렇게 내용이 생성됩니다. 

 

 

조금 더 편하게 보는 방법이면 firefox 명령어를 사용해서 html 형식으로 파일을 볼 수 있습니다. 

 

 

 

이런식으로 바로 파일을 복사해서 새로운 엑셀 파일에다가 붙여넣기 하면 됩니다. 

 

 

이번에는 searchsploit 명령어를 사용해보겠습니다. 

 

searchsploit 명령어는 보안 엔지니어 및 해커들이 보안 취약점을 찾고 이를 악용하는 데 사용하는 유용한 도구 중 하나입니다. "searchsploit apache" 명령은 Apache 웹 서버와 관련된 취약점 정보를 검색합니다. 결과에는 해당 취약점의 제목,

경로, 취약한 버전 등이 포함됩니다.

 

검색 결과에서 특정 취약점의 정보를 확인하고자 한다면 해당 취약점에 대한 디렉토리로 이동하여 해당 파일을 확인할 수 있습니다. "searchsploit" 명령어는 취약점 분석 및 보안 조사에 유용하며, 취약점을 악용하기 위해 공격자들에게도 사용될 수 있습니다. 따라서 이 도구를 사용할 때는 법적인 규정과 윤리적인 책임을 준수해야 합니다.

 

 

 

searchsploit --nmap 명령은 Exploit Database에서 Nmap(Network Mapper)과 관련된 취약점 정보를 검색하는 것으로 예상됩니다. 그러나 해당 명령은 유효하지 않습니다. Exploit Database에는 --nmap과 같은 옵션을 사용하여 Nmap과 관련된 취약점을 직접 검색하는 기능이 없습니다.

 

대신, 다음과 같이 searchsploit 명령어를 사용하여 Nmap과 관련된 취약점을 검색할 수 있습니다:

Nmap의 경우 주로 취약점 스캐닝이나 포트 스캐닝에 사용되는 도구이므로, 해당 도구 자체에 취약점이 발견되기보다는 Nmap을 통해 찾은 시스템이나 서비스에서 발견된 취약점을 탐지할 수 있습니다. 이러한 취약점 정보는 Nmap 스크립트나 다른 도구를 사용하여 스캔한 후에 해당 시스템에서 발견된 취약점을 검색하는 것이 보다 효과적일 수 있습니다.