[Webhacking.kr] NotSQL
·
Wargame/Wargame site
https://webhacking.kr/chall.php Webhacking.kr webhacking.krhttp://webhacking.kr:10012/ http://webhacking.kr:10012/ webhacking.kr:10012처음에 문제 이름만 대충 보고 NoSQL Injection 문제인 줄 알았다.. 하지만 GraphQL Injection 문제이기에 해당 공격 기법에 대해 모른다면 아래의 글을 통해 개념을 익히고 풀어보면 좋을 것 같다. GraphQL InjectionGraphQL Injection이란?GraphQL Injection이란 GraphQL 쿼리가 담긴 요청을 조작하여 악의적인 요청을 보내는 기법입니다.API와 GraphQL에 관한 설명은 다른 포스팅을 참고해 주세요 (API..
SSTI (Server Side Template Injection)
·
Web/Web Hacking
SSTI란?공격자가 템플릿 구문을 이용해 악성 페이로드를 템플릿에 주입하고, 서버 측에서 실행되도록 하는 공격-> 사용자의 입력이 데이터로서 템플릿에 전달되지 않고 템플릿 내에 직접 연결될 때 발생이러한 SSTI는 서버 측에서 전달되고 평가되기 때문에, CSTI보다 훨씬 위험도가 높으며 서버의 민감한 파일을 읽거나 RCE와 같은 공격이 가능합니다.템플릿 구문SSTI 가능 여부는 아래와 같은 페이로드를 통해 확인해 볼 수 있습니다. {{9*9}}${9*9}${{9*9}}#{9*9} 웹 페이지에서 만약 파라미터 값을 그대로 출력하고 있다면 아래와 같은 방법으로 SSTI 가능 여부를 확인할 수 있지만만약 그대로 출력하는 것이 아닌 변수를 통해 해당 변수의 값이 출력되는 환경에서는 아래와 같은 방법으로 SSTI..
CSTI (Client Side Template Injection)
·
Web/Web Hacking
CSTI란?클라이언트 사이드 템플릿 엔진을 사용해 동적으로 콘텐츠를 생성할 때, 공격자가 악성 스크립트를 삽입해 이를 실행시키는 공격 -> XSS와 같은 공격에 취약 (Web Template Engine이란?)Client Side Template을 사용한 웹 페이지에서 사용자의 동작에 따라 동적으로 DOM을 생성할 때 XSS에서 사용되는 페이로드가 주입되면 DOM XSS로 이어지게 됩니다.  위와 같이 파라미터 값을 Client Side Template로 출력시키는 환경에서템플릿 구문에 수학식을 입력하였을 때, 해당 식이 그대로 출력되는 것이 아닌, 계산 결과가 출력되는 경우 CSTI가 가능하다는 것임을 확인할 수 있습니..
GraphQL Injection
·
Web/Web Hacking
GraphQL Injection이란?GraphQL Injection이란 GraphQL 쿼리가 담긴 요청을 조작하여 악의적인 요청을 보내는 기법입니다.API와 GraphQL에 관한 설명은 다른 포스팅을 참고해 주세요 (API란? / GraphQL이란?) 아래의 사진과 같이 상품의 정보들을 불러오는 요청에 대한 응답으로 id값이 1, 2, 4인 상품만 반환될 경우 id값이 3인 상품이 숨겨져 있을 수 있다는 추측을 할 수 있습니다.이러한 경우 인자 값으로 id값에 3을 포함시켜 요청해 주면 아래와 같이 비공개 정보를 불러올 수 있습니다.또한 GraphQL에서 스키마에 대한 정보를 서버에서 쿼리할 수 있는 내장 GraphQL 함수를 통해 아래와 같이 GraphQL의 스키마 정보도 불러올 수 있습니다.공격을 위..
NoSQL Injection
·
Web/Web Hacking
NoSQL Injection이란?Not Only SQL의 약자인 NoSQL은 비관계형 DBMS를 뜻하며 이러한 비관계형 DBMS에서 사용되는 쿼리를 조작하여 인증을 우회하거나 데이터베이스의 내용을 유출시키는 공격이 NoSQL Injection입니다. 이전에 SQL Injection 포스팅에서 언급하였듯 DBMS에는 테이블 형식으로 데이터가 저장되는 관계형 DBMS와 키-값 형태로 데이터가 저장되는 비관계형 DBMS가 있습니다. 아래는 관계형 DBMS인 MySQL과 비관계형 DBMS인 MongoDB의 쿼리문을 비교한 것입니다.두 쿼리 모두 userid가 admin이고, password가 keshu인 데이터를 불러오는 쿼리이지만, 구조가 다른 것을 알 수 있습니다. mysql에서는 sql문법으로 명령형 쿼리..
XXE External Entities
·
Web/Web Hacking
XXE란?XML 데이터를 처리하는 과정에 공격자가 개입하여 외부 엔티티를 주입시키는 공격입니다. (XML이란?)웹 애플리케이션에서 브라우저와 서버 간에 데이터 전송을 위해 XML 형식을 사용하는 경우에 발생할 수 있으며, 다음과 같은 공격 방법이 존재하며 해당 방법들을 Burp suite에서 실습해 본 내용과 함께 소개해보도록 하겠습니다.XXE 파일 접근다른 취약점과 XXE 연계문서 제어 불가능 시 XInclude에러 메시지에 데이터를 포함시켜 출력XXE 파일 접근XML 문서 요청에 외부 엔티티를 추가하여 /etc/passwd 파일에 접근하여 파일의 내용을 출력할 수 있습니다.위의 실습 환경에서 실습을 해보았으며해당 사이트에는 Check stock 버튼을 눌러 재고를 확인할 수 있는 기능이 구현되어 있습..
File Download Vulnerability
·
Web/Web Hacking
File Download Vulnerability란?파일 다운로드 기능이 존재하는 웹 애플리케이션에서 파일 다운로드 시 파일 경로에 대한 미검증, 사용자의 권한 검증 미흡 등과 같은 부재로 인해 파일 업로드 과정에서 발생할 수 있는 취약점입니다.메타 문자를 이용한 Path Traversal파일을 다운로드하는 과정에서 프록시를 사용해 요청을 조작할 수 있는데, 이를 통해 파일의 이름을 아래와 같이 바꾸어 상위 디렉터리의 파일을 다운로드할 수 있습니다./../../../../etc/passwd위와 같이 test.txt 파일을 다운로드할 때 BurpSuite의 Proxy Intercept를 On으로 설정한 후 다운로드 해주면 아래와 같은 요청이 가는 것을 가로챌 수 있습니다. 이때 파일 이름이 다운로드를 누른..
File Upload Vulnerability
·
Web/Web Hacking
File Upload Vulnerability이란?파일 업로드 기능이 존재하는 웹 애플리케이션에서 파일 업로드 시 파일의 확장자 검증 미흡, 업로드 파일의 경로 노출, 파일 실행권한 제한을 하지 않음 등과 같은 부재로 인해 파일 업로드 과정에서 발생할 수 있는 취약점입니다.아래와 같은 방법으로 공격이 가능합니다.파일 이름에 메타 문자를 사용하여 상위 디렉터리에 파일 저장 (Path Traversal)웹 쉘 띄우기클라이언트 사이드 취약점으로 연결Path Traversal../과 같은 메타 문자를 파일 이름에 사용하여 상위 디렉터리에 파일을 업로드할 수 있습니다.$file_path="../files/".$file_name; 위와 같은 코드로 작성된 업로드 기능에 ../index.php 를 입력할 경우../f..
SQL Injection (1)
·
Web/Web Hacking
SQL Injection이란?SQL injection이란 관계형 DBMS에서 사용하는 질의 구문인 SQL을 삽입하는 공격입니다. 여기서 DBMS란 DataBase Management System의 약자로 데이터베이스를 관리하는 애플리케이션을 말합니다. 이 DBMS는 테이블 형식으로 데이터가 저장되는 관계형 DBMS와 키-값 형태로 데이터가 저장되는 비관계형 DBMS가 있습니다. 이번 포스팅에서 다루게 될 SQL Injection은 관계형 DBMS인 RDBMS에서 사용되는 공격으로 공격 발생 시 조작된 쿼리로 인증을 우회하거나, 데이터베이스의 정보를 유출할 수 있는 해킹 기법입니다.SQL Injection은 공격 방법에 따라 여러 종류가 존재합니다.이번 포스팅에서는 아래의 4가지 종류의 SQL Inject..
XSS (Cross Site Scripting)
·
Web/Web Hacking
XSS(Cross Site Scripting)란?공격자에 의해 작성된 스크립트가 다른 사용자에게 전달되는 것으로 이용자를 식별하기 위한 세션 및 쿠키 정보를 탈취하여 임의의 기능을 실행할 수 있는 해킹기법→ Cross Site Scripting의 약자인 CSS는 이미 스타일시트 언어인 Cascading Style Sheets의 약자로 사용되기 때문에 XSS를 사용 이러한 XSS는 발생 형태에 따라서 아래와 같이 다양한 종류로 구분됩니다.Stored XSS : XSS에 사용되는 악성 스크립트가 서버에 저장되고 서버의 응답에 담겨오는 XSSReflected XSS : XSS에 사용되는 악성 스크립트가 URL에 삽입되고 서버의 응답에 담겨오는 XSSDOM-based XSS : XSS에 사용되는 악성 스크립트가..