[웹해킹] 파일업로드 취약점 방어
Posted by Albert 3688Day 23Hour 40Min 3Sec ago [2015-03-16]
![]() [웹해킹] 파일업로드 취약점 방어 처음부터 asp 확장자를 허용하지 않으면 앞 블로그 상황은 해결(?)되는 것 같다. asp에 구동되는 웹쉘의 확장자는 asp 뿐일까? 결과적으로 asp에서 웹 쉘이 실행가능한 확장자는 asp만이 아니다. ![]() 웰쉘 실행가능 확장자는 아래와 같다.
jsp를 보면 컨테이너처럼 묶어서 실행한다. 즉 index.html, view.jsp, login.htm 식으로 작성된 파일을 묶어서 index.war로 지정하는 것이다. 그래서 war도 웹 쉘 실행가능 확장자에 속한다. ◎ 웹쉘을 업로드 못하게 만드는 방법은 3가지가 있다. (웹쉘 체크 로직 3가지) 1. 확장자 체크 침입하는 블랙리스트는 우회방법이 많기에 화이트리스트로 작성된다. 이는 다음 글인 [웹해킹]화이트리스트 보안코드 ASP작성에서 기술하였다. 2. content type 체크 어플리케이션, 이미지파일 같은 타입을 언어로 체크해서 받는 것이다. 하지만 이것은 클라이언트가 판단한다. 그 말은 우회가능하다는 뜻이다. 3. ;, %00, %zz (특수문자 필터링) cmd.jpg;asp 같은 방식으로 ;로 문장이 끝난 것으로 인식하기 떄문에 서버는 업로드된 파일을 jpg로 생각한다. 실제로는 asp파일이기 때문에 웹쉘 실행이 가능해진다. 그러므로 특수문자 ; 같은 경우는 필터링이 되어야 한다. ◎ 파일업로드 대응방안은 아래와 같다. 1. 업로드 폴더의 스크립트 실행 권한을 제거 2. 화이트리스트 방식 허용 ( 이것만 잘해도 완벽하다고 할 수 있다.) 3. 파일이름을 난수화 하여 저장 ( 우리나라에서 많이 하는 것이다. ) cmd.asp를 업로드하면 서버에 30dga47w2fasf 식으로 저장된다. 다운을 받을 때는 원래 이름으로 되돌려서 다운받게 한다. 서버에 저장될 땐 다른 이름이라서 앞에 예를든 파일업로드 어택이 통할 수 없다. (확장자가 없어서 웹쉘 실행자체가 안된다.) ex> 제로보드,그누보드 4. 확장자를 강제로 변경시켜 저장 ( 우리나라에서 많이 하는 것이다. ) cmd.asp -> cmd.xaspx 식으로 바꿔서 사용불가하게 만든다. 5. Database에 저장 박용운선생님의 실무 경험을 통한 데이터베이스를 이용한 방어방법으로 데이터 베이스에 삽입을 하면(읽고 쓰는 속도도 빠르기 때문에 효율적) 물리적으로 존재하지 않기 때문에 좋은 방어가 된다. 6. 물리적인 분류 ▷ 아파치환경에서는 .htaccess 파일을 이용하여 (php) AddType application/x-httpd-php abc php txt i2sec 식의 추가가 가능하다. 출처 : i2sec [출처] [웹해킹][File Upload] 파일업로드 취약점 방어|작성자 은기 |