반응형

injection 7

[Web Hacking] bWAPP(비박스) SQL Injection

※ SQL Injection 사용자가 입력한 값을 검증하지 않고 데이터베이스 쿼리 일부분으로 포함될 때 발생하는 취약점이다. 쿼리문을 참을 만드는 SQL Injection을 시도하면 데이터가 출력되게 된다. ※ Union SQL Injection 2개 이상의 쿼리를 요청하여 결과를 얻는 UNION 이라는 SQL 연산자를 이용한 SQL Injection 공격을 말하며 이 연산자를 이용하여 원래의 요청에 한 개의 추가 쿼리를 삽입하여 정보를 얻어낸다. 단, union를 사용할 때에는 컬럼의 갯수가 같아야 하고 데이터 형식도 같아야 한다. Union select을 이용하여 DB명과 버전 등을 알아낼 수 있다. 관련 시스템 변수 및 함수는 아래와 같다. database() : DB명을 알려주는 함수 user()..

[Web Hacking] bWAPP(비박스) iframe, OS Command, PHP Code, SSI(Server Side Includes) Injection

※ iframe 인젝션 iframe은 HTML 문서 안에서 또 다른 HTML 문서를 보여주는 태그로 다른 프레임들과는 달리 어느 위치든 상관없이 사용 가능하다. 해당 문제에 들어가면 다음과 같은 화면이 나오게 되고, 해당 내용은 robots.txt의 내용이다. 소스에서 페이지의 소스코드를 확인해보면 iframe태그에 의해 출력되는 것을 확인했다. 이렇게 출력되는 것을 보며 여기에는 HTML Injection이 가능할 것으로 추측된다. " height="250" width="250"> 해당 공격문을 url뒤에 추가해서 request해보도록 하자. 공격이 성공적으로 수행되는 것을 볼 수 있다. 공격 후의 소스코드를 확인해보면 iframe태그가 추가되어 있는 것을 볼 수 있다. ※ OS Command 인젝션 ..

[Web Hacking] bWAPP(비박스) HTML Injection

※ HTML 인젝션 - Reflected(GET) 취약한 매개변수에 악의적인 HTML 코드를 삽입하는 공격이다. HTML 태그를 악의적인 사이트에 연결하거나 악성 파일을 다운로드 하도록 유도한다. h태그를 입력해보면 태그가 해석되면서 입력값들이 출력되게 된다. 해당 요청을 URL의 파라미터로 전달할 때는 다음과 같다. 이제 자바스크립트의 alert함수를 이용해 XSS를 시도해보자. alert창이 뜨는 것을 확인할 수 있다. 해당 공격을 이용하여 쿠키와 같은 정보를 탈취할 수 있고, 악의적인 페이지로 리다이렉션이 이루어질 수 있다. 쿠키값을 가져올 수 있는지 테스트해보자. 만약 쿠키값이 공격자에게 넘어가게 된다면 공격자는 ID/PW없이 사용자로 로그인할 수 있다. 이번에는 img태그를 이용해보도록 하자. ..

[Web Hacking] XML 외부개체(XXE Injection)

※ XML 외부 개체(XXE) XXE는 악의적인 자바스크립트를 막기 위한 필터장치를 우회하는 취약점으로 XML 문서에서 동적으로 외부 URI의 리소스를 포함시킬 수 있는 외부 엔티티(Entity)를 사용할 때 발생한다. 오래되고 설정이 엉망인, 많은 XML 프로세서들은 XML 문서 내에서 외부 개체 참조를 평가한다. 외부 개체는 파일 URL 처리기, 내부 파일 공유, 내부 포트 스캔, 원격 코드 실행과 서비스 거부 공격을 사용하여 내부 파일을 공개하는데 사용할 수 있다. ※ XXE Injection 일반적으로 잘못 구성된 XML Parser를 사용하여 신뢰할 수 없는 XML 공격 코드를 주입시켜 실행시키는 응용프로그램에 대한 공격을 말한다. 해당 공격을 통해서 주요 시스템 파일 접근(LFI)이나 외부 악..

[Web Hacking] WebGoat SQL Injection(mitigation) 문제풀이

※ 선행 학습 필요 개념 Order by 절 SELECT문으로 검색된 데이터를 오름차순(ASC)이나 내림차순(DESC)으로 정렬시킬 때 사용한다. Default 값은 Ascending(오름차순)으로 ASC는 생략해도 되며, 문자는 알파벳 순서로 출력된다. ORDER BY절에 선택된 컬럼이 여러 개일 경우 앞(왼쪽)에 정의된 컬럼을 기준으로 먼저 분류한 후, 이후에 나열된 순서대로 분류한다. Order by가 SQL Injection에서 쓰이는 경우는 컬럼(속성)의 수를 확인하기 위함이다. 예를 들어 컬럼이 두 개인 테이블에 쿼리문을 확인해보자 1) select * from table_name where name="a" order by 2; (정상 출력) 2) select * from table_name ..

[Web Hacking] WebGoat SQL Injection(advanced) 3 문제풀이

※ 선행 학습 필요 개념 Union SQL Injection 2개 이상의 쿼리를 요청하여 결과를 얻는 UNION 연산자를 이용해 SQL Injection 공격을 가하는 것을 말하며 공격자는 이 연산자를 이용하여 원래의 요청에 한 개의 추가 쿼리를 삽입하여 정보를 얻어낸다. 공격이 가능한 전제 조건은 컬럼의 수가 같아야 하며 데이터 형식도 같아야 한다. step 1. 컬럼 갯수 알아내기 갯수를 알아내기 위해 앞의 쿼리문에 이어서 union select 1, %23 으로 쓴다면 에러가 뜰 것이다. 그러나 union select 1, 2, %23 => union select 1, 2, 3, %23 ... 순으로 컬럼의 갯수를 늘려가다보면 에러가 나지 않는 때가 나올때, 즉 컬럼의 갯수가 일치할 때를 알 수 있..

[Web Hacking] OWASP A1 인젝션 종류

Injection (인젝션) 이란? 인젝션 취약점은 SQL, OS, LDAP 등에 해당되며 신뢰할 수 없는 데이터를 명령어나 질의문의 일부분으로서 보내질 때 발생하는데, 공격자의 데이터는 개발자가 의도하지 않은 명령을 실행하거나 적절한 권한 없이 데이터에 접근하도록 인터프리터를 속일 수 있습니다. Injection 종류 - SQL Injection 쿼리 등에 SQL 쿼리를 삽입하여 데이터베이스 조희, 변조 및 삭제 등의 공격을 의미한다. - CRLF Injection CRLF(%0d%0a) 패턴 삽입을 통한 악의적인 공격을 의미한다. - Command Injection 쿼리 등에 운영체제 명령어를 삽입하여, 명령어 실행 및 시스템 권한 획득 공격을 의미한다. 1. SQL Injection 1) Error..

반응형