삽질은 나의 힘 | '웹쉘' 태그의 글 목록
삽질은 나의 힘 위치로그  |  태그  |  미디어로그  |  방명록
icon 웹쉘 에 해당하는 글1 개
2010.08.16   web shell(?)을 이용한 monitoring


icon web shell(?)을 이용한 monitoring
ETC | 2010. 8. 16. 13:09

===========================================================
[ 차례 ]

1. 웹쉘(web shell)
2. 동작원리 및 활용방안
3. 장단점
4. 기타

===========================================================
[ 1. 웹쉘(web shell) ]

===========================================================
-> OS 내부와 상호작용하는 명령어 해석기(shell)이며,
이를 웹상에서 동작하도록 구현되어있습니다.
   file upload취약점 또는 fopen 취약점을 이용하여 실행하는 경우가 대부분이며
php-mailer와 함께 많이 이용되어지고 있습니다.
   수많은 웹쉘들이 존재하며, 그 형태 또한 다양합니다.
   각종 brute forcing tool부터, file manager, bind shell, mailer등
많은 기능등을 포함하는 것이 있는 반면,    다양한 기능을 버리고 방화벽 우회 또는
추후 사용을 목적으로,
명령어 실행이 가능한 한줄의 code를 만들어    놓기도 합니다.
  
===========================================================
[ 2. 동작원리 및 활용방안 ]

===========================================================
-> 다양한 종류의 웹쉘(web shell)이 존재하나,
여기서는 eval+base64 함수를 이용하는 방식을 선택하였습니다.

[ 2.1 기본형태 ]

-> base64_decode함수를 이용하여 복호화 한 후 eval함수로 실행하는 방식으로,
   source code는 아래 1줄이 전부입니다. (=> xxxxx는 인코딩된 문자열입니다.)

   eval(base64_decode('xxxxx'));

-> xxxxx부분을 복호화(decoding) 후 실제 code는 아래와 같이 나타납니다.
 
if(isset($_POST['tt_admin']))eval(base64_decode($_POST['tt_admin']));else die('404 Not Found');

-> if문이 사용되었으며, POST방식으로 'tt_admin'값이 오는 경우에만 eval함수로 실행하게끔 되어있습니다.
-> 여기서 넘어오는 tt_admin의 값 역시 base64_encode로 암호화되어져 있어야 함을 알 수 있습니다.

[ 2.2 실제 test ]

-> 명령어 : sar | tail -5
 
[root@cl-main ~]# wget -o /dev/null -O sar_result --post-data=tt_admin=xxxxxxxxxxxxxxxx http://xxx.com/xxx.php
[root@cl-main ~]# cat sar_result
13:10:01          all      0.06      0.00      0.04      0.19     99.71
13:20:01          all      0.03      0.00      0.05      0.16     99.77
13:30:01          all      0.86      0.00      0.16      0.75     98.23
13:40:01          all      0.02      0.00      0.04      0.14     99.81
Average:          all      0.11      0.00      0.12      0.15     99.62

명령어 : tail -5 xxx/logs/access_log

[root@cl-main ~]# wget -o /dev/null -O access_result --post-data=tt_admin=xxxxxxxxxxxxxxxxx \
> http://xxx.com/xxx.php
[root@cl-main ~]# cat access_result
x.x.x.x - - [15/Aug/2010:13:45:46 +0900] "GET xxxxxx HTTP/1.1" 200 4
x.x.x.x - - [15/Aug/2010:13:47:34 +0900] "POST xxxxx HTTP/1.0" 200 360
x.x.x.x - - [15/Aug/2010:13:48:23 +0900] "GET xxxxxx HTTP/1.1" 200 62
x.x.x.x - - [15/Aug/2010:13:48:31 +0900] "POST xxxxx HTTP/1.1" 200 467
x.x.x.x - - [15/Aug/2010:13:49:11 +0900] "POST xxxxx HTTP/1.0" 200 463

[ 2.3 활용방안 ]

-> 웹로그 모니터링       : 각서버별 access,error log를 점검가능합니다. 예)tail,cat 웹로그등
   사용량 모니터링(HDD,CPU,MEM등)   : 각서버별 사용량 상태를 점검가능합니다. 예)sar,vmstat등
   네트워크 모니터링(연결상태,port확인등) : 각서버별 네트워크상태를 점검가능합니다. 예)netstat,ifconfig등
   프로세스 모니터링    : 각서버별 프로세스정보,상태를 점검가능합니다. 예)ps,pstree등
   기타 등

===========================================================
[ 3. 장단점 ]

===========================================================
-> < 장점 >
   1. 1줄의 code로 서버의 여러가지 정보를 확인할 수 있습니다.
   2. agent같은 프로세스를 항시 띄워놓을 필요없으며, 필요시 서버에 요청을 하면 됩니다.
   3. 웹데몬의 권한으로 사용가능한 명령어만 실행 가능합니다.
 
   < 단점 >
   1. web service(PHP사용가능)를 제공하는 서버에서 이용이 가능합니다.
   2. 웹데몬의 권한으로 사용가능한 명령어만 실행 가능합니다.
 
===========================================================
[ 4. 기타 ]

===========================================================
-> 편리함과 보안은 함께하기 쉽지 않으며, 속도 역시 마찬가지입니다.

최소한의 보안을 위해 웹(web)설정에 IP주소기반 인증 정도는 필요할 것으로 보여집니다.

만약, 웹으로 인터페이스 구성시에는 전달된 폼값 채크를하거나 입력받아 넘기는값보다는

정형화된 값을 호출하는 방식이 보안적으로는 좋지않을까 생각됩니다.
  
===========================================================

code : 신호법, 암호, 법전, 약호, 규약

'ETC' 카테고리의 다른 글

Wireshark를 이용하여 Image(GIF) 만들기  (2) 2009.03.24

arrow 트랙백 | 댓글



[PREV] [1] [NEXT]
관리자  |   글쓰기
BLOG main image
분류 전체보기 (27)
Server (4)
Network (3)
Packet Analysis (3)
Security (3)
TroubleShooting (8)
Algorithm (1)
ETC (2)
None (1)
Total :
Today :
Yesterday :
rss
위치로그 : 태그 : 방명록 : 관리자
minSoong-e's Blog is powered by Daum / Designed by plyfly.net