본문 바로가기

분류 전체보기

(54)
[Java] Tika를 이용한 MimeType 확인 & FilenameUtils로 확장자 추출 Tika로 MimeType 체크 spring에서 파일을 업로드할 시 파일 확장자를 제한하기 위해 MimeType을 체크하려 한다. Tika를 이용하면 파일 확장자가 아닌 파일 내용을 기반으로 판단하기 때문에, 확장자를 변경해도 MimeType을 알아낼 수 있다. 1. Maven을 이용해 Tika 추가 org.apache.tika tika-parsers 1.14 pom.xml에 Tika를 추가한다. 다른 버전을 추가하고 싶으면 링크에서 확인. 2. 업로드 컨트롤러에 코드 구현 public void fileUpload(MultipartFile file) { // ... Input Stream inputStream; try { inputStream = file.getInputStream(); String mi..
[tomcat] 에러 내용 및 버전 정보 삭제 아파치 톰캣에서 web.xml에 에러페이지를 지정해도 원래 에러페이지가 뜨는 경우가 있다. 정보 누출을 막기 위해 간단하게 에러페이지에서 제공하는 정보를 숨겼다. server.xml에 아래 태그를 추가하고 서버를 재시작한다. 설정 값 변경 후 에러정보가 노출되지 않는 걸 확인했다.
[Ubuntu] Ubuntu 16.04에 DNS 설정 ubuntu 16.04는 /etc/resolv.conf 파일을 수정해도 네트워크를 재시작하면 초기화 된다. 변경사항을 시스템에 반영하기 위해서는 다른 파일을 수정해야 한다.(/etc/resolvconf/update.d/libc에서 resolvconf에 대한 설정 확인 가능) /etc/resolvconf/resolv.conf.d 디렉토리 안을 보면 DNS설정을 위한 head와 base 파일이 있다. 우리는 여기에 tail 파일을 추가할 것이다. 추가한 tail 파일에 다음과 같이 nameserver를 입력해준다. resolv 서비스를 재시작한 뒤 /etc/resolv.conf를 확인해보면 변경사항이 반영된 것을 확인할 수 있다.
[Ubuntu] Ubuntu 16.04의 connect: Network is unreachable 오류 VMware에 ubuntu 16.04를 설치한 뒤 네트워크 인터페이스를 확인했더니 제대로 잡히지 않았다. ifconfig -a로 확인해보니, ens33에서 ip주소를 받아오지 못한 상태였다. 이를 해결하기 위해 /etc/network/interfaces 파일에 아래와 같은 내용을 추가했다. eth0은 인터페이스 명을 보고 그에 따라 입력해주면 된다. auto eth0 iface eth0 inet dhcp 네트워크를 재시작하여 ip주소를 받아 온 것을 확인했다.
[Docker] i/o timeout 에러 docker-compose.yml 파일을 이용해 이미지를 생성하려 하자 다음과 같은 오류가 발생했다. $ docker-compose up -d Pulling reverse (nginx:latest)... ERROR: Get https://registry-1.docker.io/v2/: dial tcp: lookup registry-1.docker.io on 10.0.2.3:53: read udp 10.0.2.15:56 335->10.0.2.3:53: i/o timeout DNS 오류라는 내용이 떴는데, 이미 DNS는 KT와 Google로 새로 설정을 해뒀다. 조금 더 검색해보니 도커를 재시작하라는 내용이 나왔다. $ docker-machine restart default $ eval $(docker-mac..
If-None-Match, 412 Status Code, Etag 412 Precondition Failed 대상 자원에 대한 액세스가 거부되었음을 나타낸다. If-Unmodified-Since 또는 If-None-Match 헤더로 정의 된 조건이 충족되지 않을 때, GET 또는 HEAD 이외의 메소드에 대한 조건부 요청에서 발생한다. If-None-Match If-None-Match HTTP 요청 헤더는 요청을 조건부로 만든다. 해당 헤더는 주로 Etag 값으로 이루어진다. 클라이언트가 GET 및 HEAD 메소드로 요청을 하면, 서버는 지정된 것과 일치하는 ETag가 없을 경우 200 OK와 요청된 자원을 다시 보낸다. Etag 값이 일치할 경우 서버는 304 Not Modified 상태 코드만을 발송한다. 304 코드를 받은 클라이언트는 캐쉬에 저장된 자원을 사용한..
[CVE] CVE-2017-12617 실습 1. 환경구성 취약한 환경을 구성하기 위해 Apache-tomcat 9.0을 올리고, readonly 설정을 false로 바꾼다. 2. Webshell 업로드 PUT 메소드를 이용해서 jsp 웹쉘을 올린다. http 상태코드가 201인 것을 확인한다. 3. Webshell 접속 업로드한 웹쉘로 접속해 명령어를 실행한다.
[SQL] Oracle SQL Injection // 버전 : select banner from v$version; // DB 이름 : select global_name from global_name; // 전체 테이블 : select table_name from all_tables; // 현재 사용자 권한 부여된 테이블 : select tname from sys.tab where rownum=1; // 컬럼명 : select * from all_tab_columns where table_name = '테이블명'; // 전체사용자 : SELECT DISTINCT owner FROM all_tables; // 현재사용자 : select user from dual; 검색창 SQL 쿼리 select * from tbl_board where title lik..