ASP를 통해 믿거 나 말거나, 웹 서버를 쉽게 해킹하거나 서버에서 파일을 훔치거나 웹 데이터베이스 및 기타 시스템의 사용자 암호를 캡처하거나 시스템이 손상 될 때까지 서버에서 파일을 악의적으로 삭제할 수 있습니다. 그것은 감각적이며 실제로이 기사는이 ASP의 허점을 하나씩 드러 낼 것입니다.
이전 기사에서는 ADO 데이터베이스에 액세스 할 때 페이지를 표시하는 방법에 중점을 두었습니다 Pagesize에 대한 값. int (rs.recordcount/pgsz*-1)*-1과 같은 번거로운 공식을 사용할 필요없이 총 페이지 수를 자동으로 얻습니다. 이 프로그램의 단점을 저에게 열렬히 지적 해 주신이 친구에게 감사의 말을 전합니다. 페이지, 당시에는 PageCount가 페이지 수를 올바르게 얻을 수 있는지 확신 할 수 없으므로이 공식을 작성하는 것이 게으른 것입니다 시도해보세요. 저의 게으른 저에게서 배우지 마십시오.
최근에 Chinaasp의 BBS 문제에 대해 논의했을 때 많은 친구들이 ASP의 일부 보안 문제에 대해 많이 알지 못하고 가장 일반적인 ASP :: $ Data Display Source Code를 해결하는 방법조차 모릅니다. , 나는 여기에 매우 필요하다고 생각합니다. 나는 모든 친구들 에게이 문제에 초점을 맞출 것입니다. 웹 마스터에게 중요한 ASP의 보안 문제.
:: $ 데이터 취약성이 발견되고 발표 된 다음날, 나는 그 당시 ASP를 사용한 중국의 대부분의 사이트를 감지했으며, 그 중 99%는 그날 소스 코드가 보이는 위의 문제를 겪었습니다 , 소스 코드가 표시되는 것과 같은 문제가있었습니다. 소스 코드를 보는 것은 큰 문제가 아니라고 생각할 수도 있지만 웹 마스터로서 그렇게 생각하면 그렇게 잘못됩니다. 예를 들어, ASP 프로그래머가 사이트의 로그인 비밀번호를 ASP에 직접 작성하면 소스 코드가 발견되면 다른 방법으로는이 방법을 사용하여 수수료가되기 위해 쉽게 입력 할 수 있습니다. 무료. 웹 사이트의 회원 (노출하지 마십시오!). 많은 데이터베이스 연결 사용자 이름과 비밀번호는 한 번 발견되면 데이터베이스가 원격 액세스를 허용하고 강화되지 않으면 매우 위험합니다. ASP와 함께 개발 된 일부 BBS 프로그램에서는 AccessMDB 라이브러리가 종종 MDB 라이브러리로 알려진 경우 데이터베이스에 포함 된 암호가 추가로 다운로드 될 수 있습니다. 비밀번호를 얻는 사람이 의도적으로 악의적 인 손상을 저지르는 경우 매우 위험합니다. 그는 BBS의 모든 게시물을 삭제하기 위해 관리자로 로그인하면됩니다. 이는 질식하기에 충분합니다. 다음은 지금까지 발견 된 몇 가지 취약점을 목록에 있습니다. 브라우저 주소 표시 줄에서 ASP 파일 이름이 다운로드됩니다. IIS3는 여전히 IIS3을 사용하는 경우 테스트해야합니다.
2. IIS2, IIS3 및 IIS4의 잘 알려진 취약점은 IE의 View 소스 또는 NetScape를 사용하여 ASP 파일에 직접 액세스하여 ASP 코드를 쉽게 볼 수 있습니다. Win98+PWS4에는이 취약점이 없습니다.
이 끔찍한 허점의 원인은 무엇입니까? 근본 원인은 WindowsNT에 고유 한 파일 시스템이 괴물을 만들고 있기 때문입니다. 상식이있는 사람은 NT가 FAT와 완전히 다른 파일 시스템을 제공한다는 것을 알고 있습니다. NTFS, NTFS, 새로운 기술 파일 시스템이라는 기술로 NT는 보안 메커니즘이 더 높지만 두통이 많이 발생했기 때문입니다. NTFS는 파일에 포함 된 여러 데이터 스트림을 지원하고 모든 컨텐츠를 포함하는이 기본 데이터 스트림을 데이터라고 알 수 없으므로 브라우저는 NTFS 시스템에 직접 액세스하고 파일의 스크립팅 프로그램을 쉽게 캡처 할 수 있습니다. 그러나 :: $ data의 직접적인 이유는 파일 이름을 구문 분석 할 때 IIS가 파일 이름을 잘 표준화하지 못하는 문제가 있기 때문입니다.
이 문제를 어떻게 해결할 수 있습니까? 여러 가지 방법이 있습니다.
a. .ASP 파일을 읽을 수없는 디렉토리 설정 (ASP는 여전히 실행할 수 있음)을 설정하여 HTML, CSS 및 기타 파일을이 디렉토리에 배치 할 수 없으며 그렇지 않으면 탐색되지 않습니다.
b. 설치 Microsoft가 제공 한 패치 설치는 다음과 같습니다 (시스템에 대해 다른 패치가 있습니다).
이 패치는 IIS3, 인텔 플랫폼 용입니다
ftp.microsoft.com/bussys/iis/iis
-public/fixes/cht/security/iis3-datafix/iis3fixi.exe
이 패치는 IIS3, 인텔 플랫폼 용입니다
ftp.microsoft.com/bussys/iis/iis-public/fixes/cht/security/iis3-datafix/iis3fixa.exe
이 패치는 IIS4, Alpha 플랫폼 용입니다
ftp.microsoft.com/bussys/iis/iis-public/fixes/cht/security/iis4-datafix/iis4fixi.exe
이 패치는 IIS4, Alpha 플랫폼 용입니다
ftp.microsoft.com/bussys/iis/iis-public/fixes/cht/security/iis4-datafix/iis4fixa.exe
c. 이것은 서버에 IE4.01SP1을 설치하는 것이 좋습니다.
d. 저자의 개인적인 의견을 유지하면서 NT를 사용하는 대신 영어 버전을 설치하십시오. 중국어.
3. ASP의 무료 홈페이지 공간 및 가상 호스팅 서비스를 지원하는 서버가 직면 한 문제
1. 서버의 ASP 코드는 ASP 권한이있는 다른 사람들이 불법적으로 얻을 수 있습니다.
매우 간단한 예를 들어 Microsoft가 제공하는 ASP1.0 루틴에는 다른 .asp 파일의 소스 코드를 보는 데 특별히 사용되는 .asp 파일이 있습니다. 누군가가 서버에 대한 예방 조치 없이이 프로그램을 서버에 업로드하면 다른 사람들의 프로그램을 쉽게 볼 수 있습니다.
예를 들어:
code.asp? source =/directory/file.asp
2. Access MDB 데이터베이스는 일반적으로 ASP 프로그램에서 사용하는 데이터베이스를 제공하는 무료 홈페이지 서버에서 DSN을 설정하는 것이 불가능합니다. MDB는 멀리 떨어져 있습니다. 최종 데이터베이스의 위치는 Issue 14에서 언급 한 DSN-Less 방법을 사용하여 ASP에 직접 지정됩니다.이 방법은 다음과 같습니다.
< %connstr = dbq =+server.mapath (database/source.mdb)+; defaultdir =; driver = {microsoft access driver (*.mdb)}}; driver = 25; fil = ms access; implicitcommitsync = 예; maxBuffersize = 512; maxScanrows = 8; pageTimeout = 5; 스레드 = 3; usercommitsync = 예;%>
앞에서 언급 했듯이이 경우 MDB 라이브러리는 다른 사람이 다운로드하여 암호가 유출됩니다.
따라서 웹 마스터로서 Code.asp와 같은 프로그램을 엄격히 금지하기 위해 특정 조치를 취해야합니다 (수행하기 어려워 보이지만 기능 코드는 정기적으로 검색 될 수 있음) MDB의 다운로드를 제한합니다.
3. 강력한 FileSystemObject 구성 요소의 위협
IIS3 및 IIS4 ASPS의 파일 작업은 텍스트 파일의 읽기 및 쓰기 디렉토리 작업, 파일 이름 변경 및 삭제 등을 포함하여 FileSystemObject를 통해 구현할 수 있지만이 강력한 기능은 매우 위험한 백도어를 남깁니다. FileSystemoBjet은 지방 파티션의 모든 파일을 조작 할 수 있습니다. 권한이 제대로 설정되지 않더라도 조심하지 않으면 재앙을 겪을 수도 있습니다. 불행히도, 많은 웹 마스터는 웹 서버를 실행하고 NTF에 대한 권한을 거의 설정하지 않는다는 것을 알고있는 반면, NT 디렉토리 권한의 기본 설정은 끔찍하게 낮습니다. 따라서 웹 마스터 인 경우 저자는 서버 설정에 세심한주의를 기울이고 NTFS 파티션에서 웹 디렉토리를 작성하는 것이 좋습니다 관리자 그룹은 일반적으로 읽기 및 변경 권한이있는 한 충분합니다.
4. 과거에 ASP 응용 프로그램이 직면 할 수있는 공격은 인터넷에서 CGI가 작성한 많은 메시지 책이나 BBS가 고객이 입력 한 메시지를 변수로 변경했습니다.
HTML 파일에서 클라이언트가 입력 한 텍스트를 HTML 파일에 표시 해야하는 경우 HTML 표준을 준수해야하며 CGI 프로그램에는 일반적으로 특정 HTML 언어가 포함되어 있어야합니다. 클라이언트가 컨텐츠를 입력하고 HTML 파일을 삽입하면 다음과 같은 동시에 헤드 및 테일 HTML 문에 삽입됩니다.
<font> 클라이언트가 입력 한 변수 </font> 그러나 전후의 HTML이 화면에 표시되면 많은 일을 할 수 있습니다.
입력 한 경우 :
< /font> HTML 표준을 준수하는 명령문 전후에 <font>는 화면 CGI의 HTML 문에 사용됩니다. HTML 파일에 삽입되는 것은 다음과 같습니다.
<font> < /font> HTML 표준을 준수하는 문장 <font> < /font>이 기능으로 인해 JavaScript 악성 루프를 작성하는 것은 매우 쉽습니다. 입력 상자에 입력하십시오.
<a href = url onmouseover = while (1) {window.close ( '/')}}> 또는 <a herf = url onmousever = while (ture) {window.close ( '/')}> 그러면 기타를 만들 수 있습니다. 메시지를 본 고객의 브라우저는 죽은 루프로 인해 죽었다. ASP가 개발 한 프로그램 에도이 문제가 발생할 수 있으므로 ASP에서 유사한 프로그램을 작성할 때 고객의 입력을 판단하고 모든 HTML 및 JavaScript 문을 차단하는 프로그램을 작성하는 등 이러한 작업에주의해야합니다.
이 문제를 읽은 후에는 충격을 받으면 기존 웹 사이트 또는 ASP 프로그램을 통해 위의 취약점이 있는지 확인해야합니다. 기사에 언급 된 취약점을 이해하고 충분한 대책이 있다면 축하하는 동안 웹 사이트 및 ASP 프로그램을 자주 확인해야합니다 우리가 모르는 몇 가지 취약점을 사용하여 공격합니다. 마지막 으로이 기사에서 논의 된 ASP 보안 문제에 대한 고유 한 통찰력이 있거나 취약점에 대한 새로운 발견이 있으면 논의하기 위해 저에게 편지를 보내고 싶습니다.