2020년 3월 25일 보안정보 스크래핑

2020년 3월 25일 보안정보 스크래핑 3월 25일 보안정보 스크래핑 ==================================================================== + 주요 취약점 - 메일전송 프로토콜을 이용한 원격 명령어 실행 주의 권고 외 1건 1. 메일전송 프로토콜을 이용한 원격 명령어 실행 주의 권고 최근 OpenSMTPD* 취약점이 발견되는 등 메일전송 프로토콜에서 원격 명령어 실행이 가능하여 주의를 권고함 공격자는 취약점을 악용하여 피해를 발생시킬 수 있으므로, 해결방안을 참고하여 조치 필요 - https://www.krcert.or.kr/data/secNoticeView.do?bulletin_writing_sequence=35302 2. Django 제품 SQL Injection 취약점 보안 업데이트 권고 최근 Django*에서 SQL Injection취약점(CVE-2020-9402)을 악용할 수 있는 개념증명코드(Proof of concept, PoC)가 인터넷상에 공개되어 사용자의 보안 업데이트 필요 - https://www.krcert.or.kr/data/secNoticeView.do?bulletin_writing_sequence=35301 ==================================================================== + 취약점 - Apple Safari 취약점 1. Apple Safari 취약점 Apple Safari security bypass CVE-2020-3885 - https://exchange.xforce.ibmcloud.com/vulnerabilities/178339 Apple Safari security bypass CVE-2020-3887 - https://exchange.xforce.ibmcloud.com/vulnerabilities/178338 Apple Safari inform

Django 와 SB Admin을 이용한 Yara GUI Interface 만들기(13)

Django 와 SB Admin을 이용한 Yara GUI Interface 만들기(13)

1.Login 및 Logout 사용

1). Login사용

Django는 기본적으로 로그인 폼을 제공해준다. 따라서 다른 웹프레임워크에서 힘들게 로그인 셋팅을 하는 것을 간단하게 나타내주기 때문에 편리하게 로그인 화면을 작업할수 있게 되었다.

먼저 settings.py에서 아래와 같이 셋팅한다. LOGIN_URL과 SESSION_COOKIE_AGE 및 SESSION_SAVE_EVERY_REQUEST를 셋팅한다. 해당 LOGIN_URL은 login하는 폴더를 말하고 SESSION_COOKIE_AGE는 세션타임아웃을 말한다. SESSION_SAVE_EVERY_REQUEST는 세션을 사용할껀가 묻는 말인데 True로 셋팅하면 세션을 사용할수 있다.

그림1. settings.py 설정

다음으로 login 및 logout에 대하여 urls.py에 설정한다. 보면은 login URL파라미터 접근시 views의 user_login을 호출하고 logout은 logout_view를 호출한다.

그림2. urls.py설정

이제 views.py로 돌아온다.

views.py는 아래 그림처럼 authenticate 모듈에 login 및 logout 클래스를 불러온다. 그리고 login_required를 사용하는데 login_required는 Django에서 각 class에 접근사용시 Login을 요청할수 있다. 따라서 로그인이 되어 있지 않은 URL로 접근되지 않게 설정하는 메소드 이다.

그림3. views.py Login 모듈 추가

이제 views.py에 user_login화면을 추가시킨다. 해당 user_login은 post형식으로 받고 username 및 password를 post를 받아서 변수에 저장한다. 이후 user라는 변수에 username 및 password내용을 저장하고 user내용이 있을시 login함수를 사용하여 로그인을 한다. 이때 정상으로 되면은 sb_admin_dashboard로 리다이렉션한다.

만약 post형식이 아니면 login.html을 보여준다.

그림4.views.py의 user_login class 코드 추가

다음으로 login.html에서 다음을 셋팅한다.

form 태그에 action부분에 {% url 'sb_admin_login' %} 을 넣어서 해당 폼의 username 및 password를 입력 받는데 post방식으로 전송한다.

해당 전송이 성공적으로 이루어지면 위의 user_login class가 실행되어 아이디 및 패스워드가 설정된다.

그림5. login.html설정

이정도만 해도 일단은 로그인 시스템을 다 구축된거지만 여기서 추가적으로 base.html에 해당 사용자를 화면에 나타내보도록 하겠다.

base.html에 side-bar 밑에 아래 코드를 추가한다.

그림6. base.html 사용자 출력

해당 사용자는 {% if user.is_authenticated %}로 사용자가 로그인 되어 있는지 확인한다. 로그인 되어 있으면 User: 뒤의username을 출력한다. 그렇지 않으면 Login화면으로 리다이렉션되게 설정되어 있다. 그리고 endif로 종결되어 있다.

해당 부분을 셋팅하면 아래 그림처럼 사용자가 로그인된 화면을 볼수가 있다.

그림7. 사용자 화면 출력

여기에서 아래 그림처럼 @login_required를 입력한다. 이것은 해당 dashboard접근시에는 login이 필요하다는 의미이다. 로그인이 되어 있지 않을시 로그인이 되지 않으며, login.html로 리다이렉션 된다. 해당 부분을 각 class 함수마다 셋팅하도록 하자.

그림8. login_required 설정

2).Logout 셋팅

로그아웃은 logout 파라미터에 갈시 logout class를 불러오기만 하면 된다. 불러온후 로그인 화면으로 리다이렉션 되면은 되기 때문에 django특성으로 간단하게 만들수 있다.

먼저 아래 그림처럼 base.html에서 dropdown-item에서 Logout 아이템을 찾는다. 처음에 modal로 형식으로 되어 있을수 있다. 여기서 modal로 해도 되고 나는 바로 logout시키기 위해 a 태그를 이용하였다. 그 옆에서 href를 만드는데 sb_admin_logout으로 url를 리다이렉션 시킨다.(modal또한 단순 logout으로 리다이렉션 시키면 된다.)

그림9. base.html 설정 그림10. Logout 셋팅

로그아웃은 아래 그림처럼 logout_view으로 만들고 단순히 logout 함수를 불러오면 끝난다. 로그아웃후 render로 login.html으로 리다이렉션 시키게 설정해두면 된다.

그림11. logout urls.py설정 그림11. logout 셋팅

이상으로 Django 및 sbadmin을 이용한 yara gui만들기를 완성해 보았다. 이뿐만 아니라 다른 솔루션 제작할때에도 위와 같은 방법으로 제작할수가 있다. 물론 sbadmin이 아니라 bootstrap만으로도 제작할수도 있으니 위의 기본적인 바탕으로 원하는 솔루션등을 만들어보면 좋을것 같다.

from http://zerosin13.tistory.com/20 by ccl(A) rewrite - 2020-03-24 13:54:12

댓글

이 블로그의 인기 게시물

Django Rest Api 참고

Elasticsearch-dsl 삽질 복기(1)

django 설치 방법