security testing
응용 프로그램 보안을 테스트하는 방법 – 웹 및 데스크톱 응용 프로그램 보안 테스트 기술
보안 테스트가 필요하십니까?
소프트웨어 산업은이 시대에 확고한 인정을 받았습니다. 그러나 최근 10 년 동안 사이버 세계는 거의 모든 비즈니스의 새로운 형태를 형성하고있는 훨씬 더 지배적이고 원동력 인 것으로 보입니다. 오늘날 사용되는 웹 기반 ERP 시스템은 IT가 사랑하는 지구촌에 혁명을 일으켰다는 최고의 증거입니다.
요즘 웹 사이트는 홍보 나 마케팅만을위한 것이 아니라 완전한 비즈니스 요구를 충족시키는 강력한 도구로 발전했습니다.
웹 기반 급여 시스템, 쇼핑몰, 은행, 증권 거래 응용 프로그램은 조직에서 사용할뿐만 아니라 오늘날 제품으로도 판매되고 있습니다.
이는 온라인 애플리케이션이 SECURITY라는 핵심 기능에 대해 고객과 사용자의 신뢰를 얻었음을 의미합니다.
의심 할 여지없이 보안 요소는 데스크톱 애플리케이션에서도 가장 중요한 가치입니다.
그러나 웹에 대해 이야기 할 때 보안의 중요성은 기하 급수적으로 증가합니다. 온라인 시스템이 거래 데이터를 보호 할 수 없다면 아무도 그것을 사용하려고 생각하지 않을 것입니다. 보안은 아직 정의를 찾는 단어가 아니며 미묘한 개념도 아닙니다. 그러나 보안에 대한 몇 가지 칭찬을 나열하고 싶습니다.
자동화 테스트 스크립트 작성 방법
애플리케이션의 보안 결함의 예
- '입학'지점이 '시험'지점의 데이터를 수정할 수있는 경우 학생 관리 시스템이 안전하지 않습니다.
- DEO (데이터 입력 운영자)가 '보고서'를 생성 할 수있는 경우 ERP 시스템은 안전하지 않습니다.
- 온라인 쇼핑몰은 고객의 신용 카드 정보가 암호화되지 않은 경우 보안이 없습니다.
- SQL 쿼리가 사용자의 실제 암호를 검색하는 경우 사용자 지정 소프트웨어의 보안이 적절하지 않습니다.
보안
이제 저는 제 말로 보안에 대한 가장 간단한 정의를 제시합니다.
'보안은 보호 된 데이터에 대해 승인 된 액세스가 허용되고 승인되지 않은 액세스가 제한됨을 의미합니다.' .
따라서 두 가지 주요 측면이 있습니다. 첫 번째는 데이터 보호이고 두 번째는 해당 데이터에 대한 액세스입니다. 또한 애플리케이션이 데스크톱이든 웹 기반이든 보안은 앞서 언급 한 두 가지 측면을 중심으로 이루어집니다.
데스크톱 및 웹 기반 소프트웨어 애플리케이션의 보안 측면에 대한 개요를 살펴 보겠습니다.
학습 내용 :
데스크탑 및 웹 보안 테스트
데스크톱 응용 프로그램은 액세스뿐 아니라 데이터의 조직 및 저장에 대해서도 안전해야합니다.
마찬가지로 웹 애플리케이션은 데이터 보호와 함께 액세스와 관련하여 훨씬 더 많은 보안을 요구합니다. 웹 개발자는 애플리케이션이 SQL 주입, 무차별 대입 공격 및 XSS (사이트 간 스크립팅)에 영향을받지 않도록해야합니다. 마찬가지로 웹 애플리케이션이 원격 액세스 포인트를 지원하는 경우 이들도 보안되어야합니다.
또한 Brute Force Attack은 웹 응용 프로그램과 관련이있을뿐만 아니라 데스크톱 소프트웨어도 이에 취약하다는 점을 명심하십시오.
이 서문이 충분하기를 바라며 이제 요점을 말씀 드리겠습니다. 지금까지이 기사의 주제에 대해 읽고 있다고 생각하신다면 사과드립니다. 소프트웨어 보안과 주요 관심사에 대해 간략히 설명했지만 제 주제는 '보안 테스트'입니다.
추천 자료 => 웹 애플리케이션 보안 테스트
이제 소프트웨어 응용 프로그램에서 보안 기능을 구현하는 방법과 이러한 기능을 테스트하는 방법을 설명하겠습니다. 내 초점은 보안이 아닌 보안 테스트의 내용과 방법에 있습니다.
권장 보안 테스트 도구
# 1) 넷 파커
Netsparker HTML5, 웹 2.0 및 단일 페이지 응용 프로그램과 같은 모든 유형의 레거시 및 최신 웹 응용 프로그램에 대한 자동 크롤링 및 검색 기능을 갖춘 웹 응용 프로그램 보안 테스트 솔루션입니다. Proof-Based Scanning Technology 및 확장 가능한 스캐닝 에이전트를 사용합니다.
관리 할 자산이 많더라도 완벽한 가시성을 제공합니다. 팀 관리 및 취약성 관리와 같은 더 많은 기능이 있습니다. Jenkins, TeamCity 또는 Bamboo와 같은 CI / CD 플랫폼에 통합 할 수 있습니다.
=> 최고의 Netsparker 보안 테스트 도구를 사용해보세요#두) Kiuwan
SDLC의 모든 단계에서 코드의 취약성을 찾아 수정합니다.
Kiuwan OWASP, CWE, SANS 25, HIPPA 등을 포함한 가장 엄격한 보안 표준을 준수합니다. 개발 중 즉각적인 피드백을 위해 Kiuwan을 IDE에 통합하십시오. Kiuwan은 모든 주요 프로그래밍 언어를 지원하고 주요 DevOps 도구와 통합됩니다.
=> 무료로 코드 스캔#삼) Indusface WAS 무료 웹 사이트 악성 코드 검사
Indusface WAS OWASP 상위 10 위를 기반으로 취약점을 탐지하고보고하는 자체 자동화 된 웹 애플리케이션 취약점 스캐너와 함께 번들로 제공되는 수동 침투 테스트를 모두 제공하며, 또한 모든 스캔에서 웹 사이트의 링크, 악성 코드 및 손상 검사에 대한 웹 사이트 평판 검사를 포함합니다.
=> 무료로 빠른 웹 사이트 스캔 실행
=> 문의하기 여기에 목록을 제안합니다.
8 가지 주요 보안 테스트 기술 목록
# 1) 응용 프로그램에 대한 액세스
데스크톱 애플리케이션이든 웹 사이트이든 액세스 보안은 다음을 통해 구현됩니다. '역할 및 권한 관리'. 기능을 다루는 동안 암시 적으로 수행되는 경우가 많습니다.
예를 들어, 병원 관리 시스템에서 접수 원은 환자를 등록하고 의사와 약속 일정을 잡는 것이 그의 임무이기 때문에 실험실 테스트에 대해 가장 걱정하지 않습니다.
따라서 랩 테스트와 관련된 모든 메뉴, 양식 및 화면은 '접수자'역할에서 사용할 수 없습니다. 따라서 역할과 권한을 올바르게 구현하면 액세스 보안이 보장됩니다.
테스트 방법 : 이를 테스트하려면 모든 역할과 권한에 대한 철저한 테스트를 수행해야합니다.
테스터는 역할이 다른 여러 사용자 계정을 만들어야합니다. 그런 다음 이러한 계정의 도움을 받아 애플리케이션을 사용해야하며 모든 역할이 자체 모듈, 화면, 양식 및 메뉴에만 액세스 할 수 있는지 확인해야합니다. 테스터가 충돌을 발견하면 완전한 확신을 가지고 보안 문제를 기록해야합니다.
이것은 또한 아래 이미지에 매우 아름답게 묘사 된 인증 및 권한 부여 테스트로 이해 될 수 있습니다.
따라서 기본적으로 서로 다른 사용자에 대해 '내가 누구인지'와 '무엇을 할 수 있는지'를 테스트해야합니다.
일부 인증 테스트에는 비밀번호 품질 규칙 테스트, 기본 로그인 테스트, 비밀번호 복구 테스트, 보안 문자 테스트, 로그 아웃 기능 테스트, 비밀번호 변경 테스트, 보안 질문 / 답변 테스트 등이 포함됩니다.
마찬가지로 일부 권한 테스트에는 경로 탐색 테스트, 누락 된 권한 테스트, 수평 적 액세스 제어 문제 테스트 등이 포함됩니다.
# 2) 데이터 보호
데이터 보안에는 세 가지 측면이 있습니다. 첫 번째는 사용자는 자신이 사용해야하는 데이터 만 보거나 사용할 수 있습니다. . 이것은 또한 역할과 권한에 의해 보장됩니다.
예를 들어, 회사의 TSR (전화 판매 대표)은 가용 재고 데이터를 볼 수 있지만 생산을 위해 얼마나 많은 원자재를 구매했는지는 알 수 없습니다.
따라서 보안 테스트의 이러한 측면은 이미 위에서 설명했습니다. 데이터 보호의 두 번째 측면은 다음과 관련이 있습니다. 데이터가 DB에 저장되는 방법 .
추가 읽기 = >> 데이터베이스 보안 테스트 란?
모든 민감한 데이터는 보안을 위해 암호화되어야합니다. 특히 사용자 계정의 암호, 신용 카드 번호 또는 기타 업무상 중요한 정보와 같은 민감한 데이터의 경우 암호화가 강력해야합니다.
세 번째이자 마지막 측면은이 두 번째 측면의 확장입니다. 중요하거나 업무상 중요한 데이터의 흐름이 발생할 때 적절한 보안 조치를 취해야합니다. 이 데이터가 동일한 응용 프로그램의 다른 모듈 사이에서 이동하든 다른 응용 프로그램으로 전송 되든 상관없이 안전하게 유지하려면 암호화해야합니다.
데이터 보호 테스트 방법 : 테스터는 데이터베이스에서 사용자 계정의 '비밀번호', 클라이언트의 결제 정보, 기타 업무상 중요하고 민감한 데이터를 쿼리하고 이러한 모든 데이터가 암호화 된 형태로 DB에 저장되어 있는지 확인해야합니다.
마찬가지로 적절한 암호화 후에 만 다른 형식이나 화면간에 데이터가 전송되는지 확인해야합니다. 또한 테스터는 암호화 된 데이터가 목적지에서 제대로 해독되었는지 확인해야합니다. 다양한 '제출'작업에 특별한주의를 기울여야합니다.
Windows 7 용 최고의 드라이버 업데이트 프로그램
테스터는 정보가 클라이언트와 서버간에 전송 될 때 웹 브라우저의 주소 표시 줄에 이해할 수있는 형식으로 표시되지 않는지 확인해야합니다. 이러한 확인 중 하나라도 실패하면 응용 프로그램에 확실히 보안 결함이있는 것입니다.
테스터는 또한 솔팅의 적절한 사용을 확인해야합니다 (암호와 같은 최종 입력에 추가 비밀 값을 추가하여 더 강력하고 크래킹하기 어렵게 만듭니다).
보안되지 않은 임의성은 일종의 취약성이므로 테스트해야합니다. 데이터 보호를 테스트하는 또 다른 방법은 약한 알고리즘 사용을 확인하는 것입니다.
예를 들어, HTTP는 일반 텍스트 프로토콜이므로 사용자 자격 증명과 같은 민감한 데이터가 HTTP를 통해 전송되면 애플리케이션 보안에 위협이됩니다. HTTP 대신 민감한 데이터는 HTTPS (SSL, TLS 터널을 통해 보안)를 통해 전송되어야합니다.
그러나 HTTPS는 공격 표면을 증가 시키므로 서버 구성이 적절하고 인증서 유효성이 보장되는지 테스트해야합니다.
# 3) 무차별 대입 공격
Brute Force Attack은 대부분 일부 소프트웨어 도구에 의해 수행됩니다. 개념은 유효한 사용자 ID를 사용하여 s oftware는 계속해서 로그인을 시도하여 연관된 암호를 추측하려고합니다.
이러한 공격에 대한 보안의 간단한 예는‘Yahoo’,‘Gmail’및‘Hotmail’과 같은 모든 메일 링 응용 프로그램이 수행하는 것처럼 단기간 동안의 계정 정지입니다. 특정 횟수의 연속 시도 (대부분 3 회)가 성공적으로 로그인하지 못하면 해당 계정은 일정 시간 (30 분 ~ 24 시간) 동안 차단됩니다.
Brute-Force Attack을 테스트하는 방법 : 테스터는 계정 정지의 일부 메커니즘을 사용할 수 있고 정확하게 작동하는지 확인해야합니다. (S) 그는 유효하지 않은 자격 증명으로 로그인을 계속 시도하는 경우 소프트웨어 응용 프로그램이 계정을 차단하는지 확인하기 위해 유효하지 않은 사용자 ID와 암호로 로그인을 시도해야합니다.
애플리케이션이 그렇게하는 경우 무차별 대입 공격으로부터 안전합니다. 그렇지 않으면 테스터가이 보안 취약점을보고해야합니다.
무차별 대입 테스트는 블랙 박스 테스트와 그레이 박스 테스트의 두 부분으로 나눌 수 있습니다.
블랙 박스 테스트에서는 애플리케이션에서 사용하는 인증 방법을 발견하고 테스트합니다. 또한 그레이 박스 테스트는 암호 및 계정 세부 정보 및 메모리 트레이드 오프 공격에 대한 부분 지식을 기반으로합니다.
딸깍 하는 소리 여기 예제와 함께 블랙 박스 및 그레이 박스 무차별 대입 테스트를 탐색합니다.
위의 세 가지 보안 측면은 웹 및 데스크톱 응용 프로그램 모두에 대해 고려해야하며 다음 사항은 웹 기반 응용 프로그램에만 관련됩니다.
# 4) SQL 주입 및 XSS (사이트 간 스크립팅)
개념적으로 말하면 두 해킹 시도의 주제가 비슷하므로 함께 논의됩니다. 이 접근 방식에서 웹 사이트를 조작하기 위해 해커가 악성 스크립트를 사용합니다. .
그러한 시도에 대해 면역 할 수있는 몇 가지 방법이 있습니다. 웹 사이트의 모든 입력 필드에 대해 필드 길이는 스크립트의 입력을 제한 할 수있을만큼 작게 정의되어야합니다.
MP3 비디오 변환 도구로 YouTube
예를 들어, 성의 필드 길이는 255 대신 30이어야합니다. 큰 데이터 입력이 필요한 일부 입력 필드가있을 수 있습니다. 이러한 필드의 경우 해당 데이터를 응용 프로그램에 저장하기 전에 입력에 대한 적절한 유효성 검사를 수행해야합니다.
또한 이러한 필드에서는 HTML 태그 또는 스크립트 태그 입력이 금지되어야합니다. XSS 공격을 유발하기 위해 응용 프로그램은 알 수 없거나 신뢰할 수없는 응용 프로그램의 스크립트 리디렉션을 삭제해야합니다.
어떻게 SQL 주입 테스트 및 XSS : 테스터는 모든 입력 필드의 최대 길이가 정의되고 구현되었는지 확인해야합니다. (S) 또한 정의 된 입력 필드 길이가 스크립트 입력과 태그 입력을 수용하지 않는지 확인해야합니다. 둘 다 쉽게 테스트 할 수 있습니다.
예를 들어, 20이‘이름’필드에 지정된 최대 길이이고 입력 문자열“
thequickbrownfoxjumpsoverthelazydog”는 이러한 제약 조건을 모두 확인할 수 있습니다.
또한 응용 프로그램이 익명 액세스 방법을 지원하지 않는지 테스터가 확인해야합니다. 이러한 취약성이 존재하는 경우 애플리케이션이 위험합니다.
기본적으로 SQL 주입 테스트는 다음 5 가지 방법을 통해 수행 할 수 있습니다.
- 탐지 기술
- 표준 SQL 주입 기술
- 데이터베이스 지문
- 기술적 착취
- SQL 인젝션 서명 침입 기법
딸깍 하는 소리 여기 위의 SQL 주입 테스트 방법에 대해 자세히 읽어보십시오.
XSS는 또한 웹 사이트에 악성 스크립트를 삽입하는 주입 유형입니다. 딸깍 하는 소리 여기 XSS 테스트에 대해 자세히 알아보십시오.
# 5) 서비스 액세스 포인트 (밀봉 및 보안 개방)
오늘날 기업들은 서로 의존하고 협력하며, 애플리케이션, 특히 웹 사이트에서도 마찬가지입니다. 이러한 경우 두 공동 작업자는 서로에 대한 일부 액세스 포인트를 정의하고 게시해야합니다.
지금까지 시나리오는 매우 간단하고 간단 해 보이지만 주식 거래와 같은 일부 웹 기반 제품의 경우 상황이 그렇게 간단하고 쉽지 않습니다.
많은 수의 대상 고객이있는 경우 액세스 포인트는 모든 사용자를 용이하게 할 수있을만큼 개방되어야하며 모든 사용자의 요청을 처리 할 수있을만큼 충분히 수용되고 보안 시험에 대처할 수있을만큼 충분히 안전해야합니다.
서비스 액세스 포인트를 테스트하는 방법 : 설명하겠습니다. 예 주식 거래 웹 애플리케이션의 (주식을 매입하고자하는) 투자자는 주가에 대한 현재 및 과거 데이터에 액세스 할 수 있어야합니다. 사용자에게이 기록 데이터를 다운로드 할 수있는 기능이 제공되어야합니다. 이를 위해서는 응용 프로그램이 충분히 열려 있어야합니다.
수용 및 보안이란 애플리케이션이 투자자가 자유롭게 거래 할 수 있도록 지원해야 함을 의미합니다 (법률 규정에 따라). 연중 무휴 24 시간 구매 또는 판매가 가능하며 거래 데이터는 해킹 공격에 영향을받지 않아야합니다.
또한 많은 사용자가 애플리케이션과 동시에 상호 작용하므로 애플리케이션은 모든 사용자를 즐겁게하기 위해 충분한 액세스 포인트를 제공해야합니다.
어떤 경우에는 원치 않는 애플리케이션이나 사람을 위해 액세스 포인트를 봉인 할 수 있습니다. . 이는 애플리케이션의 비즈니스 도메인과 사용자에 따라 다릅니다.
예를 들어, 사용자 지정 웹 기반 Office Management System은 IP 주소를 기반으로 사용자를 인식하고 해당 응용 프로그램의 유효한 IP 범위에 속하지 않는 다른 모든 시스템 (응용 프로그램)과의 연결 설정을 거부 할 수 있습니다.
테스터는 모든 네트워크 간 및 네트워크 내 액세스 응용 프로그램에는 신뢰할 수있는 응용 프로그램, 컴퓨터 (IP) 및 사용자가 있습니다.
개방형 액세스 포인트가 충분히 안전한지 확인하기 위해 테스터는 신뢰할 수있는 IP 주소와 신뢰할 수없는 IP 주소를 모두 가진 다른 컴퓨터에서 액세스를 시도해야합니다. 응용 프로그램의 성능에 대한 확신을 가지려면 여러 종류의 실시간 트랜잭션을 대량으로 시도해야합니다. 이렇게하면 애플리케이션의 액세스 포인트 용량도 명확하게 관찰됩니다.
테스터는 다른 모든 요청이 거부되는 동안에 만 애플리케이션이 신뢰할 수있는 IP 및 애플리케이션의 모든 통신 요청을 받아들이는지 확인해야합니다.
마찬가지로 애플리케이션에 개방형 액세스 포인트가있는 경우 테스터는 필요한 경우 사용자가 안전한 방식으로 데이터를 업로드 할 수 있는지 확인해야합니다. 이 안전한 방법은 파일 크기 제한, 파일 형식 제한 및 업로드 된 파일의 바이러스 또는 기타 보안 위협 검사를 의미합니다.
이것이 테스터가 액세스 포인트와 관련하여 애플리케이션의 보안을 확인할 수있는 모든 방법입니다.
# 6) 세션 관리
웹 세션은 동일한 사용자와 연결된 HTTP 요청 및 응답 트랜잭션의 시퀀스입니다. 세션 관리 테스트는 웹 앱에서 세션 관리가 처리되는 방식을 확인합니다.
특정 유휴 시간 후 세션 만료, 최대 수명 후 세션 종료, 로그 아웃 후 세션 종료, 세션 쿠키 범위 및 기간 확인, 단일 사용자가 여러 동시 세션을 가질 수 있는지 테스트 등을 테스트 할 수 있습니다.
# 7) 오류 처리
오류 처리 테스트에는 다음이 포함됩니다.
오류 코드 확인 : 예를 들어, 테스트 408 요청 시간 초과, 400 잘못된 요청, 404 찾을 수 없음 등을 테스트합니다. 이러한 오류 코드가 반환되도록 페이지에 특정 요청을해야합니다.
자세한 메시지와 함께 오류 코드가 반환됩니다. 이러한 메시지에는 해킹 목적으로 사용될 수있는 중요한 정보가 포함되어서는 안됩니다.
스택 추적 확인 : 기본적으로 반환 된 오류 메시지에 해커에 대한 흥미로운 정보가있는 스택 추적이 포함되도록 응용 프로그램에 예외적 인 입력을 제공하는 것이 포함됩니다.
# 8) 특정 위험 기능
주로 두 가지 위험한 기능은 다음과 같습니다. 지불 과 파일 업로드 . 이러한 기능은 매우 잘 테스트해야합니다. 파일 업로드의 경우 원치 않거나 악의적 인 파일 업로드가 제한되는지 주로 테스트해야합니다.
결제의 경우 주로 주입 취약점, 안전하지 않은 암호화 저장소, 버퍼 오버플로, 암호 추측 등을 테스트해야합니다.
=> 문의하기 여기에 목록을 제안합니다.추가 자료 :