반응형

윈도우10 네트워크 공유폴더 안보임 해결

 

 

 


회사에서 윈도우7에서는 잘 접근이 되던 공유폴더가


OS 를 Windows 10 으로 업그레이드 한 후에는 공유폴더를 찾을 수 없는 문제가 발생했습니다.


네트워크에서 바로 조회하면 나오던게 안나오게 되니 


바로 구글에 도움을 요청하여 검색해봤는데 생각보다 나오지 않는 것입니다.


그러던 중 찾은 해결책은 SMB 1.0/CIFS 파일 공유 지원이라는 것이 있었습니다.

 

 

SMB 란 Server Message Block 의 약자인데


몇년전부터 유행하던 랜섬웨어 바이러스를 차단하기 위해 

 

 

윈도우 10에서는 기본적으로 체크가 해제된 것으로 보입니다.


자원을 공유할 수 있도록 개발된 프로토콜인데 

 

 

파일이나, 디렉토리, 프린터 등의 자원을 공유하는데 사용하기 위해 만들어졌습니다.

 

 

그럼 CIFS 는 뭐지?

 

 

Common Internet File System 의 약자를 사용하고 있는

 

 

CIFS 란 SMB 파일 공유 프로토콜의 확장된 버전이라고 보면 됩니다.

 

 

SMB 가 Intel 과 Microsoft 가 개발한 것이라면

 

 

CIFS 는 UNIX 업체들도 참여를 했기에 더욱 범용적으로 사용할 수 있는 프로토콜이라고 볼 수 있겠죠



그럼 우리가 원하는 네트워크의 공유폴더를 접근 할 수 있는 방법은 어떻게 하는지 알아보도록 하겠습니다.

 

 

 

 

1. 제어판 > 프로그램 및 기능 > Windows 기능 켜기/끄기

 



2. SMB 1.0/CIFS 파일 공유 지원 
   SMB 1.0/CIFS 서버 
   SMB 1.0/CIFS 자동 제거 
   SMB 1.0/CIFS 클라이언트 
 위 4개 사항을 전부 체크 

 



3.재부팅

 

 

이렇게 세팅을 하면 네트워크 공유폴더에 접근할 수 있는 폴더가 보이게 됩니다.

 

 

다른 원인으로는 내부망을 사용하고 있지 않은 네트워크를 사용하고 있다던지

 

 

NetBIOS 설정이 사용하지 않는다던지

 

 

다양한 원인이 있을 수 있으니 다방면으로 체크해보시길 바랍니다.

 

 

반응형
블로그 이미지

나남나여

일상 제품리뷰와 맛집/여행/사진을 좋아하고 IT 관련 프로그래밍 초급 & 고급 정보를 공유하는 블로그

,
반응형

 

 

빵집 다운로드 최신버전 무료로 다운받아 사용하세요 ( 사용법 추가 )

 

 

원래 집에서 프로그램을 설치할 때는 알집을 많이 사용하곤 했었는데

 

 

회사에서는 라이센스 문제로 빵집이라는 프로그램과 반디집이라는

 

 

무료 압축 솔루션을 알게되었습니다.

 

 

사실 압축만 잘 풀면 되지 용량이 많거나 무거운 것은 그다지 필요 없거든요

 

 

빵집과 반디집 중 아무거나 사용하면 되는데

 

 

그 중에서 귀여운 빵모양이 있는 빵집을 선택했습니다.

 

 

빵집이 2015년까지는 인터넷에서 쉽게 다운로드 받을 수 있었는데

 

 

어찌된 일인지 어느순간부터는 빵집이 검색에 걸리지 않게 되었습니다ㅠ

 

 

구글링을 열심히 했더니 설치파일을 가지고 있는 사람들이 있어서 받을 수 있었지만

 

 

언제 사라질 지 모르는 이 두려움에 업로드 해놓기로 했습니다.

 

 

 

#빵집 최신버전 다운로드 및 설치

bz4setup.exe
2.94MB

 

 

 

빵집은 설치와 사용이 아주 편하게 되어 있습니다.

 

 

 

 

 

bz4setup.exe 파일을 실행하면 바로 설치할 수 있습니다.

 

 

 

 

개인, 기업, 관광서, 학교, 피씨방 등 기타 모든 곳에서 무료로 사용할 수 있는 빵집!

 

 

빵집은 프리웨어이기에 정품인증서나 제품코드가 필요 없이

 

 

모든 제품이 정품이고 단속 대상도 아닙니다

 

 

진짜 빵집 개발자 양병규님은 재능기부천사 아닐까요^^

 

 

 

 

 

 

다음 > 다음 > 설치를 누르면 샤샤샥 설치가 완료됩니다!

 

 

#빵집 압축하기

 

요즘 압축을 사용할 일은 별로 없지만 한번 끄적여 보겠습니다.

 

 

 

 

1. 빵집을 실행시킨 후 새로압축을 클릭합니다.

 

 

 

 

2. 압축할 파일들을 선택하세요!

 

 

 

 

3. 압축 될 파일명과 경로를 지정합니다.

 

 

 

 

 

4. 압축 완료!

 

 

 

 

#빵집 압축풀기

 

 

 

 

압축 푸는 방법은 더 쉽습니다.

 

 

 

1. 압축 파일을 double click 하여 파일을 엽니다.

 

 

2. 압축 파일 안에 내용이 보이는데 압축풀기를 클릭합니다.

 

 

 

3. 풀어 넣을 경로를 지정 후 압축 풀기를 클릭합니다.

 

 

 

4. Desktop 폴더 안에 압축 파일들이 풀어진 것을 볼 수 있습니다.

 

 

 

 


 

빵집이 무료압축프로그램인데도 불구하고

 

 

알집에서 제공하는 ALZ 확장자의 압축을 풀 수 있어서 사용하기 정말 좋았는데

 

 

업데이트가 되지 않고 있어서 아쉬운 부분이 많이 있습니다.

 

 

고급적인 기능을 사용하는 ( 대용량 파일을 압축하거나 해제하는.. ) 것이 아니라면

 

 

빵집은 참 귀여운 프로그램인것 같습니다

 

 

설치나 사용법에 문의가 있으시면 아는 한도안에서 대답해드리겠습니다^^

 

 

감사합니다.

 

 

bz4setup.exe
2.94MB

 

 

 

마태복음 28장 19~20절

 

그러므로 너희는 가서 모든 민족을 제자로 삼아

아버지와 아들과 성령의 이름으로 세례를 베풀고

내가 너희에게 분부한 모든 것을 가르쳐 지키게 하라

볼지어다

내가 세상 끝날가지 너희와 항상 함께 있으리라 하시니라

 

 

 

시편 1편 1~2절

 

복 있는 사람은 악인들의 꾀를 따르지 아니하며

죄인들의 길에 서지 아니하며

오만한 자들의 자리에 앉지 아니하고

오직 여호와의 율법을 즐거워하여

그의 율법을 주야로 묵상하는 도다

반응형
블로그 이미지

나남나여

일상 제품리뷰와 맛집/여행/사진을 좋아하고 IT 관련 프로그래밍 초급 & 고급 정보를 공유하는 블로그

,
반응형

시스템 운영정보 노출 여부 및 아파치버전 숨기는 설정

 

 

모의해킹 수행 중 자주 나오는 항목 중 하나인

 

시스템 운영정보 노출이 있습니다.

 

시스템 운영 노출이란

 

원치않는 에러페이지가 표시되거나

 

존재하지 않는 디렉토리에 접근 시

 

tomcat 의 버전 정보가 노출 될 수 있습니다.

 

 

 

 

일반적으로 버전정보가 노출되는게 뭐 어때서?

 

라고 생각할 수 있지만

 

 

웹 서비스 사용 시 버전 정보가 노출되거나

 

오류 메세지 등에서 중요한 정보가 노출되어

 

공격자에게 2차공격을 위한 정보가 제공될 가능성이 있기 때문에

 

노출을 막을 수 있다면 막는것이 좋습니다.

 

 

 

 

 

 

tomcat 설정 에러페이지 예시

 

web.xml 을 통한 오류페이지 설정

 

일반적으로 잘 아는 404 에러  500 에러를 표시하지 않는 것은

 

web.xml 에서 처리가 가능합니다.

 

<web-app>

   <error-page>

       <error-code>404</error-code>

       <location>/error404.html</location>

   </error-page>

   <error-page>

       <error-code>500</error-code>

       <location>/error500.html</location>

   </error-page>

 </web-app>

 

 

 

 

 

apache 버전 숨기는 설정 예시

 

 

apache 버전은 응답 내 헤더정보에 포함되어 있습니다.

일반적으로

Server : Apache/2.0.64 (Unix)

이렇게 표시되는데 아래 설정을 변경하겠습니다.

 

 

httpd.conf 파일의 ServerTokens 값 변경

 

변경전 : ServerTokens Full

변경후 : ServerTokens Prod

 

 

결과

변경전 :  Apache/2.0.64 (Unix)

변경후 :  Apache

 

 

 

이상으로 시스템 운영정보 노출 및 아파치버전 숨기는 설정에 대해 알아보았습니다.

 

궁금한 것이 있으면 댓글로 남겨주세요

 

감사합니다.

반응형
블로그 이미지

나남나여

일상 제품리뷰와 맛집/여행/사진을 좋아하고 IT 관련 프로그래밍 초급 & 고급 정보를 공유하는 블로그

,
반응형

 

 

 

디렉토리 목록 노출 취약점 및 해결방법

 

 

모의해킹 수행 중 자주 나오는 항목 중 하나인

 

 

디렉토리 목록 노출이 있습니다.

 

 

디렉토리 목록 노출되는게 무엇인가요?

 

 

아래 그림처럼 예시를 보겠습니다.

 

 

WebServer 에서 일반적으로 보여지는 특정 위치를 입력하면

 

 

아래와 같이 파일을 다운로드 받을 수 있는 화면이 나옵니다.

 

 

 

 

여기서 폴더를 자유자재로 넘나들며

 

 

주요 파일을 다운로드 받을 여지가 있습니다.

 

 

icons 폴더나 images 폴더는 일반적으로 웹서버를 설치하면

 

 

default 로 생성되는 폴더이기 때문에 접근할 수 없도록 별도 처리를 해주어야 합니다.

 

 

 

 

 

 

해결방법

 

 

잘못된 서버 설정으로 인하여 발생하였으니

 

URL 입력 시 노출되지 않도록 처리해야 합니다.

 

 

 

방법1. 웹서버 설정에서 디렉토리 인덱싱 기능 비활성화

 

방법1은 apache 를 예로 들겠습니다.

 

httpd.conf 파일에서 indexes 인자를 제거 합니다.

 

변경전 : Options Indexes FollowSymlinks

변경후 : Options FollowSymlinks

 

변경전 : Options Indexes MultiViews

변경후 : Options MultiViews

 

변경전 : Options Indexes

변경후 : Options

 

 

위의 설정값들은

<Directory : "/app/apache/icons">

</Directory>

 

<Directory : "/app/apache/manual">

</Directory>

 

태그들 안에 있으니 찾아서 변경 후 서버를 재시작하시기 바랍니다.

 

아파치 서버 재시작 방법은 다들 아시죠?

 

 

 

bin 폴더 내

 

중지 : ./apachectl stop

시작 : ./apachectl start

 

 

 

 

 

 

방법2. 유추가능한 디렉토리명 사용 금지

 

icons , manual 외에 css , js , lib, logs 와 같이 일반적으로 많이 사용하는 폴더를 대신하여

 

유추가 어려운 폴더 이름으로 생성하시길 바랍니다.

 

 

 

 

 

이상으로 디렉토리 목록 노출 취약점과 해결방법에 대해 알아보았습니다.

 

궁금하신 것 있으면 댓글로 남겨주세요

 

감사합니다.

 

 

반응형
블로그 이미지

나남나여

일상 제품리뷰와 맛집/여행/사진을 좋아하고 IT 관련 프로그래밍 초급 & 고급 정보를 공유하는 블로그

,
반응형

XSS 방어 방법 ( 크로스사이트스크립팅 )


웹 화면 내 input box 가 있는 곳에 script를 악의적으로 사용하여 정보를 추출할 수 있습니다.




악성 스크립트 


 
"><script>alert(document.cookie)</script>)




위와 같이 입력했을 때 외부인이 쿠키정보를 손쉽게 얻을 수 있습니다.

<> 태그나 () 등의 특수문자를 문자 그대로 인식하지 않도록 처리하여

악의적인 사용을 막을 수 있게 합니다.





처리방법





톰캣 web.xml




  
    XSS
    util.filter.XSSFilter
  
  
    XSS
    /*
  



filter-class : 특수문자를 필터하는 로직이 담긴 내용을 입력

url-pattern : 특정 경로로 유입되는 경우에 필터를 적용 ( /* 을 입력 시 모든 경로에 해당 )









Filter 를 implements 해서 상세구현을 합니다.



XSSFilter.java



 

package util.filter;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;





public class XSSFilter implements Filter {

 @SuppressWarnings("unused")
 private Object filterConfig;

 @Override
 public void init(FilterConfig filterConfig) throws ServletException {
  this.filterConfig = filterConfig;
 }

 @Override
 public void destroy() {
  this.filterConfig = null;
 }

 @Override
 public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
  chain.doFilter(new RequestWrapper((HttpServletRequest) request), response);
 }

}












각 유형에 해당하는 문자를 필터하는 내용입니다.



RequestWrapper.java



 

package util.filter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletRequestWrapper;

public class RequestWrapper extends HttpServletRequestWrapper {

 public RequestWrapper(HttpServletRequest servletRequest){
  super(servletRequest);
 }



 public String[] getParameterValues(String parameter){
  String[] values = super.getParameterValues(parameter);
  
  if(values == null){
   return null;
  }
  
  int count = values.length;
  String[] encodedValues = new String[count];
  for ( int i = 0; i<count; i++){
   encodedValues[i] = cleanXSS(values[i]);
  }
  
  return encodedValues;
 }
 
 public String getParameter(String parameter){
  String value = super.getParameter(parameter);
  if(value == null){
   return null;
  }
  return cleanXSS(value);
 }
 
 public String getHeader(String name){
  String value = super.getHeader(name);
  if(value==null){
   return null;
  }
  return cleanXSS(value);
 }
 
 
 /**
  * 크로스사이트 스크립팅 필터처리
  * @param value
  * @return
  */
 private String cleanXSS(String value){

  value = value.replaceAll("<"                                         , "<");
  value = value.replaceAll(">"                                         , ">");
  value = value.replaceAll("\\("                                       , "(");
  value = value.replaceAll("\\)"                                       , ")");
  value = value.replaceAll("'"                                         , "'");
  value = value.replaceAll("eval\\((.*)\\)"                            , "");
  value = value.replaceAll("[\\\"\\\'][\\s]*javascript:(.*)[\\\"\\\']" , "\"\"");
  value = value.replaceAll("[\\\"\\\'][\\s]*vbscript:(.*)[\\\"\\\']"   , "\"\"");
  value = value.replaceAll("script"                                    , "");
  value = value.replaceAll("onload"                                    , "no_onload");
  value = value.replaceAll("expression"                                , "no_expression");
  value = value.replaceAll("onmouseover"                               , "no_onmouseover");
  value = value.replaceAll("onmouseout"                                , "no_onmouseout");
  value = value.replaceAll("onclick"                                   , "no_onclick");
  value = value.replaceAll("<iframe"                                   , "<iframe");
  value = value.replaceAll("<object"                                   , "<object");
  value = value.replaceAll("<embed"                                    , "<embed");
  value = value.replaceAll("document.cookie"                           , "document.cookie");
  
  
  return value;
 }
 
}




처음에 서술했던 악성 스크립트를 입력했을 때 cookie 정보가 나오지 않는 것을 확인합니다.

반응형
블로그 이미지

나남나여

일상 제품리뷰와 맛집/여행/사진을 좋아하고 IT 관련 프로그래밍 초급 & 고급 정보를 공유하는 블로그

,
반응형

불필요한 메서드 제한


클라이언트에서 GET, POST 이외의 method 로 

작업 요청 시 보안문제가 발생할 수 있으며


PUT, DELETE 등의 method 로 인해 파일 변조 및 

삭제를 당하는 등 악의적인 이용으로 피해가 발생할 수 있습니다.



HTTP Method 란?


 - HTTP 메서드는 서버가 http 요청을 어떻게 처리하는지 지시해주는 필드이며

   서버는 HTTP method 에 Reuqest-URI 에 대해 다른 동작을 수행할 수 있습니다.

   우리가 흔희 아는 GET POST 를 말합니다.


Method 종류



  • GET

 - Request-URI 요청에 필요한 정보를 모두 담는다

 - 재요청이 잦은 경우 유용 ( ex : 새로고침 )



  • POST

 - 요청에 필요한 정보들을 body 필드에 숨긴다.

 - 길이 제한 없으며 정보가 노출되지 않도록 사용한다.

 - Text 및 binary 데이터 전송 가능하다



  • DELETE

 - Request-URI 정보 삭제



  • PUT

 - 요청에 동봉된 정보를 저장한다.



  • OPTIONS

 - Request-URI 통신에 대한 정보 제공

 - 어떤 method 기능을 제공하는지 체크

 - URI 에 대한 기능적인 체크 동작 수행

 - Request-URI 에는 body 필드 정의하지 않아도 된다.



  • HEAD

 - 요청에 대한 응답 body 를 return하지 않고 헤더 정보만 return

 - 요청에 대한 유효성, 접근성을 확인할 때 사용



  • CONNECT

 - SSL tunneling 에 사용되는 method



  • TRACE

 - 클라이언트로부터 수신한 메시지를 응답에 포함시킨다.

 - TRACE 메서드 요청에는 요청 정보를 포함하는 URI 를 사용하면 안된다.








톰캣 web.xml 설정



   
    Protected
    /*
    PUT
    DELETE
    HEAD
    TRACE
    OPTIONS
   
   
    
   
  



  • 각 태그 설명


  1. security-constraint : web-resource-collection 내부에 정의된 방식의 요청을 제한
  2. url-pattern : 특정 디렉토리에 인증(제한)을 걸수 있게 pattern 지정
  3. auth-constraint : 모든 사용자 접근불가
  4. http-method : 인증(제한)할 메서드 지정

제한할 http-method 를 하나도 설정하지 않으면 url-pattern에 해당하는 모든 요청이 제한




아파치 httpd.conf 설정


  • 허용할 method 정의


<Directory />
 <LimitExcept GET POST>
  Order allow, deny
  deny from all
 </LimitExcept>
</Directory>



  • 제한할 method 정의


<Directory />
 <Limit PUT DELETE OPTIONS>
  Order allow,deny
  Allow from all
 </Limit>
</Directory>



Directory 태그를 사용하면 Directory 별로 모두 제한을 걸어줘야 하므로

URL pattern 을 이용하여 일괄적으로 제한하는 방법도 있습니다.



  • Location 을 통한 method 제한


<Location /*>
 <LimitExcept GET POST>
  Order deny,allow
  Deny from all
 </LimitExcept>
</Location>



  • Trace Method 처리 방법


LimitExcept 제한 시 정상적으로 제한되지 않아 TraceEnable off 를 사용합니다.

(https 프로토콜 사용 시 httpd-ssl.conf 파일에도 동일한 설정 필요합니다.)


TraceEnable off






불필요한 메서드 적용 확인 방법



위의 내용을 적용을 한 후 정상적으로 반영됐는지 확인해보는 방법입니다.



  1. cmd 창 오픈
  2. telnet localhost 80
  3. 아무것도 보이지 않는 상태에서 TRACE / HTTP/1.0 입력 후 엔터 두번 
( TRACE , GET , POST 등 http method 값을 넣어주면 각각의 메서드가 허용되는지 확인할 수 있습니다. )





  • 제한 적용 전


HTTP/1.1 403 Forbidden
Date: Thu, 10 Jan 2019 08:31:11 GMT
Server: Apache/2.0.64 (Unix)
Last-Modified: Wed, 19 Dec 2018 11:05:50 GMT
ETag: "35fc89-3c6-57d5aff2a1f80"
Accept-Ranges: bytes
Content-Length: 950
Connection: close
Content-Type: text/html




  • 제한 적용 후


HTTP/1.1 200 OK
Date: Thu, 10 Jan 2019 08:32:05 GMT
Server: Apache/2.0.64 (Unix)
Last-Modified: Wed, 19 Dec 2018 11:03:29 GMT
ETag: "35fca1-2b-53d2df2c3b260"
Accept-Ranges: bytes
Content-Length: 42
Connection: close
Content-Type: text/html


반응형
블로그 이미지

나남나여

일상 제품리뷰와 맛집/여행/사진을 좋아하고 IT 관련 프로그래밍 초급 & 고급 정보를 공유하는 블로그

,
반응형