javascript injection tutorial
자바 스크립트 주입이란?
Javascript는 가장 널리 사용되는 기술 중 하나이며 웹 페이지 및 웹 응용 프로그램에 가장 널리 사용됩니다.
다양한 웹 사이트 기능을 실현하는 데 사용할 수 있습니다. 그러나이 기술은 개발자와 테스터가 알아야 할 몇 가지 보안 문제를 가져올 수 있습니다.
Javascript는 좋은 목적뿐만 아니라 일부 악의적 인 공격에도 사용할 수 있습니다. 그중 하나는 Javascript Injection입니다. JS Injection의 본질은 클라이언트 측에서 실행될 자바 스크립트 코드를 삽입하는 것입니다.
이 튜토리얼에서는 Javascript Injection이 가능한지 확인하는 방법, JS Injection이 수행되는 방법 및 JS Injection이 가져올 수있는 결과에 대해 자세히 알아 봅니다.
학습 내용 :
- JavaScript 주입의 위험
- JS 주입 테스트가 중요한 이유는 무엇입니까?
- 다른 공격과의 비교
- 자바 스크립트 주입 확인
- 매개 변수 수정
- 웹 사이트의 디자인 수정
- JavaScript 주입에 대해 테스트하는 방법
- 이 공격에 대한 가능한 보호
- 결론
- 추천 도서
JavaScript 주입의 위험
JS Injection은 악의적 인 사용자가 웹 사이트의 디자인을 수정하고, 웹 사이트의 정보를 얻고, 표시된 웹 사이트의 정보를 변경하고, 매개 변수 (예 : 쿠키)로 조작 할 수있는 많은 가능성을 제공합니다. 따라서 이것은 심각한 웹 사이트 손상, 정보 유출 및 심지어 해킹을 가져올 수 있습니다.
JS Injection의 주요 목적은 웹 사이트의 모양을 변경하고 매개 변수를 조작하는 것입니다. JS Injection의 결과는 웹 사이트 디자인을 손상시키는 것에서부터 다른 사람의 계정에 액세스하는 것까지 매우 다를 수 있습니다.
JS 주입 테스트가 중요한 이유는 무엇입니까?
많은 사람들이 JS 주입 테스트가 정말로 필요한지 묻습니다.
JS Injection 취약성 확인은 보안 테스트의 일부입니다. 보안 테스트는 일반적으로 프로젝트 계획에 포함 된 경우에만 수행됩니다. 시간, 많은주의 및 여러 세부 사항 확인이 필요하기 때문입니다.
프로젝트를 실현하는 동안 JS Injection을 포함하여 가능한 모든 공격에 대한 테스트를 건너 뛰는 것이 매우 일반적이라는 사실을 알게되었습니다. 이런 식으로 팀은 프로젝트의 시간을 절약하려고합니다. 그러나 이러한 관행은 종종 고객의 불만으로 끝납니다.
프로젝트 계획에 포함되어 있지 않더라도 보안 테스트를 적극 권장한다는 사실을 알아야합니다. 가능한 주요 공격에 대한 검사를 수행해야합니다. 동시에 가능한 JS 주입 취약점을 검사해야합니다.
간단한 자바 스크립트 종료 주입 취약점 제품에서 제품의 품질과 회사의 명성이 떨어질 수 있습니다. 가능한 공격과 일반적인 보안 테스트에 대해 테스트하는 방법을 배울 때마다이 테스트 부분을 건너 뛰지 않습니다. 이렇게하면 제품의 품질이 더 확실해집니다.
다른 공격과의 비교
JS Injection은 다음과 같이 위험하지 않습니다. SQL 주입 , 클라이언트 측에서 수행되며 SQL Injection 공격 중에 발생하는 것처럼 시스템의 데이터베이스에 도달하지 않습니다. 또한 XSS 공격만큼 위험하지 않습니다.
이 공격이 진행되는 동안 웹 사이트의 외관 만 변경 될 수 있지만 XSS 공격의 주요 목적은 다른 사람의 로그인 데이터를 해킹하는 것입니다.
그러나 JS Injection은 또한 심각한 웹 사이트 손상을 일으킬 수 있습니다. 웹 사이트의 외관을 파괴 할뿐만 아니라 다른 사람의 로그인 데이터를 해킹하는 좋은 기반이됩니다.
자바 스크립트 주입 확인
JS Injection에 대한 테스트를 시작할 때 가장 먼저해야 할 일은 JS Injection이 가능한지 확인하는 것입니다. 이러한 유형의 인젝션 가능성을 확인하는 것은 매우 쉽습니다. 웹 사이트로 이동할 때 다음과 같이 브라우저의 주소 바코드를 입력해야합니다.
javascript : alert (‘실행되었습니다!’);
'실행 됨!'메시지가있는 팝업 창이 나타나면 웹 사이트가 JS Injection에 취약한 것입니다.
그런 다음 웹 사이트의 주소 표시 줄에서 다양한 Javascript 명령을 시도 할 수 있습니다.
JS Injection은 웹 사이트의 주소 표시 줄에서만 가능하지 않다는 점을 언급해야합니다. JS Injection에 취약 할 수있는 다양한 웹 사이트 요소가 있습니다. 가장 중요한 것은 웹 사이트에서 자바 스크립트 주입의 영향을받을 수있는 부분과이를 확인하는 방법을 정확히 아는 것입니다.
일반적인 JS 주입 대상은 다음과 같습니다.
- 다양한 포럼
- 기사의 댓글 필드
- 방명록
- 텍스트를 삽입 할 수있는 기타 모든 양식.
이 공격이 텍스트 저장 양식에 대해 가능한지 테스트하려면 일반 텍스트를 제공 함에도 불구하고 아래에 언급 된대로 Javascript 코드를 입력하고 양식에 텍스트를 저장하고 페이지를 새로 고칩니다.
javascript : alert (‘실행되었습니다!’);
새로 열린 페이지에 '실행 됨!'메시지가있는 텍스트 상자가 포함되어 있으면 테스트 된 양식에 대해 이러한 유형의 인젝션 공격이 가능합니다.
두 가지 방법 모두에서 메시지가있는 텍스트 상자가 나타나면 더 까다로운 JS 주입 방법으로 웹 사이트를 중단 할 수 있습니다. 그런 다음 매개 변수 수정 또는 설계 수정과 같은 다양한 사출 유형을 시도 할 수 있습니다.
물론 매개 변수 수정은 설계 수정보다 더 위험한 것으로 간주됩니다. 따라서 테스트하는 동안 매개 변수 수정에 더 많은주의를 기울여야합니다.
또한 Javascript Injection에 대해 더 취약한 웹 사이트 부분은 모든 유형의 데이터가 저장되는 입력 필드라는 점을 염두에 두어야합니다.
매개 변수 수정
앞서 언급했듯이 가능한 Javascript Injection 손상 중 하나는 매개 변수 수정입니다.
이 주입 공격 중에 악의적 인 사용자는 매개 변수 정보를 얻거나 매개 변수 값을 변경할 수 있습니다.( 예 ,쿠키 설정). 이는 악의적 인 사용자가 민감한 콘텐츠를 얻을 수 있으므로 매우 심각한 위험을 초래할 수 있습니다. 이러한 유형의 주입은 일부 Javascript 명령을 사용하여 수행 할 수 있습니다.
현재 세션 쿠키를 반환하는 Javascript 명령은 그에 따라 작성됩니다.
javascript : alert (document.cookie);
브라우저의 URL 표시 줄에 입력하면 현재 세션 쿠키가있는 팝업 창이 표시됩니다.
웹 사이트가 쿠키를 사용하는 경우 당사는 쿠키에 저장된 서버 세션 ID 또는 기타 사용자 데이터와 같은 정보를 읽을 수 있습니다.
alert () 대신 다른 자바 스크립트 함수를 사용할 수 있다는 점을 언급해야합니다.
예를 들어 ,취약한 웹 사이트를 발견 한 경우 쿠키 매개 변수‘session_id‘에 세션 ID를 저장합니다. 그런 다음 현재 세션 ID를 변경하는 함수를 작성할 수 있습니다.
javascript : void (document.cookie =“session_id =<>');
이렇게하면 세션 ID 값이 변경됩니다. 또한 매개 변수를 변경하는 다른 방법도 가능합니다.
예를 들어, 악의적 인 사용자가 다른 사람으로 로그인하려고합니다. 로그인을 수행하기 위해 악의적 인 사용자는 먼저 인증 쿠키 설정을 true로 변경합니다. 쿠키 설정이 'true'로 설정되지 않은 경우 쿠키 값은 '정의되지 않음'으로 반환 될 수 있습니다.
배열 자바에서 항목을 제거하는 방법
이러한 쿠키 값을 변경하기 위해 악의적 인 사용자는 브라우저 내의 URL 표시 줄에서 Javascript 명령에 따라 수행합니다.
javascript : void (document.cookie =“authorization = true“);
결과적으로 현재 쿠키 매개 변수 authorization = false는 authorization = true로 변경됩니다. 이렇게하면 악의적 인 사용자가 민감한 콘텐츠에 액세스 할 수 있습니다.
또한 때때로 Javascript 코드가 매우 민감한 정보를 반환한다는 점을 언급해야합니다.
javascript : alert (document.cookie);
예를 들어, 웹 사이트 개발자가 충분히 신중하지 않은 경우 사용자 이름 및 비밀번호 매개 변수 이름과 값도 반환 할 수 있습니다. 그런 다음 이러한 정보는 웹 사이트를 해킹하거나 민감한 매개 변수의 값을 변경하는 데 사용될 수 있습니다.
예를 들어, 아래 코드로 사용자 이름 값을 변경할 수 있습니다.
javascript : void (document.cookie =”username = otherUser”);
이렇게하면 다른 매개 변수 값도 수정할 수 있습니다.
웹 사이트의 디자인 수정
자바 스크립트는 웹 사이트의 형식과 일반적으로 웹 사이트의 디자인을 수정하는데도 사용할 수 있습니다.
예를 들어, Javascript를 사용하면 웹 사이트에 표시된 모든 정보를 변경할 수 있습니다.
- 표시되는 텍스트.
- 웹 사이트의 배경.
- 웹 사이트 양식의 모양.
- 팝업 창의 모양.
- 다른 웹 사이트 요소의 모양.
예를 들어, 웹 사이트에 표시된 이메일 주소를 변경하려면 적절한 Javascript 명령을 사용해야합니다.
javascript : void (document.forms (0) .email.value = 'Test@test.com') ;
웹 사이트의 디자인에 대한 다른 복잡한 조작도 가능합니다. 이 공격으로 우리는 웹 사이트의 CSS 클래스에 접근하고 변경할 수 있습니다.
예를 들어, JS Injection으로 웹 사이트의 배경 이미지를 변경하려면 그에 따라 명령을 실행해야합니다.
javascript : void (문서. background-image : url ( 'other-image.jpg');
또한 악의적 인 사용자는 텍스트 삽입 양식에 아래에 언급 된 Javascript Injection 코드를 작성하여 저장할 수 있습니다.
javascript : void (경고 ( 'Hello!'));
그러면 페이지가 열릴 때마다 'Hello!'메시지가있는 텍스트 상자가 나타납니다.
Javascript Injection으로 변경된 웹 사이트의 디자인은 매개 변수 수정보다 덜 위험합니다. 그러나 웹 사이트의 디자인이 악의적으로 변경되면 회사의 명성을 잃을 수 있습니다.
JavaScript 주입에 대해 테스트하는 방법
다음과 같은 방법으로 테스트 할 수 있습니다.
- 수동으로
- 테스트 도구 사용
- 브라우저 플러그인 사용
가능한 Javascript 취약점은 수행 방법에 대해 잘 알고있는 경우 수동으로 확인할 수 있습니다. 또한 다양한 자동화 도구로 테스트 할 수 있습니다.
예를 들어, SOAP UI 도구를 사용하여 API 수준에서 테스트를 자동화 한 경우 다음을 사용하여 Javascript Injection 테스트를 실행할 수도 있습니다. SOAP UI .
그러나 모든 테스트 단계가 실수없이 작성되어야하므로 JS 주입을 위해 테스트 할 SOAP UI 도구에 대한 좋은 지식이 있었어야했습니다. 테스트 단계가 잘못 작성되면 보안 테스트 결과도 잘못 될 수 있습니다.
또한 공격 가능성을 확인하기위한 다양한 브라우저의 플러그인을 찾을 수 있습니다. 그러나 일반적으로 더 정확한 결과를 반환하므로이 공격에 대해 수동으로 확인하는 것을 잊지 않는 것이 좋습니다.
Javascript Injection에 대해 수동으로 테스트하면 웹 사이트의 보안에 대해 더 확신하고 확신 할 수 있습니다. 이렇게하면 테스트하는 동안 누락 된 양식이 없으며 모든 결과가 사용자에게 표시되는지 확인할 수 있습니다.
Javascript Injection에 대해 테스트하려면 Javascript에 대한 일반적인 지식이 있어야하며 웹 사이트의 어느 부분이 더 취약한 지 알아야합니다. 또한 웹 사이트는 JS Injection으로부터 보호 될 수 있으며 테스트하는 동안이 보호를 해제해야합니다.
이렇게하면이 공격에 대한 보호가 충분히 강력한 지 여부를 확인할 수 있습니다.
이 공격에 대한 가능한 보호
첫째,이 공격을 방지하기 위해 수신 된 모든 입력을 검증해야합니다. 입력은 데이터가 처음 승인 될 때뿐만 아니라 매번 검증되어야합니다.
클라이언트 측 유효성 검사에 의존하지 않는 것이 좋습니다. 또한 서버 측에서 중요한 논리를 수행하는 것이 좋습니다.
많은 사람들이 따옴표를 이중으로 변경하여 Javascript 주입으로부터 보호하려고 시도하며 Javascript 코드는 그런 방식으로 수행해서는 안됩니다.
예를 들어, 따옴표가있는 내용을 주석 필드에 쓰면…, 그 따옴표는 큰 따옴표로 대체됩니다.<>...<>. 이렇게하면 입력 한 Javascript 코드가 실행되지 않습니다.
나는 따옴표를 큰 따옴표로 바꾸는 것이 가능한 JS 주입 공격을 피하기위한 매우 일반적인 관행이라는 것을 알아 차 렸습니다. 그러나 JS Injection 코드를 수행하기 위해 따옴표를 인코딩하는 몇 가지 방법이 있습니다. 따라서 따옴표를 이중으로 변경하는 것은이 공격으로부터 보호하는 완벽한 방법이 아닙니다.
결론
Javascript는 웹 사이트에서 가장 널리 사용되는 기술 중 하나이므로 Javascript Injection은 웹 사이트에 대한 가능한 공격 중 하나라는 점을 항상 염두에 두어야합니다. 따라서 웹 사이트 또는 기타 웹 기술을 테스트하는 동안이 공격에 대해 테스트하는 것을 잊지 마십시오.
보안 테스트를 수행 할 때 JS 주입을 잊어서는 안됩니다. 일부 사람들은이 테스트가 클라이언트 측에서 수행되기 때문에 덜 위험한 공격으로 간주합니다.
그러나 이는 잘못된 접근 방식이며 Javascript 주입은 민감한 정보 유출, 매개 변수 변경 또는 사용자 계정 해킹과 같은 심각한 웹 사이트 손상을 유발할 수 있다는 점을 항상 기억해야합니다.
따라서 우리는 이것을 테스트의 중요한 부분으로 간주해야하며 좋은 제품과 회사의 평판을위한 투자의 일부입니다.
JS 주입 테스트는 그리 어렵지 않습니다. 첫째, 자바 스크립트에 대한 일반적인 지식이 있어야하며 현재 웹 솔루션에서이 공격이 가능한지 확인하는 방법을 알아야합니다.
또한 테스트하는 동안 웹 사이트는 이러한 유형의 공격에 대해 보호 할 수 있지만 너무 약할 수 있다는 점을 기억해야합니다. 또한 확인해야합니다. 기억해야 할 또 다른 중요한 점은 다양한 유형의 Javascript Injection 공격이 있으며 테스트하는 것을 잊지 말아야한다는 것입니다.
Javascript 주입 테스트를 수행 했습니까 ?? 우리는 귀하의 의견을 듣고 기쁩니다. 아래 의견 섹션에서 귀하의 경험을 자유롭게 공유하십시오.