최신 취약점 CVE List 크롤링 , 웹 파싱 or 웹 크롤러 만들기 (파이썬) - 1탄

반응형

 

 

최신 취약점 CVE List 크롤링 , 
웹 파싱 or 웹 크롤러 만들기 - 1탄

 

 


 

 

개인적으로 공부할 것이 있어서 취약점을 나타내는 CVE 코드를 긁어와야하는 경우가 생겼다. 다양한 CVE 리스트를 제공하는 회사가 많아서 아무거나 선택을 하면 되었다. CVE 리스트를 긁어오기 위한 페이지로 CVEProject를 선택했다.

 

 

CVE Program

The mission of the CVE® Program is to identify, define, and catalog publicly disclosed cybersecurity vulnerabilities. - CVE Program

github.com

 

한 번 가져오고 땡이 아니어서 실시간으로 업데이트가 되는 내역이 필요했기 때문에 웹 파싱을 하기로 하였으며, 개발자가 아니다보니 아주 코드가 난잡하겠지만 크게 문제가 되지 않는다. 개발을 정식으로 배운게 아니라 취미로 하다보니까 엉망진창일 예정이며, 이력 관리 차원에서 포스팅을 쓴다고 봐주시면 될 것 같다.

 

2018년도 경로에는 다양한 CVE가 존재한다. CVE는 보통 CVE-2018(연도)-xxxxx 로 이루어져 있는데 하나의 폴더에 데이터를 다 넣어두면 꽤나 관리하기 어렵기 때문에 아래와 같이 진행해둔 것 같다. 가져다가 쓰는 입장에서 어떻게 이루어져 있느냐가 중요하진 않다. 

 

 

상기 그림에서 빨간색 상자의 리스트를 긁어와야하는데 아래와 같이 title로 묶여있다. BeautifulSoup을 배우기 전 정규 표현식으로 데이터를 쪼개는 것을 먼저 배웠기 때문에 re.compile을 사용하여 원하는 데이터를 가져오려 한다.

class="js-navigation-open Link--primary" title="1000xxx" data-pjax="

 

보통 숫자 + x로 이루어져 있으며, title과 data-pjax 사이에 존재한다. 정규표현식을 작성해서 친구들을 데려와보자.

title=\"\d+x+\"\sdata-pjax

 

 

위에 내용을 정리해서 코드로 작성하였다. requests 모듈을 사용해서 get으로 정보를 받아오고, 해당 정보 중 title에 CVE code가 들어간 친구들을 가져온다. 그러면 아래 결과처럼 문제 없이 CVE 코드의 Sub 항목을 가져올 수 있다.

 

2018/0xxx 경로, 또한 모든 경로는 CVE-2018-xxxx.json으로 이루어져있다. 그렇기 때문에 좀 더 편하게 작업할 수 있을 것 같았다. 이 친구들만 잘 긁어오면 최종 컨텐츠 경로를 무사히 얻어올 수 있다고 생각했다.

 

 

json 파일의 title은 아래와 같은 문자열로 되어있다. 또한 연도는 4바이트로 고정이지만 뒤에 숫자는 최소 4바이트 이상으로 구성되어있기 때문에 그 이상도 탐지할 수 있는 정규 표현식으로 만들면 끝.

Link--primary" title="CVE-2018-0001.json" data-pjax=

 

아래 정규표현식은 2018로 하드 코딩 하였지만, 실제로는 연도의 변수 값을 받아와 입력할 예정이다. 뒤에 숫자는 최소 4바이트 이상을 탐지할 수 있도록 정규표현식을 구성하여 마무리 한다.

title=\"CVE-2018-\d{4,}\.json"\sdata-pjax

 

잘 표현이 된다. 이제 경로는 연도 + 서브 경로 + json 파일명으로 구성이 되기 때문에 내부 데이터를 가져오는 것은 큰 문제가 없을 것 같다. 이제 json 모듈 사용법을 좀 알고나서 내가 필요한 것들만 가져오도록 하는 코드를 짜봐야겠다.

 

 

반응형
  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유