본문 바로가기

web/웹 해킹 및 보안

OWASP 취약점 정리(1/10) OS injection

 

웹 취약점 종류(OWASP TOP 10)

1. 어떤 상황에서 이 취약점이 발생하는지

2. 어떻게 공격 해야하는지

3. 취약점이 미치는 영향

 

1. OWASP?

Open Web Application Security Project의 약자이다.

OWASP오픈소스 웹 애플리케이션 보안 프로젝트로, 주로 웹에 관한 정보노출,

악성 파일 및 스크립트, 보안 취약점 등을 연구한다.

 

1. Injection (인젝션)

인젝션 취약점은 SQL, OS, LDAP 등에 해당되며 신뢰할 수 없는 데이터를 명령어나 질의문의 일부분으로서 보내질 때 발생하는데, 공격자의 데이터는 개발자가 의도하지 않은 명령을 실행하거나 적절한 권한 없이 데이터에 접근하도록 인터프리터를 속일 수 있습니다.

 

1-1) OS 인젝션 (command injection)

외부 URL 또는 파라미터로 전달이 가능한 DB와 연동된 페이지에 대해여 시스템 명령어 (ls, cat, ifconfig ) 삽입으로 운영체제 명령어 실행 결과를 출력하는 인젝션 종류입니다.

 

1-1-1) command injection 예제 코드


phpcommand 인젝션 예제 코드입니다.

참고 https://www.owasp.org/index.php/Command_Injection


Get 방식으로 파일 이름을 받고 그 파일을 삭제해 주는 기능을 하고 있습니다여기서 system() 함수를 사용하므로 써 command injection 수행이 가능합니다.

 ' ; ' 를 이용해 여러가지 명령어를 system 함수에 주입할 수 있습니다.


 ; 은 여러가지 명령어를 한 줄에 입력 할 때 나누는 것으로 사용됩니다.


EX)



1-1-2) 실습



localhost/command.php?filname=a.php;pwd


system 함수에서 ‘rm 파일명명령어 하나와 ‘pwd’라는 명령어 두개가 실행되고, 반환 값으로 보여지게 됩니다.

 

 

1) ?filename=a.php; ifconfig


2) ?filename=a.php; cat /etc/passwd



3) ?filename=a.php; id


 

1-2) sql injection

Sql injection 이란 ?

DB와 연동된 웹 어플리케이션에서 SQL 질의문에 대한 필터링이 제대로 이루어지지 않을 경우 공격자가 입력이 가능한 폼에 조작된 쿼리를 삽입하여 공격자에게 공개되지 않은 웹 서버의 DB 정보를 열람 또는 조작을 할 수 있는 취약점입니다.


1-2-1) 예제

 

예제 코드

 

게시판 글 수정 사이트 (실제 운영 싸이트가 아님!! 주의)


sql injection example

제목: hacked by xxx ‘--

조작된 쿼리문

update ssg2 set title ‘hacked by xxx ‘-- ‘ nickname=’’ textarea=’’ where id =’’

해석: 모든 ssg2 테이블의 titlehacked by xxx로 변경 해라 (‘ -- 가 주석 처리)

결과 (모든 게시글의 title 값이 수정된다.)



2-2-2) sql injection 예제 2 (union sql injection)

예제 코드


웹 페이지( get 방식으로 글 번호를 입력 받아 해당하는 글 내용 출력)



 

Union sql injection을 통한 디비 긁어오기

union 이란?

두개 이상의 select 문을 결합하는데 사용하는 문법입니다.

자세한 내용은 공부해보시는 걸 추천합니다.


 

(Limit는 순차적으로 증가)

 


 

영향

데이터의 손실 또는 파괴, 책임 추적성 결여 또는 서비스 거부의 결과를 초래할 수 있다. 때때로 인젝션은 호스트를 완전하게 탈취할 수 있다.