삽질은 나의 힘 | 삽질은 나의 힘
삽질은 나의 힘 위치로그  |  태그  |  미디어로그  |  방명록
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 트랙백 | 댓글



icon [crond] got status 0x007f
TroubleShooting | 2010. 3. 20. 00:26

============= error_log ====================================
] cat /var/log/cron
Mar 17 11:25:01 nweb crond[18376]: (root) MAIL (mailed 122 bytes of output but got status 0x007f )
Mar 17 11:26:01 nweb crond[18394]: (root) CMD (run-parts /etc/cron.1min)
Mar 17 11:26:01 nweb crond[18393]: (root) MAIL (mailed 122 bytes of output but got status 0x007f )
Mar 17 11:27:01 nweb crond[18409]: (root) CMD (run-parts /etc/cron.1min)
Mar 17 11:27:01 nweb crond[18408]: (root) MAIL (mailed 122 bytes of output but got status 0x007f )
Mar 17 11:28:01 nweb crond[18429]: (root) CMD (run-parts /etc/cron.1min)
Mar 17 11:28:01 nweb crond[18428]: (root) MAIL (mailed 122 bytes of output but got status 0x007f )
...
...
============================================================

] man crond
....
....
When executing commands, any output is mailed to  the  owner of the crontab
(or to the user named in the MAILTO environment variable in the crontab, if such exists)

// 명령어가 실행될때 output이 crontab소유자에게 mailing되게 됩니다.
// 또는, crontab 환경변수 MAILTO가 지정되어있는 경우는 지정된 사용자에게 보내집니다.
============================================================
- mail program의 오동작
- /var 파티션(기본적인 sendmail사용 파일이 포함된)에 100%가 차도
  mail발송이 안되므로 위와 유사한 로그가 발생한다고 합니다.
============================================================


arrow 트랙백 | 댓글



icon mod_url 무한루프 오류
TroubleShooting | 2010. 3. 20. 00:24

===========================================================
- 프로젝트 사이트 : http://kldp.net/projects/modurl/
- 무한루프 이슈 : http://kldp.net/projects/modurl/issue/302676
===========================================================

==================== 1. 문제점 =============================
===========================================================
1.[ UTF-8 보내기 설정 on ] 설정시 무한루프, 미설정시 404
===========================================================
<mod_redurl.c 미설정시 404응답>
x.x.x.x - - [10/Mar/2010:10:02:59 +0900] "GET /%ED%95%9C%EA%B8%80.gif HTTP/1.1" 404 283

<mod_redurl.c 설정시 301응답 무한루프>
x.x.x.x - - [10/Mar/2010:10:10:17 +0900] "GET /%ED%95%9C%EA%B8%80.gif HTTP/1.1" 301 309
x.x.x.x - - [10/Mar/2010:10:10:17 +0900] "GET /%ED%95%9C%EA%B8%80.gif HTTP/1.1" 301 309
x.x.x.x - - [10/Mar/2010:10:10:17 +0900] "GET /%ED%95%9C%EA%B8%80.gif HTTP/1.1" 301 309
x.x.x.x - - [10/Mar/2010:10:10:17 +0900] "GET /%ED%95%9C%EA%B8%80.gif HTTP/1.1" 301 309
x.x.x.x - - [10/Mar/2010:10:10:17 +0900] "GET /%ED%95%9C%EA%B8%80.gif HTTP/1.1" 301 309
x.x.x.x - - [10/Mar/2010:10:10:17 +0900] "GET /%ED%95%9C%EA%B8%80.gif HTTP/1.1" 301 309
.............
.............
===========================================================
2.[ UTF-8 보내기 설정 off ]    둘다 200응답
===========================================================
<mod_redurl.c 미설정시 200>
x.x.x.x - - [10/Mar/2010:10:14:13 +0900] "GET /%C7%D1%B1%DB.gif HTTP/1.1" 200 2326

<mod_redurl.c 설정시 200>
x.x.x.x - - [10/Mar/2010:10:17:42 +0900] "GET /%C7%D1%B1%DB.gif HTTP/1.1" 200 2326
===========================================================
==> mod_redurl.c를 사용하는 이유가 utf-8로 보내기 설정이 되어있을때도

정상적으로 한글파일이 보이게끔 하려는 것인데 오동작을 함으로써 무한루프에 빠지게 됩니다.


================ 2. 동작방식 ===============================
===========================================================
mod_redurl.c는 두가지 방식으로 나뉘어져 집니다.
1. mod_spelling 을 수정한 버전(redirect버젼 : 현재 개발중지)
2. 내부에서 직접 변환을 하여 찾는 방식


++ 이전버젼(redirect방식)의 경우(1번)

(1)클라이언트에서 페이지 요청-> (2)URL을 UTF-8로 보냄 -> (3)서버에서 redirect 페이지 안내
-> (4)클라이언트에서 redirect 페이지 요청

위 순서에서 4번에서 redirect된 부분을 다시 UTF-8로 보내버리므로 또 서버에서 redirect 시키고

이것이 반복되다보니 무한 루프에 빠진다고 합니다. (http://kldp.net/projects/modurl/issue/302676)

++ 2번째 방식(내부에서 직접 변환하여 찾음)으로 구동시에는 UTF-8로 URL을 보내도 정상적으로 처리됩니다.
(아래는 해당 로그)

===========================================================
[client x.x.x.x] mod_url configuration: ServerEncoding EUC-KR, ClientEndoding UTF-8
[client x.x.x.x]   Oirg       => /\xed\x95\x9c\xea\xb8\x80.gif (11)
[client x.x.x.x]   Fixed      => /\xc7\xd1\xb1\xdb.gif (9)
[client x.x.x.x]   Check Code => 0
[client x.x.x.x] check_redurl_iconv: iconv convert end   -------------------
[client x.x.x.x] pre finfo.st_mode      => 33188
[client x.x.x.x] pre realpath           => /www/htdocs/\xc7\xd1\xb1\xdb.gif
[client x.x.x.x] pre r->uri             => /\xc7\xd1\xb1\xdb.gif
[client x.x.x.x] pre r->unparsed_uri    => /%C7%D1%B1%DB.gif
[client x.x.x.x] pre r->parsed_uri.path => /\xc7\xd1\xb1\xdb.gif
===========================================================

========== 3. 미치는 영향 ===================================
1. 요청을 받은 아파치 프로세스에 부하가 증가할 수 있습니다.
  (관련하여 log쪽에 파일쓰기로 인한 DISK I/O 부하)

2. 무한루프가 돌다보니 pps가 높아집니다.

3. 이외에도 기타 서버상의 설정과 맞물려 영향을 줄 수 있을 것으로 보입니다.
===========================================================


arrow 트랙백 | 댓글



[PREV] [1][2][3][4][5][6][7][···][9] [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