반응형

모의해킹/웹해킹 14

[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] WebGoat Blind XXE 개념

※ Blind XXE 어떤 경우에도 공격이 성공하더라도 결과가 보이지 않는 경우가 있다. 혹은 읽으려고 하는 자료에 XML 파서에서 오류를 일으키는 문자가 포함되어 있을 수 있다. 예시를 통해 알아보자. 여기서는 외부 DTD를 하나 참조하는데 이것은 공격자의 서버(WebWolf)에서 통제가 가능한 특징이 있다. 당신은 공격자로서, WebWolf 서버를 통제할 수 있다.(동일한 기능을 할 수 있다면 굳이 WebWolf가 아니여도 상관없다) 한 가지 예를 들면, 이 서버의 랜딩 페이지인 "http://192.168.219.100:9090/landing"에 연결을 시도하면 클라이언트의 흔적을 남길 수도 있다. 그럼 어떻게 이를 활용하여 XXE 공격을 할 수 있을지 고민해보자. "attack.dtd"라는 파일을..

[Web Hacking] WebGoat XXE Modern REST framework 문제풀이

※ Modern REST framework 최신의 REST 프레임워크를 사용하는 서버의 경우, 개발자가 생각하지 못한 형태의 데이터(요청 메시지)를 받아들이는 경우도 있다. 이에 따라 JSON 엔드포인트(서버에서 JSON 형식의 데이터를 받아 처리하는 부분)는 XXE 공격에 취약할 수 있다. 해당 문제에서는 이 프레임워크로 서버용 웹 어플리케이션을 개발하는 경우, 클라이언트와 JSON 객체의 형식으로 메시지를 주고 받을 수 있고, 개발 의도와 무관하게 클라이언트가 JSON 객체가 아닌 형태로 요청 메시지를 보내도 서버 측에서는 그것을 받아들일 수 있다는 정도로 생각하면 된다. 문제의 힌트를 열어보게 되면 content type를 살펴보라고 나와있다. Content-Type을 살펴보면 application..

[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) 5 문제풀이

※ 선행 학습 필요 개념 Blind SQL Injection Blind SQL injection은 데이터베이스에 참 또는 거짓 질문을하고 응용 프로그램 응답에 따라 답을 결정하는 SQL 주입 공격 유형입니다. 이 공격은 웹 응용 프로그램이 일반적인 오류 메시지를 표시하도록 구성되었지만 SQL 삽입에 취약한 코드를 완화하지 않은 경우에 종종 사용됩니다. 공격 유형 1) Boolean based Blind SQL Injection [ 외부 입력값 ] 제목검색: hello' AND 1=1-- (유효한 검색단어와 항상 참이되는 조건 부여) [결과] 게시판 검색됨 --> 참(true)이으로 간주 [ 외부 입력값 ] 제목검색: hello' AND 1=2-- (유효한 검색단어와 항상 거짓이 되는 조건 부여) [결과]..

[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 ... 순으로 컬럼의 갯수를 늘려가다보면 에러가 나지 않는 때가 나올때, 즉 컬럼의 갯수가 일치할 때를 알 수 있..

반응형