본문 바로가기

bWAPP

(7)
[비박스] SSI Injection SSI는 Server Side Includes를 뜻하는데 이는 방문자 카운터, 홈페이지의 로고를 간단하게 수정하기 위해 사용되며, 형식은 HTML의 주석과 비슷하고 확장자명은 .shtml을 사용한다. 또한, HTML은 사용자의 브라우저에서 처리되는 반면에 SSI는 웹서버에서 처리되며 처리의 결과만이 사용자의 브라우저로 전송된다. ↓Low level 사용자의 ip주소를 출력해주는 SSI Injection페이지이다. localhost이기 때문에 루프백 주소인 127.0.0.1이 출력된다. ssii.shtml인 것을 보아 SSI가 사용된 페이지라는 것을 확인할 수 있다. Last name 입력칸에 을 입력한다. 짐작이 가듯 현재 시간을 출력하는 코드이다. Lookup 버튼을 누르게 되면 현재 시간이 출력되는 ..
[비박스] PHP Code Injection ↓Low level PHP 코드 인젝션 페이지이다. message부분을 클릭하면 'test'라는 문자열이 출력된다. 또한 URL에 파라미터가 노출되는 것을 통해 GET방식인 것을 확인할 수 있다. 따라서 우리는 파라미터의 값을 변조해 원하는 값을 출력할 수도 있다. 그렇다면 OS 커맨드 인젝션처럼 시스템 명령의 결과를 출력해볼 수도 있지 않을까? system 함수를 사용하여 시스템 명령의 결과를 출력해보자. 시스템 명령의 결과인 www-data가 출력된 것을 확인할 수 있다. whoami 명령어는 시스템에 로그인한 사용자의 이름을 확인할 수 있는 명령어이다. 먼저 system함수를 이용한 취약점을 이용할 수 있었던 이유를 알아보자. phpi.php의 소스코드에서 eval() 함수를 찾아볼 수 있다. ev..
[비박스] OS Command Injection OS Command Injection이란 취약한 변수에 악의적인 코드나 명령어를 주입하여 서버 운영체제에 접근하는 공격을 말한다. ↓Low level os 커맨드 인젝션 페이지이다. 입력한 주소의 DNS 주소를 출력해주는데 이때 nslookup 시스템 명령어를 사용하여 DNS 주소를 조회하게 된다. ls 명령어를 사용해 디렉터리 목록을 출력해보자. ls 앞에 |(파이프라인)을 입력한 것을 확인할 수 있다. 파이프라인은 둘 이상의 명령어를 실행할 때 사용하며 한줄에 여러개의 명령어를 사용할 수 있다. 위 사진과 같이 명령어를 입력하게 되면 가장 상위의 디렉터리 정보가 출력되는 것을 확인할 수 있다. 다음은 nc(넷켓)을 사용해 비박스의 서버정보를 파악해보자. 리눅스에서 터미널을 열어 다음과 같이 명령어를 ..
[비박스] iFrame Injection iframe은 HTML 문서 안에서 또 다른 HTML 문서를 출력하는 태그를 말한다. 악성URL을 삽입한 후 사이즈를 0으로 설정하여 숨기는 방법을 사용하여 사용자가 의도하지 않은 악성 웹 사이트에 접속하거나 경고창을 띄울 수 있다. 들어가기에 앞서 robots.txt란 무엇인지 알아보자. robots.txt는 웹사이트에 웹 크롤러같은 로봇들의 접근을 제어하기 위한 규약을 말한다. (검색엔진에서도 마찬가지) 여기서 웹 크롤러란 웹페이지의 정보들을 자동으로 수집하는 프로그램을 말하며 일종의 매크로라고 말할 수 있다. 이러한 웹 크롤러들을 특정 디렉토리 혹은 모든 디렉토리에 접근을 허용할것인지 차단할것인지를 robots.txt를 이용해 결정할 수 있다. robots.txt를 확인하는 방법은 최상위경로url에..
[비박스] HTML Injection - Stored (Blog) 저번 시간에 HTML Injection - Reflected기법에 대해 공부했다면 오늘은 Stored기법에 대하여 공부해보자. ↓Low level 먼저 할일이 있다. htmli_post.php 소스코드에서 태그로 작성된 부분을 복사하는 것이다. HTML Injection - Reflected (POST) 페이지를 열고 [F12]번을 눌러 개발자 도구를 실행한다. 그 후 아래 사진처럼 들여쓰기 되어 있는 코드를 펼친다. 이제 우리가 원하는 코드를 확인할 수 있다. 위 사진에서 태그로 이루어진 코드가 바로 우리가 원하는 코드이다. HTML에서 태그란 데이터를 서버로 보내는 기능을 한다. 이 코드를 복사해 stored 페이지 입력창에 입력해보자. 입력한 결과 왠지 익숙한 창이 보이는 것을 확인할 수 있다. 우..
[비박스] HTML Injection - Reflected (POST) 오늘은 HTML Injection기법중에서 POST방식에 대해 배워보자. ↓Low level 값을 입력했을 때 GET방식과 다른 점이 없어보인다. 그렇다면 URL창을 확인해보자. 여기서 우리는 GET방식과 차이점이 존재한다는 것을 확인할 수 있다. 바로 URL상에서 매개변수가 보이지 않는다는 것이다. 따라서 우리는 버프슈트를 이용해 매개변수를 확인해야 한다. 버프슈트를 통해 매개변수를 확인해보자. 우리가 방금 적은 입력값들을 확인할 수 있다. 여기서 우리가 매개변수를 바꾸면 어떤 결과가 나오는지 확인해보자. 매개변수의 값을 바꿔서 전달한 결과 바뀐 매개변수의 값이 출력되는 것을 확인할 수 있다. ↓Medium level 태그가 실행되지 않는다. 태그가 실행되지 않는 이유가 GET방식과 동일하다. 버프슈트..
[비박스] HTML Injection - Reflected (GET) HTML 인젝션, SQL 인젝션, XSS(Cross Site Scripting)과 같은 공격에는 반사(reflected)기법과 저장(stored)기법이 존재한다. ·반사(reflected)기법 악의적인 코드가 삽입된 URL이나 링크를 사용자가 쉽게 확인할 수 없도록 변형 시킨 후 이메일이나 다른 웹사이트등을 통해 URL클릭을 유도하는 방법을 말한다. 만약 사용자가 이 URL이나 링크를 클릭하게 되면 악의적인 코드가 실행되게 된다. 저장(stored)기법과 달리 악의적인 코드가 데이터베이스에 저장되지 않아 일회성 공격을 위해 사용되는 방법이다. ·저장(stored)기법 게시판 또는 서버에 글을 작성하여 다른 사용자가 열람했을 때 코드가 실행되게 하는 방법을 말한다. 반사(reflected)기법과 달리 악의..