2018. 7. 13.

[CVE-2017-5638] Apache Struts2 취약점 분석

1. Apache Struts2 취약점 분석
해당 취약점은 JaKarta Multipart 파서를 기반으로 한 파일 업로드를 수행할 때 HTTP Request Header의 Content-Type 을 변조해 원격코드 실행을 가능하게 한다.


1-1) Apache Structs2 란

JAVA EE(Java Platform Enterprise Edition) 웹 애플리케이션을 개발하기 위한 오픈소스 프레임워크이다. 

2. Apache Struts2 취약점 분석 환경 구축

2-1) Java 설치
  • http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

2-2) 설치 후 환경 설정

- 시스템 변수 편집

;%JAVA_HOME%\bin; 추가


- 설치 확인

2-2) Apache Tomcat 설치
  • https://tomcat.apache.org/download-70.cgi

2-3) Tomcat 환경 설정

  • http://www.eclipse.org/downloads/packages/eclipse-ide-java-ee-developers/neon3
이후 이클립스에서 테스트하기 위해, 압축을 풀고 conf 파일의 server.xml 파일을 수정해서 사용 포트를 변경해야 한다. (Port 3개 변경 필요)
bin 폴더에서 startup.bat, shutdown.bat 파일로 서버 기동을 할 수 있다.

2-4) Eclipse 설치
  • http://www.eclipse.org/downloads/packages/eclipse-ide-java-ee-developers/neon3


2-5) Struts2 다운로드
  • http://mvnrepository.com/artifact/org.apache.struts/struts2-rest-showcase/2.3.31


2-6) 이클립스 실행 및 설정

- 이클립스 실행 > Window > Preference > Server > Runtime Environmments > Add > Apache Tomcat v7.0 > browse > 다운로드 한 tomcat 7.0 폴더 선택

- File > Import > war file > next < browse > 설치한 structs2 파일 선택

- Structs 2 우 클릭 > Run As > Run on Server


** 실수로 Navigator 창을 내렸을 때는, windows > show view > navigator 를 클릭

- 톰캣에서 사용하는 포트를 모두 바꿔야 실행이 된다.
- 제대로 되지 않으면 Tomcat 서비스를 중지 시킨 후 다시 실행해본다.

2-7) 아래와 같이 페이지가 뜨는것이 확인된다.


2-8) 공격 코드를 (https://www.exploit-db.com/exploits/41570/) 다운 받고 실행하면 다음과 같이 명령어가 실행되는 것을 볼 수 있다.


3. 취약점 분석



#참고
  • https://blog.rebforpwn.com/index.php/2018/02/02/697/
  • https://blog.rebforpwn.com/index.php/2018/02/02/702/
  • https://m.blog.naver.com/PostView.nhn?blogId=skinfosec2000&logNo=220760726674&proxyReferer=https%3A%2F%2Fwww.google.co.kr%2F

Continue reading

[파이썬] BeautifulSoup 으로 네이버 실시간 검색어 긁어오기

1. 개요
게시판이나 웹 페이지에 있는 데이터를 긁어 오기 위해 사용 할 수 있는 라이브러리에서 최선의 선택은 BeautifulSoup 이다.

** 파이선 버전 3.6 에서는 BeautifulSoup4 를 인스톨해야 된다. 


'''
# 웹 크롤링
- 웹 그롤링을 하려면 HTML과 CSS에 대한 지식이 동반되어야 한다.
- CSS 셀렉터, 자바스크립트 DOM의 이해가 필요하다.
- CSS DOM 셀렉터, jQuery DOM 셀렉터
    클래스 선택자 : 점(.)으로 시작  .class_name
    아이디 선택자 : 샵(#)으로 시작  #id_name
    속성 선택자 : 대괄호([])를 이용  img[title=aaaa]
- 정규표현식 import re 임포트 가능하다.
'''

import requests
from bs4 import BeautifulSoup

# requst.get()을 이용해서  response 객체를 얻어온다.
# 요청 : request
# 응답 : response

response = requests.get("https://www.naver.com/")
assert response.status_code is 200

#print(response.content)
# response에 받아온 정보의 내용을
# BeautifulSoup를 이용해서 DOM으,로 변환다. (DOM = HTML 형식)
# 다시 말해서 BeautifulSoup 객체가 DOM인 것이다.

dom = BeautifulSoup(response.content, "html.parser")
#print(dom)
#DOM 형식으로 변환 - 실제 HTML 문서 형식처럼 바뀐다.
#print((dom.select('span'))[2].text)

search_list = dom.select("div.ah_list span.ah_k")
#print(search_list)
for element in search_list:
    print(element.text)


이처럼 실시간 순위가 리스팅 된다.



소스 보기로 보면 <div class="ah_list 밑에 있는 부분의 <span class="ah_k" 으로 지정된 것을 확인할 수 있다.




Continue reading

2018. 7. 7.

sqllite3 설치 및 이용

#sqlite3 설치 및 환경설정 
- https://sqlite.org/download.html

나는 Command line shell이 필요하기 때문에 OS BIT(64/32) 에 상관없이 위에 표시된 것을 설치했다. 32비트 프로그램을 돌려도 이상없이 잘 실행된다.
압축을 풀고 보면 아래와 같이 프로그램이 존재한다.



아래와 같이 환경설정을 한다.


# sqlite3 사용

sqlite test.db (만들고자하는 데이터베이스 명)으로 db를 만들수 있다.

*  기타 명령어

.table  : 존재하는 테이블 보기
.help : 도움말
.quit : 종료하기
.schema saram : saram 테이블 스키마 보기
.mode column : 컬럼 형태로 정리하여 보여지기 (mysql 처럼)

Continue reading

Popular Posts

Recent Posts

Powered by Blogger.