해킹팀

시큐어코딩편 - (1) 광고메일거부 루틴에 내재된 실수 본문

밝혀진진실

시큐어코딩편 - (1) 광고메일거부 루틴에 내재된 실수

타이거팀 2016. 8. 11. 01:59

 

 

 

해킹팀은 갑->을->병->정으로 꼬리에 꼬리를 물고 하청에 재하청을 주는 SW하청 시스템에 대해서 심각한 보안 위협이 있다고 생각하고 이번 연재 글을 써보고자한다.

  

 

 고객의 수정요구에 월-화-수-목-금-금-금 365일 계속되는 밤샘 야근으로 답한다는 이 하청제도가 정부기관등의 주도로 계속 좋아지곤 있지만 근로자의 처우문제가 좋아졌다는 뜻이지, 저하된 SW 품질이 더 나아진건 아니다. 심각한 보안오류가 시한폭탄처럼 내재된 채로 돌아가는걸 생각하면 그냥 방관하거나 방치해서도 안될 문제라고 보인다. 

 

매일처럼 일어나는 개인정보유출에 이미 내 개인 정보는 북한과 중국 브로커가 다 보유하고있다고 하고,  심지어 개당 0.1원에 판매되는 이 시점에  돈으로 보안장비를 쳐발라서 보안이 어마무시하게 강력하다는 은행권 사이트가 왜 뻥뻥 뚫리는지?  인터파크는 왜 해커가 DB를 통째 들고 가져가는데도 아무도 그걸 모르고있는것인지 마인탐정 네우로의 호기심이 또다시 발동했다.  알맹이를 들여다봐야할 시간이다. 

 


누가 뭐래도 이제는 시큐어코딩이 너무나 중요한 때가 되었다.

 

시큐어코딩이 왜 꼭 필요한지, 덤핑 개발업체에 SW 하청 개발을 맡기면 과연 어떤 참담한 결과가 벌어지는지 말로 하지않겠다. 

여러분의 눈으로 직접 확인하기바란다.  


원고 수준은 쉽게 읽고 이해할수있으며, 다만 내용은 갈수록 더 독해진다. 





첫번째 CASE  "울산M"


 

약 두달전인  2016년 6월 8일 울산M 방송사의 홈페이지를 살펴보는 도중 보통 방문객들이 거의 접근하지않는 최하단에 다음과 같은 메시지가 떴다.

 

 

 


 

 

 

 


울산 M에서 방문객 카운트 증가에 사용하는 데이터베이스의 에러메시지 문장이  울산 M 웹페이지에  노출된 것인데,

 


INSER INTO wb_count_sum( wb_count, wb_date ) values( 1 , '2016-06-08' )

 

Warning: ociexcute():

 

ORA-09150: no privileges on tablespace 'WEB_IDX' in /DATA/WEB_SOURCE/public_html/fsboard/lib/visit.php on line 39

 

 

 

울산 M 웹서버는 웹에서 방문객이 들어오면 web_count_sum 이란 DB 테이블에  카운트 1과 함께, 접근한 날짜 데이터를 를 집어넣는다.

 

그런데, 해당 DB 테이블은 용량이 정해진 용량만 들어가게 되어있으면 용량 부족 에러가 나게된다. 방문객이 늘어나면 용량이 계속 차오르고, 알아서 DB 테이블의 저장공간을 자동으로 늘려주는 세팅이 필요하다. 

 

 

문제는 용량 부족 메시지만 났어야 정답인데,  .php 코드에서 에러메시지 출력을 너무 풀어놔서 너무 많은 알맹이들을 공격자에게 유출하고있었다. 약 3일간이나 이 에러메시지가 계속 고쳐지지않고 떠 있었다. 

 

 

데이터베이스는 ociexcute() 라는 함수를 통해  ORACLE 데이터베이스를 이용하고있다는 사실, 

 게시판 보드의 이름은 fsboard,  제작된 스크립트언어는 php 스크립트이고, 방문객 카운트를 하고, visit.php라는 소스코드가 설치된 디렉토리는 /DATA/WEB_SOURCE 라는 하드 드라이브상의 웹서버 부모 디렉토리 위치까지 상세하게 알려주고있다.  


필자 해킹팀이 생각하기에 이게 아주 심각하다. 비슷한 사례로 작년 폐간된 마이크로소프트웨어잡지 imaso.co.kr 연재건에서 이걸 다시 한번 다루겠다. 

 


원래 웹서버에서 루트 디렉토리의 위치는 아파치 웹서버라면 디폴트로 /public_html 아래에 설치하므로  /fsboard/lib/visit.php 주소는 웹브라우저 주소표시줄에서 보일수도 있다.

 

실제 링크를 마구 임의 조립해서 입력해도 실행권한이 있는 스크립트라면 바로 실행되기도한다.  우연하게도 그 디렉토리에 정확한 명칭의 .hwp 파일이나 .mp4 파일이 있다면 즉시 파일 다운로드도 된다.

 

 

문제가 되는건 물살을 거슬러오르는 연어처럼   ../../ 를  덧붙여서 윗단계로 거슬러 올라가는걸 허용하게 만드는 취약한 세팅이다.  

 

디렉토리 트레버설 취약점이 있는 웹서버에서는 디렉토리 트레버설이 한번 먹히게되면 웹서버에서 최상단 루트라는 민감한 디렉토리까지 순식간에 접근자체가 가능해질수있다. 

 

아파치 웹서버는 httpd.conf 파일에서 노출이 되는 이런 옵션을  바꿔서 세팅하게 권고하고있지만, 귀찮아서 바꾸지않고 그냥 실행시키는 경우도 다반사다. IT 초짜라 몰라서 그런 경우도 있다.

 

 




두번째 CASE  "아시아나"



 

"편지가 왔습니다”


프리메일체커는 한메일을 통해 필자에게 편지가 왔음을 알려주었고, 한통의 메일은 매우 반가웠다. 


누가 보냈을까 궁금하기짝이 없었지만, 로긴 버튼을 누르고 나서 실망감만 들었다. 쓰레기같은 정크스팸메일이 날아오면 보통 다 삭제 버튼부터 누를 것이다.  


하지만, 휴지통 신세를 지게될 스팸 3통은 필자 해킹팀 손에 걸려들면서 거꾸로 해킹의 실마리를 던져주었다.




아래링크는 아시아나가 만들어서 직접 사용했었던  광고 메일에 대한 이메일 수신 거부를 할수있도록 만든 버튼의 링크이다. .

 

http://ac2.asiana.co.kr/image/common/reject1.asp%ee

 

라는 링크를 표시했다. 

 

 

 

 

 

 


 

당시에 asp 스크립트 언어로 개발한것인데,  디렉토리 트레버설 취약점이 있는 버전의 윈도 서버에 이 스크립트를 설치해 돌렸다가 필자 해킹팀에게 딱 걸렸던 것이다. 해킹팀은 해킹을 하려고 맘먹고 시도한게 아니다 .안에 이미 취약점이 내재되어있었으며, 해킹팀은  단순히 맨 끝에 %ee만 덧붙였다.  


그때 화면 캡처를 해놨던걸 16년만에 이제서야 공개한다.

 

 

웹브라우저에서 HTML 소스보기를 해도 원래 고객들에게 보이는 부분은  <%  ...    %>  보다 한참 아래쪽인 "적용되었습니다 감사합니다" 라는 부분만 보이게된다.

 

<%  ...  %>로 감싸안은 부분은 서버사이드 스크립트라고 해서 웹서버에서만 스크립트의 해석 및 실행이 되고 클라이언트에는 단순 실행된 결과값만 돌려주기때문에 원래 절대 보여선 안되는부분이다.  그런데 asp뒤에 유니코드 형식의 %ee를 덧붙인것만을 asp 소스코드와 DB접속암호, 테이블명까지 모두 유출된것이다. SQL인젝션이란 용어가 정립되기도 전에 DB 임의접근및 조작이 가능한 취약점을 노출시킨 위협이다.

 

  

일단 MS-SQL 데이터베이스로 광고 메일 거부를 처리하려면 데이터베이스 접속과 처리기능을 asp 소스코드에 구현해야한다.

 

ADODB로 MS-SQL DB서버에 접속해서 insert나 update등의 처리를 하는데, DB접속이 가능한 아이디-패스워드를 asp 서버사이드 소스코드에 박아놔야 하는 구조적인 문제가 있다.. 

 

 

 

db_open  "asiana",  "selxb" ,  "selxb"

 

이 부분은 asiana 라고 미리 별칭을 만들어서 세팅해준 DB 서버에 접속할떼 아이피/패스워드로 selxb/selxb를 쓴다는 뜻이다.

 

 

DB 접속후에 처리하는쿼리를 보면

 

 

update iclub.tbticms1 set  icms1rje = '*'

where icms1int = email_id

 

 

라는 SQL쿼리문이 나온다.


 

iclub 데이터베이스의 tbticms1 이란 테이블에는 아시아나 고객의 이메일아이디가 저장되어있는곳인데, 이메일에서 광고메일에 대해 이메일 수신거부를 요청하는 고객이 직접 입력한 이메일주소와 기존에 수집해놓은 데이터베이스안의 이메일주소가 동일한지 쿼리문을 통해서 


 where icms1int = email_id  처럼 판단해서 이메일 수신거부를요청한 고갹에게는 icms1rje 필드에 = * 문자를 업데이트한다는 뜻이다.

 

대용량메일을 보낼 일이 있으면 필드값에  * 가 있으면 대상자에서 제외하는 옵트아웃같은 표시를 했다고 보여진다. .



 

윈도 NT로 웹 서버를 운영하는 곳중  .asp가 스크립트 권한만 주어져 있지 않은 상태에서 HTML 파일과 혼용해서 작성한 경우, 단지 .asp 뒤에다 ::$DATA란 키워드를 붙이기만 해도 .asp 소스코드가 누출되는 버그가 있었다. .

 

웹 브라우저로 보고있는 사이트가

http://www.live-apt.co.kr/default.asp 라고 했을때,

http://www.live-apt.co.kr/default.asp::$DATA

 

라고 URL 입력창에 덧붙여주기만 하면 소스가 누출되는 큰 보안위협이었는데, 이 소스누출은 2바이트 문자를 사용하는 언어권의 윈도 NT에서만 발견이 되어, 한국어나 일본어버전의 윈도 NT에선 나타나지만, 영어권 윈도 NT에서는 발생하지 않는다는 특징이 있다. 

 

이렇게 .asp 소스코드가 극명하게 모두 드러나게되는 이유는 서버사이드 메커니즘때문이다.  웹브라우저가 웹서버에게 특정한 URL을 요청하면 웹서버로부터 일련의 데이터 덩어리인 데이터스트림을 받게된다. 데이터스트림에는 서버사이드에서 실행되어야할 코드와 클라이언트 사이드에서 실행될 코드가 구분되어 실행되도록 하는 명령 태그도 함께 포함되어져 받게된다.

 

 <SCRIPT LANGUAGE=VBScript RUNAT=Server>

 

RUNAT=Server 태그를 보면, 서버사이드 코드는 웹 서버에서만 가동되고, 절대로 클라이언트인 웹브라우저에선 실행이 되지않도록 안전장치를 걸어놓아야한다. 그래야 .asp 서버사이드 소스코드를 모두 클라이언트에서 읽거나 실행되지않도록 보호할수 있다.

하지만 .asp 소스코드 내부에서 SQL 쿼리를 위해 필요한 파라미터를 넘겨줄때, 데이터스트림을 저장하는 변수로서 $DATA를 사용하게되면 서버사이드, 클라이언트사이드든간에 넘겨진 모든 데이터스트림이 하나의 변수에 몽땅 받아지게 되면서 소스코드 유출이 일어나게되는것이다. 

 

%ee, %cc는 소스코드가 보호되어야 할 전자상거래 솔루션 개발업체라도 개발 소스가 전부 다 보였기 때문에 정말 심각했다. 


이 소스코드가 훤히 들여다 보이는 한 전자상거래 솔루션 개발업체는 당시 27억 매출을 올렸고, 다음해 목표가 90억매출이었다. 필자 해킹팀도 맘만 먹으면 며칠만에 전자상거래 회사를  차릴수 있을것같다. 







세번째 CASE   "아이러브스쿨"




예전 전성기를 구가하다가 지금은 사라진 아이러브스쿨이란 커뮤니티가 있었다.


2000년대,. 학창시철 초등 동창을 만나려고하는 생각에  한때 너도나도 8백만명이라는 인구가 가입했던 엄청난 규모의 회사였는데, 이 사이트는 해킹이 필요없을 정도로 초 울트라 간단한 아이디어에 DB접속 아이디와 패스워드를 바로 손에 넣었었다.  


해킹기술이고 뭐고 허무하게도 광고메일거부 루틴 개발자가 울트라에디터란 편집툴로 asp 소스코드를 여러번 수정하면서 .bak라는 백업파일이 자동으로 서버 디렉토리에 만들어놓았는데, 이걸 지우지도 않고 그냥 웹서버에 방치플레이를 한 걸 발견했다. 


필자 해킹팀은 개발자들이 많이 쓰는 드림위버라던가 울트라에디터은 편집툴이 코드를 저장할때 .bak를 자동저장 하더란 점에 착안한것 뿐이고, 설마하는 마음에 URL 뒤에 .bak를 덧붙여준게 다였다. 



http://mail.iloveschool.co.kr/insert_nomail.asp.bak 




구글해킹 책에서도 .bak파일을 확장검색으로 검색하는 팁이 소개되고, 최근 나오는 보안서적에도 심심지않게 등장하는 팁이다. 


응용한다면 소스코드가 담긴 폴더를 압축해놓은 파일인 .zip파일도 요런 식으로 다운로드해버릴수 있다고나 할까? 


솔직히 웹서버 관리자가 .inc나 .bak처럼 중요한 확장자는 asp.dll에 해석을 맡기는 인터프리터 세팅을 했다면 전혀 생기지도 않았을터이다. 




DB서버명은 ilsdbserver,  DB접속 아이디는 ils, 패스워드는 한글로 "웹마녀", dnpqaksu 를 사용했었던걸 asp 코드에서 보여준다. 


메일거부에 대해선 nomail 테이블을 사용하는 건데, 방법이 매우 비슷하다.  


일례로 당시 유명한 개발서적인 Taeyo의 asp라는 책 소스코드를 아이디와 패스워드까지 그대로 다  베껴쓰는 철없는 초보 개발자들(?) 때문에 필자 해킹팀은 asp로 만든 사이트를 만나면 항상 Taeyo ASP 책 예제에서 썼던 아이디와 패스워드부터 먼저 쳐보곤했던 웃지못할 에피소드도 있었다. 





insert nomail (m_id, m_e_mail ) values ( "ID', "email_ID")


 

 

 

 

 



당시 아이러브스쿨의 myBook.main 소스코드 일부 


http://mybook.iloveschool.co.kr/mybook/mybook.asp.bak

<!--[if !supportEmptyParas]--> <!--[endif]-->



중간에 "3. 나의 첫사랑:" 이란 아주 달달한(?) 메뉴가 준비되어 있었다. 




<div class=top>

<table border=0 cellpadding=5>

<tr>

<td><img src=http://image.iloveschool.co.kr/COM/dot/path_dot.gif>

<a href=http://<%=application("ILSLOGIN")%>/login/login.asp> HOME ></a> 나의수첩 </td>

</tr>

</table><br></div>

<table width=529 border=0 align=center>

<tr>

<td width=10></td>

<td width=308>

<table border=0 width=265 cellpadding=0 cellspacing=0>

<tr>

<td height=61 colspan=4><a href=http://<%=application("ilsecard")%>/E-card/E-card.asp><img src=http://image.iloveschool.co.kr/sub/my_pocket/card_main/pop_card_title.gif border=0 colspan=3></a></td>

</tr>

<tr>

<td width=20></td>

<td width=1 bgcolor=#b6ccfe></td>

<td width=243>

<table border=0 width=243 cellspacing=0 cellpadding=2>

<tr>

<td bgcolor=#f6f6ef> &nbsp; <a href="http://<%=application("ilsecard")%>/E-card/E-card_select.asp?kind=1">1. 오랜친구에게 </a> </td>

</tr>

<tr>

<td> &nbsp; <a href="http://<%=application("ilsecard")%>/E-card/E-card_select.asp?kind=2">2. 그리운 선생님께 </a> </td>

</tr>

<tr>

<td bgcolor=#f6f6ef> &nbsp; <a href="http://<%=application("ilsecard")%>/E-card/E-card_select.asp?kind=3">3. 나의 첫사랑 </a></td>




<tr>

<td height=88 background=http://image.iloveschool.co.kr/sub/my_pocket/card_main/calendar_back.gif><br><font style=line-height:150%;> &nbsp; 동아리&동호회<br> &nbsp; 행사일정은 여기서<br> &nbsp; 한번에 체크하세요.<br><p align=right valign=bottom><a href=http://<%=application("ilscalendar")%>/calendar/calendar.asp><img src=http://image.iloveschool.co.kr/sub/my_pocket/card_main/more_but.gif border=0 valign=bottom></a></td>

</tr>

<tr>

<td height=19></td>

</tr>

<tr>

<td><a href=http://<%=application("ilsmybook")%>/profile/profile.asp><img src=http://image.iloveschool.co.kr/sub/my_pocket/card_main/profile_title.gif border=0></a></td>

</tr>

<tr>

<td height=88 background=http://image.iloveschool.co.kr/sub/my_pocket/card_main/profile_back.gif><br><font style=line-height:150%;> &nbsp; 회원님의 정보를<br> &nbsp; 관리/수정/추가<br> &nbsp; 하실 수 있습니다.<br><p align=right valign=bottom><a href=http://<%=application("ilsmybook")%>/profile/profile.asp><img src=http://image.iloveschool.co.kr/sub/my_pocket/card_main/more_but.gif border=0 valign=bottom></a></td>






  http://mybook.iloveschool.co.kr/common/islogin.top


<%

Option Explicit

dim svrn, scrn, ret, m_id,m_name, m_e_mail



if (UCase(Request.Cookies("ILS_ID")) = "") then

if Request("SERVER_PORT") <> "80" then

svrn = Request("SERVER_NAME") & ":"

            & Request("SERVER_PORT")

else

svrn = Request("SERVER_NAME")

end if


scrn = Request("SCRIPT_NAME")


ret   ="http://" & svrn & scrn

Response.Redirect "http://" & application("ilswww")

    & "/prelogin/prelogin.asp?returl=" & Server.URLEncode(ret)

else

m_id = Request.Cookies("ILS_ID")

m_name = Request.Cookies("ILS_NAME")

m_e_mail = Request.Cookies("ILS_EMAIL")

end if

%>





채팅 컴포넌트 “mini”의 암호가 어랏?  “iloveschool” 이라구요? 


net.js에는 서버를 결정하는 gid 및 gname같은 변수이외에 쿠키가 어떤방식으로 어떻게 가공되어 사용되고 있는지까지 중요 정보들이 쏟아졌다. 



#include virtual="/common/js/nets.js"



<object id="Mini"

codeBase="http://ilschat4.iloveschool.co.kr/new_kor/Atloader3.cab#version=1,0,0,1"

classid="CLSID:84100261-CB9E-11d4-8657-005004C01C6A" width=0

height=0>

</object>

 

<script language=javascript>

 

if(Mini) {

Mini.FULLPATH="http://ilschat4.iloveschool.co.kr/new_kor/";

}

 

function chattop(){

if(Mini) {

Mini.NETS="<%=Request.cookies("ILS_ID")%>";

Mini.PASS="iloveschool";

Mini.PAGERTOP="";

Mini.LOGIN="USERLINK";

}

}

 

function sendmsg(tid) {

if(Mini) {

Mini.NETS="<%=Request.cookies("ILS_ID")%>";

Mini.PASS="iloveschool";

Mini.SENDMSG="ID;"+tid+";";

Mini.LOGIN="USERLINK";

}

}

 

function openchat(gid, gname, gType){

var server


if(Mini) {

Mini.NETS="<%=Request.cookies("ILS_ID")%>";

Mini.PASS="iloveschool";

switch (gType) {

case 1 :

gid = gid;

break;

case 2 :

gid = 100000 + gid;

break;

case 3 :

gid = 1300000 + gid;

break;

}

server = (gid % 4) + 1

Mini.SIGID=gid;

Mini.SIGNAME=gname;

window.open("http://211.115.213.11"+server+"/Roominformation.htm?id="+gid+"&name="+gname, "채팅", "status=yes, height=500, width=500");

}

}

 









마지막 CASE   "보험회사" 



아래는 예전 한일생명 이란 보험회사에서 필자 해킹팀에게 보내온 메일 링크인데 사실  별 것 없어보인다.








그림에서 보듯이 CGI로 표시가 되는데, 이건 다음 한메일이고, 메일수신거부 버튼 코드는 VB스크립트로 만들어졌고 링크는 아래와 같다. 


첨부한 그림처럼 중간쯤에 [메일수신거부] 버튼이 만들어져 있었다.  



http://www.hanillife.co.kr/goods/insu_mail/mail_cancel2.asp?f_pol_no=80019036



한가지 재미있는건  


asp 소스코드를 제작한 한일생명 직원 개발자에 대한 정보가 이곳에 있는 단순한 개구멍에 의해서 전부 다 까발려졌다는 사실이다.


덕분에 한일생명이 디테일한 문서화가 끝내주는 회사임도 알게되었고, 보험사 영업이 아닌 개발직 직원이 누구신지에 대한 알찬(?) 정보를 얻어본 기회였다. 한일생명은 벌써 이미 오래전에 다른 회사에 인수합병되었다.

 

소스코드의 .bak파일도 지우지않고 서버에 저장해놓는 보험회사에 내가 고객이라니!!!!  짜증을 냈던 씁쓸한 기억이 난다. 


개발자에게 메일로 취약점에 대한 연락은 해준것 같은데 답변은 제대로 받지못한것 으로 기억한다.  


아마 비슷한 부분의 IT 현역으로 뛰고계실듯한데.... 해킹팀은 그래도 이름 가운데 글자 하나만 지우고 다 공개한다. 

 

메일 수신 거부는 mail_200011처럼 달마다 수신거부용 테이블을 만들고있다.


 

 

  

 

한일생명의 메일거부처리 VB스크립트 루틴 


http://www.hanillife.co.kr/goods/insu_mail/mail_cancel2.asp.bak




<%@ LANGUAGE="VBSCRIPT" %>


<!--#included virtual="/comm/connection.asp"-->

<%

f_pol_no = request("f_pol_no")


sql = "select count(*) from gyeyak where f_pol_no='"&f_pol_no&"'"


'response.write(sql)


rs.open sql,conn


yes_no = 0

yes_no = rs(0)

response.write(yes_no)

if yes_no = 1 then

rs.close

sql = "update mail_200011 set email='' where f_pol_no='"&f_pol_no&"'"

conn.begintrans


conn.execute sql


if conn.errors.count = 0 then

conn.committrans

response.write("정상 처리 되었습니다")

response.write("<a href=mailto:hanil@hanillife.co.kr>hanil@hanillife.co.kr</a>")

else

conn.rollbacktrans

response.write("관리자에게 문의 바랍니다")

response.write("<a href=mailto:hanil@hanillife.co.kr>hanil@hanillife.co.kr</a>")

end if


else

response.write("관리자에게 문의 바랍니다")

response.write("<a href=mailto:hanil@hanillife.co.kr>hanil@hanillife.co.kr</a>")

end if



%>

<html>

<head>

<title>한일생명</title>

</head>

</html>






“밖에서 새는 바가지는 안에서도 샌다”는 속담을 믿고, 밀레니엄 보장보험 상품 페이지 asp 링크쪽을 접근해보기로 한다. 

   

gyeyak, gyeyak_gita, na04r, na05r, na06r, na07r - 신계약 테이블이라고 몇 개의 계약관련 중요 DB 테이블이 명시되어 있다. 

 

 


상단에는 제휴사이트 골드뱅크에서 타고들어와 가입했을때의 처리코드까지 깔끔하게 알려주고 있네요.


 

 

 

한일생명 밀레니엄 새희망 보장보험



http://www.hanillife.co.kr/goods/millennium/millennium1.asp.bak





<%@ LANGUAGE="VBSCRIPT" %>

<% 

'**********************************************************************************************

'  프로젝트.

'  한일생명 홈페이지 개발

'  서브시스템.

'  프로그램 이름.

'  millennium1.asp

'  작성자  :  오O재

'  기능.

'  밀레니엄 새희망보험보험 가입을 위한 화면

'  시스템 환경.

'  OS : Microsoft NT Server V4.0 

'  DBMS : Microsoft SQL 7.0 

'  웹서버 : IIS 4.0

'  개발툴 : Visual Studio 6.0

'

'  적용 사이트.

'  한일생명 홈페이지 (http://www.hanillife.co.kr)

'

'  관련 파일 및 DB테이블.

'  gyeyak,gyeyak_gita,na04r,na05r,na06r,na07r - 신계약 테이블

'

'  히스토리.


'  ver1.0.0 2000/09/19 최초생성, 오O재

'

'  설명. '

'  저작권.

'  (주)한일생명 2000

'  Copyright (c) 2000 by Hanil Life Insurance Co., Ltd.

'**********************************************************************************************

dim beenzid

'==== 골드뱅크 ====

session("kind") = trim(request("kind"))

kind = session("kind")

session("beenzid") = trim(request("beenzid"))

beenzid = session("beenzid")

'===================

session("site") = trim(request("site"))

site = session("site")

session("memberid") = trim(request("memberid"))

session("gcd") = trim(request("gcd"))

'response.write(session("site"))

'response.write(session("memberid"))

if site = "goldbank" then

response.write(site & "<br>")

response.write(kind &"<br>")

response.write(beenzid &"<br>")

end if


%>


<html>

<head>

<title>밀레니엄 새희망보험</title>

<meta http-equiv="Content-Type" content="text/html; charset=euc-kr">


<script language="javascript">

//function popup_eleven()

//{

// WinProperty = 'top=10,left=10,toolbar=no,location=no,directories=no,menubar=no,resizable=no,scrollbars=no,width=215,height=420';

// win_open = window.open("eleven_qust.asp", "eleven",WinProperty);

//}


function sendit()

{

document.myform.submit();

}


</script>

<style type="text/css">

<!--

font, td, p    {font-family: 굴림; font-size: 9pt; line-height: 150%}

-->

</style>

</head>

<body bgcolor="#FFFFFF", topmargin ="0", leftmargin="0", marginwidth ="0", marginheight ="0"> 

<a name="a"></a>

<table width="600" border="0" cellpadding="0" cellspacing="0" >

<tr>

<td height=20>&nbsp;</td>

</tr>

<tr>

    <td align="right" colspan="8"> <a href="millennium1.asp"> <img src="/img/button/health1.gif" width="72" height="22" border="0"></a> 

      <a href="millennium2.asp"><img src="/img/button/health2.gif" width="110" height="22" border="0"></a> 

      <a href="millennium8.asp"><img src="/img/button/health3.gif" width="72" height="22" border="0"></a> 

      <a href="millennium7.asp"><img src="/img/button/health4.gif" width="72" height="22" border="0"></a> 

      <a href="millennium9.asp"><img src="/img/button/health5.gif" width="100" height="22" border="0"></a> 

    </td>

</tr>

<tr>

<td align="center">

      

      <table width="600" border="0" cellpadding="0" cellspacing="3">

        <tr> 

          <td colspan="8" height="332" align="center"> 

            <table width="75" border="0" cellspacing="0" cellpadding="0">

              <tr> 

                <td><img src="img/mille_main1.gif" width="203" height="106"></td>

                <td><img src="img/mille_main2.gif" width="193" height="106"></td>

                <td><img src="img/mille_main3.gif" width="204" height="106"></td>

              </tr>

              <tr> 

                <td><img src="img/mille_main4.gif" width="203" height="90"></td>

                <td><img src="img/mille_main5.gif" width="193" height="90"></td>

                <td><img src="img/mille_main6.gif" width="204" height="90"></td>

              </tr>

            </table>

            <br>

            <table border="0" cellpadding="0" cellspacing="0">

              <tr> 

                <td width="17" height="33" bgcolor="#FFF0DF" rowspan="2"><font size="2"><img src="img/button1.gif" width="30" height="30"><br>

                  <br>

                  <br>

                  <br>

                  <br>

                  <br>

                  <br>

                  <br>

                  </font></td>

                <td width="557" height="37" bgcolor="#FFF0DF" rowspan="2">

                  <b><br><font color=#996666>

                  재해에 대한 완벽한 보장</font></b> 

                  <p>추락/화재/익수/중독/차량탑승중 교통재해,비행기,선박,열차에 의한 교통재해시 고액보장<br>                    

                    특정재해사망시 최고 5,000만원 보장                    

                    재해시 수술,치료를 위한 다양한 보장(재해수술비/재해골절치료비/응급치료비 지급) <br>

                    </p>

                </td>

              </tr>

              <tr> </tr>

              <tr bgcolor="#FFFFFF"> 

                <td width="17" height="2">&nbsp;</td>

                <td width="557" height="2">&nbsp;</td>

              </tr>

              <tr> 

                <td width="17" height="64" bgcolor="#EEFFEF" rowspan="2"><font size="2"><img src="img/button2.gif" width="30" height="30"><br>

                  <br>

                  <br>

                  <br>

                  <br>

                  </font></td>

                <td width="557" height="32" bgcolor="#EEFFEF" rowspan="2">

                  <b><font color="#247561">사이버 전용상품으로 

                  전연령 저렴한 단일보험료 및 가입간편</font></b></font>

                  <br><br>

                  月 최저 7,400(日 246원)으로 특정재해장해시 <font color="#FA544F">최고 

                  1억</font> 보장</font> </td>

              </tr>

              <tr> </tr>

              <tr bgcolor="#EEFAFF">

                <td width="17" height="4" bgcolor="#FFFFFF">&nbsp;</td>

                <td width="557" bordercolor="#FFFFFF" height="4" bgcolor="#FFFFFF">&nbsp;</td>

              </tr>

              <tr bgcolor="#EEFAFF"> 

                <td width="17" height="41"><font size="2"><img src="img/button3.gif" width="30" height="30"></font></td>

                <td width="557" bordercolor="#FFFFFF" height="41">

                <b><font color="#2D4197"> 

                   &nbsp;만기시 이미 납입한 보험료의 100% 지급(100%환급형에 한함)</font></b></td>

              </tr>

            </table>

            <a href="millennium2.asp"><br>

            </a><br>

            <br>

            <table width="75" border="0" cellspacing="0" cellpadding="0">

              <tr> 

                <td height="2"> 

                  <div align="center">교통사고 발생건수(인명피해)</div>

                </td>

                <td height="2"> 

                  <div align="center">교통사고 사망자수</div>

                </td>

                <td height="2"> 

                  <div align="center">교통사고사망자 + 부상자</div>

                </td>

              </tr>

              <tr> 

                <td height="27"><img src="img/acc1.gif" width="190" height="100"></td>

                <td height="27"><img src="img/acc2.gif" width="183" height="100"></td>

                <td height="27"><img src="img/acc3.gif" width="177" height="100"></td>

              </tr>

              <tr> 

                <td height="2"> 

                  <div align="center">225만건( 하루 616건)</div>

                </td>

                <td height="2"> 

                  <div align="center">11만명(하루 30명)</div>

                </td>

                <td height="2"> 

                  <div align="center">300만명(하루 822명)</div>

                </td>

              </tr>

            </table>

            <p> <a href="millennium2.asp"><img src="img/mmm.gif" width="156" height="59" border="0"></a></p>

            </td>

        </tr>

        <tr> 

          <td>&nbsp;</td>

        </tr>

        <tr> 

          <td align="center">

          <font color="#336699">무배당 밀레니엄 새희망보험 가입 및 기타 상담관련 문의

            가 있으신 분은 <font color=red>(02)2126-7852~8</font><br>

            <b>한일생명 Cyber마케팅팀</b> 으로 연락주시면 친절히 안내해 드립니다.</font></td>

        </tr>

        <tr> 

          <td>&nbsp;</td>

        </tr>

      </table>

      <table border="0" width="580" cellspacing="0" cellpadding="0">

        <tr> 

          <td align="center"><img border="0" src="img/cs_line.gif" width="580" height="3"><a href="#a"><br>

            <img src="img/top.gif" width="25" height="28" border="0"></a><map name="map5">

              <area shape="rect" coords="0,18,113,27" href="mailto:hanil@hanillife.co.kr">

            </map><img src="img/mail.gif" width="311" height="28" border="0" usemap="#map5"></td>

        </tr>

      </table>

</td>

</tr>

</table>

</body>

</html>


 

 

 

 


 

 시큐어코딩 두번째 시간에는 전문대와 대학의 파워빌더 소스 및 인사 DB 데이터 유출에 관한 기막힌 뒷이야길 다룹니다. 


 

 세번째는 폐간된  imaso 마이크로소프트웨어지에 글을 계획했습니다  시큐어 코딩 (3) 편을 보세요 



 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Comments