전체보기 (37) 썸네일형 리스트형 [칼리리눅스] Commix를 이용한 간단한 실습 Commix란 [comm]과 [i]njection 그리고 e[x]ploiter의 단어들에서 각각 파생되어 만들어진 단어로 Command Injection 기반 취약점과 웹 기반 애플리케이션과 관련된 버그, 오류 또는 취약점을 테스트하기 위해 만들어진 오픈 소스 툴로Commix를 이용하면 특정 취약한 파라미터나 HTTP 헤더에서 명령 주입 취약성을 매우 쉽게 찾아 이용할 수 있다. 또한, Python으로 작성되었으며 대부분의 OS에서 실행이 가능하다. 실습환경은 DVWA에서 진행되었다. Security level을 low로 설정한 후 Command Injection페이지를 띄운다. 칼리리눅스에서 commix 툴을 실행시킨다. (commix는 칼리리눅스 화면 왼쪽 상단 Applications에서 03-Web.. [비박스] 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방식과 동일하다. 버프슈트.. Ping of Death (죽음의 핑) 공격 오늘 동아리 시간에 ping of death를 간단히 실습해 보았다. ping of death란 한글로 번역하면 죽음의 핑이라는 말이다. 위키백과에서 ping of death란 규정 크기 이상의 ICMP 패킷으로 시스템을 마비시키는 공격이라고 설명한다. 정상적인 ICMP 패킷의 크기는 65535Byte까지다. 하지만 ping of death공격은 ICMP 패킷의 크기를 65535Byte보다 크게 설정하여 ping을 보낸다. 여기서 20000Byte로 ping을 보냈다고 가정해보자. 이더넷 환경에서 MTU(Maximum Transmission Unit)는 기본적으로 1500으로 설정되어 있는데(IP Header + TCP Header 포함) 20000Byte로 ping을 보내게 되면 최대 전송 단위인 MT.. 이전 1 2 3 4 5 다음