스마트시대

Web security -2 본문

보안/kali-linux, Metasploitable

Web security -2

스마트시대 2021. 8. 19. 22:03
728x90

1. SESSION MANAGEMENT

  • Session Management에 대한 절차를 설명한 그림이다.

 

  • 일반적인 환경에서는 client가 스위치를 경유해 Server로만 패킷을 보내지 Attacker에게는 패킷을 보내지 않는다. 이것은 SW가 가지고 있는 forwarding과 filitering의 역할이다.

 

  • 하지만 Vmware에서는 물리적인 hub까지는 아니지만 논리적인 hub기능을 하는 가상의 장치가 있어 가상 머신 간 네트워크는 hub경유로 넘어가므로 client에서 Server 그리고 Attacker에게도 패킷이 넘어가버린다.



  • winxp에서 한 유저로 로그인을 하고



  • BT5_G_R3의 Wireshark에서 클라이언트에서 서버로의 패킷을 찾아 follow TCP Stream을 클릭한다.



  • 여기서 Cookie정보를 복사해둔다.



  • 트랩을 잡아둔 상태에서 복사해둔 cookie정보를 여기에 붙여넣기하면



  • 공격자 서버에서 똑 같은 계정으로 로그인할 수 있는 것을 알 수 있다. 이것을 session hijacking(세션 훔치기)라고 한다.



  • 필터기능을 이용하여 언제든지 이용이 가능하다.



  • 다음은 XSS에 대한 실습이다. 편의상 Winxp와 BT5_G_R3서버의 프록시 서버는 꺼두고 게시판에서 상단과 같은 스크립트를 작성한다.



  • 글이 작성되고 글을 클릭해보면 상단과 같은 xss메시지가 뜨는 것을 확인할 수 있다.



  • 같은 방식으로 스크립트를 입력하고 



  • 글을 클릭해보면 이번에는 세션 정보가 출력된 것을 확인할 수 있다.



  • 공격자 서버에서 apache2를 실행하고

 

  • 로컬 호스트가 동작하는 것을 확인한다.

 

  • /var/www 디렉토리로 이동 후 vi getcookie.php에서 상단과 같이 입력해주고

 

  • firefox에서 192.168.1.20을 허용해준 후 게시판에 상단과 같은 스크립트를 입력한다.

 

 

  • 그러면 winxp에서 서버 웹사이트에 접근할 때 마다 이렇게 cookie정보가 출력되는 것을 확인할 수 있다.

 

 

  • 하지만 이와 같은 방식은 윈도우 창이 추가로 하나 더 생성되기 때문에 일반 사용자도 금방 알아차릴 것이다. 그러므로 상단과 같은 스크립트를 작성하면

 

  • 추가 윈도우 창도 생성되지 않고 세션 정보도 출력할 수 있다.

 

 

  • 하지만 이 방법 역시 그림을 오른쪽 클릭 -> 등록 정보에서 공격자에 대한 정보를 확인할 수 있다.

 

 

  • 공격자 게시판에서 상단과 같은 스크립트를 작성하고 

 

 

  • 확인해보면 일반 게시글 같이 보이며 세션 정보도 훔쳐올 수 있다

 

2. SQL Injection 실습

  • 배치를 꼭 실행한 후에 localhost/WebGoat/attack에 webgoat으로 로그인한다.

 

 

  • Injection Flaws에서 Numeric SQL Injection을 선택한다.

 

 

  • Acount Number: 101 or 1=1로 모든 테이블을 조회할 수 있다. 101 OR 102로도 참조할 수 있다.

 

 

  • String SQL Injection에서 실습시에는 last name으로 조회를 함으로 정수가 아닌 문자열로 정의해야 한다. 그러므로 smith’or’1’=’1라고 정의하면 전 테이블을 참조할 수 있다.

 

 

  • String SQL Injection에서 로그인을 시도하는 창으로 이동한다. 거기서 패스워드를 입력할 수 있는 수가 8개 문자뿐이다. 그러므로 패스워드에 1’or’1’=’1까지 작성하고 paros에서 trap을 잡은 상태에서 HTML Encoding으로 변환되어 있는 부분에 모자란 부분인 %271을 추가로 쓴다.

 

 

  • Database Backdoors에서는 User ID를 적고 Salary항목을 임의의 숫자로 바꾸는 실습이다. 101;로 SQL을 완결시키고 update, set, where절로 salay의 숫자를 바꿔줄 수 있다.

 

 

  • 이와 같은 방법으로 ID, PW에 1’or’1’=’1입력하면 상단과 같이 로그인이 되는 것을 확인할 수 있다. 또 다른 방법으로는 ID : nuno’--PW:--라고 입력하기도 한다.

 

  • 상단에는 조건이 4개가 있고 그 중간에 있는 and가 우선순위가 가장 높다. 먼저 조건2(True) and 조건 3(False)가 먼저 연산이 되고 이 값은 False이다. 다음은 조건1(False) or False의 경우 False이다. 마지막으로 False or 조건4(True) 같은 경우는 Ture가 된다. 그러므로 where true가 남게되어 이 연산이 처리되는 구조이다.

 

  • ID, PW가 잘못 입력되었을 때 평소와 같은 페이지를 표시할 수  없다는 표시에서 오른쪽과 같은 오류 메시지를 확인하기 위해 인터넷 옵션에서 HTTP 오류 메시지 표시의 체크를 해제한다.



  • ID, PW등의 정보를 입력하게 되면 상단과 같은 쿼리가 전달되게 된다.



  • Windows2000의 인터넷 정보 서비스에서 webhack을 중지하고 camel을 시작해준다.

 

  • 상단에서 실습했던 방법으로 로그인을 시도해 관리자 아이디가 admin인 것을 확인한 후 



 

  • 로그인창에서 패스워드를 변경하는 방법은 ID에 admin입력하고 띄워쓰기가 적용이 안되므로 update, set, where절 중간중간에%20의 띄워쓰기를 넣어주게 되면 바뀐 패스워드로 관리자 로그인이 가능하게 된 것을 확인할 수 있다

3. 트러블 슈팅

 

 

 

 

  • 웹서버 설정의 BT5_G_R3 서버에서 IP주소를 설정하고 네트워크를 재시작하면 상단과 같은 에러가 뜨는 경우가 있다.

 

  • 그럴 경우 상단 커멘드를 입력하고 서버를 재시작해준다.

 

 

  • SESSION MANAGEMENT의 xss실습에서 tail -5f /tmp/cookie.txt가 출력이 잘 되지 않았는데 winxp에서도 역시 팝업을 허용해줘야한다.

 

728x90
반응형

'보안 > kali-linux, Metasploitable' 카테고리의 다른 글

Web security -4  (0) 2021.08.19
Web security -3  (0) 2021.08.19
Web security -1  (0) 2021.08.19
Kali-Linux,Metasploitable  (0) 2021.06.24
Comments