본문 바로가기

WEB/Web Attack

웹셀(Web shell)에 대하여..


Web Attack(웹쉘편..)

 1.웰쉘이란?

 웹쉘을 해커가 악의적인 목적을 가지고 만든 프로그램으로, 주로 스크립트 언어를 사하여 제작한다.

웰셀을 공격대상서버에 업로드를 하여, 해커는 자신의 서버에서 실행시키고자 하는 명령어를 전소하여 서버에서 공격대상서버에서 그 명령어가 실행이 된다.

2.웹쉘 코드의 종류 

2-1) php 웹쉘(간단한 구현)


<?

    <form method="GET" action="">

       <input type="text" name=text>

       <input type="submit" name="submit">

     $cmd=$_GET['text'];

     passthru($cmd);

?>

위의 소스는 cmd인자의 값을 passthru함수로 서버에서 실행시켜주는 함수이다.

위와 같이 passthru함수를 사용해서 서버에서 자신이 원하는 명령을 실행 할 수 있도록 하는 php파일을 웹쉘이라 한다.

보통 업로드 취약점의 경우가 웹쉘 획득의 가장 기본적인 방법이다.


 웹쉘의 실행 원리(2-1)

 보통 시스템을 공부하다 보면 쉘을 통한 공격이 많이 이루어지는 것을 볼 수 있었다.

웹에서도 쉘을 통해 관리자의 서버의 쉘을 획득 할 수 있는 경우가 존재하는데 이를 도와주는 것이 웹쉘이다.


1.해커는 php,jsp,asp와 같은 스크립트언어로 작성된 웹쉘을 업로드 한다.

(업로드시 대부분의 사이트는 스크립트언어의 확장자를 막기 때문에 이를 우회해야한다.)


2.업로드가 성공시 , 업로드 파일을 다운로드 받거나 URL로 파일이 업로드된 위치에 접근해서 웹쉘파일을 실행시킨다. 

(파일다운로드시 해당 파일을 사용자 컴퓨터에 다룬로드 시켜서 실행 시키는 경우와 같이 파일업로드다운로드 취약점이 없는 사이틑 공격대상에 제외된다.)


3.해당 서버에서 웰쉘이 실행되며 보여지는 것은 사용자 웹브라우저이다.

그래서 위의 소스코드와 같이 해당 명령어를 웹브라우저를 통해 전달하게 되면 서버 시스템 내부에서 그 명령을 사용할 수 있게 되는 원리 이다.

해당 서버가 루트궈한으로 돌아간다면 모든 명령어는 물론 최고 관리자 권한이기 때문에 어떤 폴더든 접근하고 삭제하고 수정하고 새로 만들 수 있는 권한이 있다.


4.업로드된 파일의 위치/webshell.php?cmd='ls'이런식으로 작성을 하거나 위에소스처럼 텍스트박스를 출력해주도록해 웹브라우저의 텍스트폼에 입력후 실행한다.

 2-2) r57 Shell


<실행화면>


<소스코드 분석>




<database 선택>

해당 유에 접속하는 함수이다. Mysql,oracle,mssql, postgresql 의 사용여부를 확인하면서 해당 포트를 연결하고 해당 db에연결한다.


<DB 내용 추출>



<해당 서버의 디렉토리에 있는 파일 읽기>


 분석결과

 R57Shell 웹쉘은 자세하게 분석하지는 못했지만 입력하는 모든 명령어들을 하나의 스크립트로 저치하는 것으로 보인다.
여러 함수들을 살펴본 결과 database를 설정하는 것부터 시작해서 쿼리를 전달하는 부분, 파일 오픈하는 명령들이 하나의 스크립트 언어로 작성되어 진다.
실제로 ftp처럼 서버에 접속을해서 실제 명령어들을 실행하는 것이 아닌 하나의 중간과정을 거쳐서 서버 내 시스템에 전달하는 형식으로 웹쉘이 동작하는 것으로 이해 할 수 있다.

 각 종 웹쉘을 다운로드 받을 수 있는 곳

http://www.r57.gen.tr/index.php


'WEB > Web Attack' 카테고리의 다른 글

클라이언트 사용자 공격(1)  (0) 2016.01.23
웹 해킹과 보안 완벽 가이드(인증처리)  (0) 2016.01.07
세션 토큰 생성 과정에서의 취약점  (0) 2015.10.12
Cookie & Session  (0) 2015.10.08
XSS &CSRF  (0) 2014.08.13