일반적인 취약성 유형은 무엇입니까?
사이트 제어권을 불법적으로 획득하는 데 널리 사용되는 SQL 주입 공격 (SQL 주입) 은 응용 프로그램 데이터베이스 계층의 보안 취약점입니다. 프로그램을 설계할 때 입력 문자열에 들어 있는 SQL 디렉티브에 대한 검사를 무시하고 데이터베이스가 정상적인 SQL 디렉티브로 오인되어 데이터베이스가 공격당하고 데이터가 도난, 변경, 삭제될 수 있습니다. 악성 코드, 백도어 프로그램이 웹 사이트에 포함될 위험이 더 커질 수 있습니다.
일반적으로 SQL 주입 위치는 다음과 같습니다.
(1) 양식 제출, 주로 POST 요청 및 GET 요청
(2)URL 매개 변수 제출은 주로 요청 매개 변수를 얻는 데 사용됩니다.
(3) 쿠키 매개 변수 제출;
(4)HTTP 요청 헤더에서 Referer, User_Agent 등과 같은 수정 가능한 값.
(5) .MP3 파일의 일부 파일 정보와 같은 일부 모서리 입력점.
SQL 주입의 위험은 데이터베이스 수준뿐만 아니라 데이터베이스를 호스팅하는 운영 체제도 위태롭게 할 수 있습니다. SQL 주입이 말을 걸기 위해 사용된다면 맬웨어를 퍼뜨리는 데도 사용될 수 있다. 이러한 위험에는 다음이 포함되지만 이에 국한되지는 않습니다.
(1) 데이터베이스 정보 유출: 데이터베이스에 저장된 사용자의 개인 정보 유출. 데이터베이스는 데이터의 저장 센터로서 다양한 개인 정보 정보를 저장하는 경우가 많으며, SQL 주입 공격은 공격자에게 투명하게 만들 수 있습니다.
(2) 웹 페이지 변조: 데이터베이스를 조작하여 특정 웹 페이지를 변조합니다.
(3) 웹사이트 말 걸기, 맬웨어 전파: 데이터베이스의 일부 필드 값 수정, 인터넷 말 연결 포함, 말 걸기 공격.
(4) 데이터베이스가 악의적으로 조작되었다: 데이터베이스 서버가 공격당했고, 데이터베이스의 시스템 관리자 계정이 변조되었다.
(5) 서버 원격 제어, 뒷문 설치. 데이터베이스 서버가 제공하는 운영 체제 지원을 통해 해커는 운영 체제를 수정하거나 제어할 수 있습니다.
(6) 하드 드라이브 데이터를 파괴하고 전체 시스템을 마비시킵니다.
SQL 주입 문제를 해결하는 열쇠는 사용자 입력에서 발생할 수 있는 모든 데이터를 엄격하게 검사하고 데이터베이스 구성에 최소 권한 원칙을 사용하는 것입니다. 일반적으로 사용되는 솔루션은 다음과 같습니다.
(1) 모든 쿼리 문은 데이터베이스에서 제공하는 파라메트릭 쿼리 인터페이스를 사용하고, 파라메트릭 문은 SQL 문에 사용자 입력 변수를 포함하는 대신 매개변수를 사용합니다. 현재 거의 모든 데이터베이스 시스템은 SQL 주입 공격을 효과적으로 방지하는 파라메트릭 SQL 문 실행 인터페이스를 제공합니다.
(2) 특수 문자의 경우 (\
(3) 각 데이터의 유형을 확인하십시오. 예를 들어, 숫자 데이터는 숫자여야 하고, 데이터베이스의 저장 필드는 int 에 해당해야 합니다.
(4) 데이터 길이는 비교적 긴 SQL 주입 문이 제대로 실행되지 않도록 엄격하게 규정해야 합니다.
(5) 웹 사이트의 각 데이터 계층 인코딩은 통일되어 있으며 UTF-8 인코딩을 사용하는 것이 좋습니다. 상층부와 하층부 간의 불일치로 인해 일부 필터링된 모델이 우회될 수 있습니다.
(6) 웹 사이트 사용자의 데이터베이스에 대한 운영 권한을 엄격하게 제한하여 해당 사용자에게 자신의 업무만을 충족시킬 수 있는 권한을 제공하고 주입 공격이 데이터베이스에 미치는 위험을 최소화합니다.
(7) 유형 오류, 필드 불일치 등과 같은 SQL 오류 메시지를 웹 사이트에 표시하지 않도록 하여 공격자가 이러한 오류 메시지를 사용하여 일부 판단을 내리지 못하도록 합니다.
(8) 웹 사이트를 게시하기 전에 전문적인 SQL 주입 감지 도구를 사용하여 이러한 SQL 주입 취약점을 적시에 감지하고 복구하는 것이 좋습니다.
둘째, 크로스 사이트 스크립팅 취약점 크로스 사이트 스크립팅 공격 (일반적으로 XSS) 은 클라이언트에서 발생하며 개인 정보 도용, 낚시 사기, 암호 도용, 악성 코드 전파 등의 공격에 사용할 수 있습니다. XSS 공격에 사용되는 기술은 주로 HTML 과 Javascript 이지만 VBScript 와 ActionScript 도 있습니다. XSS 공격은 웹 서버를 직접적으로 위태롭지는 않지만, 웹 사이트를 통해 전파되어 웹 사용자를 공격하여 웹 사용자 계정을 도난당하고 웹 사이트에 심각한 피해를 입힙니다.
XSS 유형은 다음과 같습니다.
(1) 비지속 사이트: 반사적 사이트 스크립트 취약점으로 현재 가장 일반적인 사이트 간 유형입니다. 교차 사이트 코드는 일반적으로 링크에 존재합니다. 이러한 링크가 요청되면 교차 사이트 코드는 서버를 통해 반사되고 교차 사이트 코드는 서버 (예: 데이터베이스) 에 저장되지 않습니다. 이전 장에 제시된 예가 바로 이런 상황이다.
(2) 영구 사이트: 가장 직접적인 사이트 간 유형이며, 사이트 간 코드는 데이터베이스와 같은 서버에 저장됩니다. 사용자가 포럼에 게시하는 것은 매우 일반적입니다. 포럼에서 사용자가 입력한 Javascript 코드 데이터를 필터링하지 않으면 이 게시물을 찾는 다른 사용자가 게시자가 포함된 Javascript 코드를 실행할 수 있습니다.
(3) DOM XSS (Domxss) 는 클라이언트 3) DOM (document object model) 에서 발생하는 사이트 간 취약점으로, 대부분 클라이언트 스크립트 논리로 인한 보안 문제입니다.
XSS 의 위험은 다음과 같습니다.
(1) 낚시 사기: 가장 일반적인 것은 대상 사이트의 반사 사이트 간 스크립트 취약점을 활용하여 대상 사이트를 낚시 사이트로 리디렉션하거나 낚시 자바스크립트를 주입하여 대상 사이트의 양식 입력을 모니터링하거나 DHTML 을 기반으로 고급 낚시 공격을 시작하는 것입니다.
(2) 사이트 말 걸기: 인프레임 (IFrame) 을 이용해 숨겨진 악성 사이트를 내장하거나, 피의자들을 악성 사이트로 향하거나, 악성 사이트 창을 팝업해 사이트 간 공격을 할 수 있다.
(3) 신분 도용: 쿠키는 특정 웹 사이트에 대한 사용자의 인증 표시이며, XSS 는 사용자의 쿠키를 훔쳐 웹 사이트에 대한 사용자의 운영 권한을 훔칠 수 있습니다. 역장 사용자 쿠키가 도난당하면 사이트에 큰 피해를 입힐 수 있다.
(4) 웹 사이트 사용자 정보 도용: 사용자 쿠키를 훔칠 수 있을 때 공격자는 웹 사이트에 대한 사용자의 운영 권한을 획득하여 사용자의 개인 정보를 볼 수 있습니다.
(5) 스팸 전송: 예를 들어 SNS 커뮤니티에서는 XSS 취약점을 이용하여 피의자의 신분을 빌려 특정 대상 그룹에 대량의 스팸을 보냅니다.
(6) 사용자를 납치하는 웹 동작: 일부 고급 XSS 공격은 사용자의 웹 동작을 납치하고 사용자의 브라우징 이력을 모니터링하며 데이터 송수신 등을 할 수도 있습니다.
(7)XSS 웜: XSS 웜은 광고, 트래픽 브러시, 말 걸기, 못된장난, 온라인 데이터 손상, DDoS 공격 구현에 사용할 수 있습니다.
XSS 예방을 위한 일반적인 기술은 다음과 같습니다.
(1) SQL 주입 보호에 대한 권장 사항과 마찬가지로 모든 입력이 의심된다고 가정하면 모든 입력에서 스크립트, iframe 등을 엄격하게 검사해야 합니다. 여기서 입력은 사용자가 직접 상호 작용할 수 있는 입력 인터페이스뿐만 아니라 HTTP 요청의 쿠키 및 HTTP 요청 헤더의 변수도 포함합니다.
(2) 데이터의 유형뿐만 아니라 데이터의 형식, 길이, 범위 및 내용도 확인해야 한다.
(3) 클라이언트에서만 데이터를 확인하고 필터링하지 말고 중요한 필터링 단계는 서버측에 있습니다.
(4) 출력 데이터도 점검해야 한다. 데이터베이스의 값은 대형 웹 사이트의 여러 곳에서 출력될 수 있습니다. 입력이 인코딩되더라도 곳곳의 출력 지점에서 보안 검사를 해야 한다.
(5) 어플리케이션을 게시하기 전에 알려진 모든 위협을 테스트합니다.
셋째, 약한 암호 취약점 약한 암호는 엄격하게 정확하게 정의되지 않았다. 일반적으로 다른 사람 (당신을 잘 아는 사람) 이 추측하거나 해독된 도구에 의해 쉽게 해독되는 비밀번호는 약한 비밀번호라고 생각한다. 암호 설정은 일반적으로 다음 지침을 따릅니다.
(1) 빈 암호나 시스템 기본 암호를 사용하지 마십시오. 이는 잘 알려진 일반적인 약한 암호입니다.
(2) 암호 길이가 8 자 이상입니다.
(3) 암호는 연속적인 문자 (예: AAAAAAAA) 또는 반복되는 문자의 조합 (예: tzf.tzf) 이 아니어야 합니다.
(4) 암호는 대문자 (a-z), 소문자 (A-Z), 숫자 (0-9) 및 특수 문자의 네 가지 문자 조합이어야 합니다. 각 문자 유형에는 하나 이상의 문자가 포함되어 있습니다. 문자에 한 문자만 포함된 경우 첫 번째 또는 마지막 문자가 아니어야 합니다.
(5) 비밀번호에는 이름과 생년월일, 등록일, 로그인명, 이메일 주소 및 기타 본인과 관련된 자료, 사전의 단어가 포함되지 않아야 합니다.
(6) 암호는 특정 문자가 아닌 숫자나 기호가 있는 텍스트일 수 없습니다.
(7) 비밀번호는 기억하기 쉬워야 하며, 다른 사람이 뒤에서 당신의 입력을 쉽게 볼 수 없도록 빨리 입력할 수 있어야 한다.
(8) 발견되지 않은 침입자가 비밀번호를 계속 사용하지 못하도록 90 일 이내에 비밀번호를 한 번 이상 변경합니다.
넷. HTTP 헤더 추적 취약점 http/1.1(RFC 2616) 은 클라이언트가 웹 서버에 추적 요청을 제출하여 진단 정보를 테스트하거나 얻는 데 주로 사용하는 HTTP TRACE 방법을 정의합니다 웹 서버에서 추적을 활성화하면 제출된 요청 헤더가 서버 응답의 본문에 완전히 반환됩니다. 여기서 HTTP 헤더에는 세션 토큰, 쿠키 또는 기타 인증 정보가 포함될 수 있습니다. 공격자는 이 허점을 이용하여 합법적인 사용자를 속이고 그들의 프라이버시 정보를 얻을 수 있다. 이런 허점은 종종 다른 방식과 결합하여 효과적인 공격을 한다. HTTP 추적 요청은 XMLHttpRequest 와 같은 클라이언트 브라우저 스크립트를 통해 시작할 수 있고 DOM 인터페이스를 통해 액세스할 수 있으므로 공격자가 쉽게 활용할 수 있습니다. HTTP 헤더 추적 취약점을 방지하는 방법은 일반적으로 HTTP 추적 방법을 비활성화합니다.
동사 (verb 의 약어) Struts2 원격 명령 실행 취약점 Apache Struts 는 Java 웹 응용 프로그램을 구축하는 오픈 소스 스키마입니다. Apache Struts 에는 변환 오류가 발생할 경우 모든 Java 코드를 주입하고 실행하는 데 사용할 수 있는 입력 필터링 오류가 있습니다. 웹 사이트에 원격 코드 실행 취약점이 생긴 이유는 대부분 웹 사이트가 Apache Struts Xwork 를 웹 사이트의 응용 프로그램 프레임워크로 채택하고 있기 때문이다. 이 소프트웨어에는 원격 실행 코드의 고위험 취약점이 있어 웹 사이트는 보안 위험에 직면해 있다. CNVD 는 "GPS 차량 위성 위치 확인 시스템" (CNVD-20 12- 13934) 웹 사이트에 원격으로 명령을 실행하는 취약점과 같은 많은 취약점을 처리했습니다. Aspcms 메시지 북의 원격 코드 실행 취약점 (CNVD-2012-11590) 등
이런 허점을 복구하려면 아파치 홈페이지에 가서 아파치 스트럭트를 최신 버전으로 업그레이드하면 된다.
6. 프레임 낚시 취약점 (프레임 주입 취약점) 프레임 주입 공격은 Internet Explorer 5, Internet Explorer 6 및 Internet Explorer 7 에 대한 공격입니다. 이러한 공격으로 인해 Internet Explorer 는 결과 프레임의 대상 웹 사이트를 확인하지 않으므로 자바스크립트나 Javascript 와 같은 모든 코드가 프레임워크를 통해 액세스할 수 있습니다. 이 공격은 스크립트가 여러 프레임워크를 통해 코드를 주입할 때도 발생합니다. 스크립트는 여러 프레임의 입력을 확인하지 않기 때문입니다. 이 프레임 주입의 또 다른 형태는 모든 공급업체의 브라우저와 신뢰할 수 없는 입력을 확인하지 않는 스크립트에 영향을 미칩니다. 응용 프로그램에서 서로 다른 프레임워크가 서로 통신할 필요가 없는 경우 프레임 이름을 완전히 삭제하고 익명 프레임워크를 사용하여 프레임 주입을 방지할 수 있습니다. 그러나 응용 프로그램에는 일반적으로 프레임워크 간의 통신이 필요하기 때문에 이 방법은 가능하지 않습니다. 따라서 일반적으로 명명된 프레임을 사용하지만 세션마다 다른 프레임을 사용하며 예측할 수 없는 이름을 사용합니다. 한 가지 가능한 방법은 각 기본 프레임 이름 뒤에 사용자의 세션 토큰을 추가하는 것입니다 (예: main_display).
7. 파일 업로드 취약점 파일 업로드 취약점은 일반적으로 웹 코드에서 파일 업로드 경로 변수 필터링이 엄격하지 않아 발생합니다. 파일 업로드 기능 구현 코드가 사용자가 업로드하는 파일 접미사와 파일 유형을 엄격하게 제한하지 않는 경우 공격자는 웹 사이트 백도어 파일을 포함하여 웹 액세스 디렉토리를 통해 모든 파일을 업로드하여 웹 서버를 원격으로 제어할 수 있습니다. 따라서 웹 사이트와 앱을 개발하는 과정에서 업로드된 파일에 대한 엄격한 제한과 검증이 필요하며 악성 코드가 있는 파일의 업로드를 금지해야 합니다. 관련 디렉토리의 실행 권한도 제한하여 webshell 공격을 방지합니다.
여덟, 응용 프로그램 테스트 스크립트 누출. 테스트 스크립트는 제출된 매개변수 데이터에 대한 충분한 필터링이 부족하기 때문에 원격 공격자는 웹 프로세스의 권한으로 이 취약점을 사용하여 시스템의 모든 파일 내용을 볼 수 있습니다. 이러한 취약점을 예방하려면 일반적으로 제출된 데이터를 엄격하게 필터링하고 공격을 효과적으로 감지해야 합니다.
9. 개인 IP 주소 유출 취약점 IP 주소는 사이버 사용자의 중요한 표지로 공격자가 공격하기 전에 알아야 하는 것이다. 여러 가지 방법으로 얻을 수 있습니다. 공격자는 네트워크 상황에 따라 다른 방법을 사용합니다. 예를 들어, LAN 에서 네트워크의 이름을 Ping 하는 Ping 명령을 사용하여 IP 를 얻습니다. IP 버전 QQ 를 사용하여 인터넷에 직접 표시합니다. 가장 효과적인 방법은 상대방의 네트워크 패킷을 가로채고 분석하는 것이다. 공격자는 소프트웨어를 통해 가로채는 패킷의 IP 헤더 정보를 찾아 직접 분석한 다음 해당 정보를 기반으로 특정 IP 를 알 수 있습니다. 가장 효과적인' 패킷 분석 방법' 의 경우 일부 소프트웨어를 설치할 수 있으며, 바오터우에서 IP 정보를 자동으로 제거할 수 있습니다. 그러나 이러한 소프트웨어를 사용하는 데는 심각한 자원 소비, 컴퓨터 성능 저하와 같은 단점도 있습니다. 일부 포럼 또는 웹 사이트를 방문할 때 영향을 받습니다. 인터넷 카페 사용자 등에 적합하지 않습니다. 현재 개인 사용자가 IP 를 숨기는 가장 인기 있는 방법은 프록시를 사용하는 것이다. 포워딩 서비스는 프록시 서버를 사용한 후 전송된 패킷을 수정하기 때문에 패킷 분석 방법은 무효화됩니다. 일부 네트워크 소프트웨어 (QQ, MSN, IE 등). ) 사용자 IP 를 노출하기 쉬운 이러한 모든 것은 프록시를 사용하여 인터넷에 연결할 수 있도록 지원합니다. 특히 QQ 가' ezProxy' 와 같은 에이전트 소프트웨어를 사용하여 연결한 후에는 IP 버전 QQ 가 IP 주소를 표시할 수 없습니다. 에이전트는 사용자의 IP 를 효과적으로 숨길 수 있지만 공격자도 프록시를 우회하여 상대방의 실제 IP 주소를 찾을 수 있습니다. 상황에 따라 사용자가 IP 를 숨기는 방법이 달라집니다.
X. 암호화되지 않은 로그인 요청 웹 구성이 안전하지 않기 때문에 로그인 요청은 사용자 이름, 암호 등 민감한 필드를 전송할 때 암호화되지 않으며 공격자는 네트워크를 도청하여 중요한 정보를 탈취할 수 있습니다. 전송 전 암호화 (예: SSH) 를 권장합니다.
XI. 민감한 정보 유출 취약점 SQL 주입, XSS, 디렉토리 트래버스, 약한 암호 등 민감한 정보가 유출되고 공격자는 취약점을 통해 민감한 정보를 얻을 수 있습니다. 병의 원인에 따라 방어 방법도 다르다.