커맨드인잭션 공격

커맨드 인잭션 공격

  • 웹을 통해 시스템명령어(커맨드)를 실행하는 공격
  • 웹 내부에서 시스템 명령어를 실행하는 경우, 개발자가 입력값을 제대로 검사하지 않고 그대로 시스템에 전달하면 해커가 명령어 맘대로 날릴 수 있음

  • 예시
    • ip ping -> 서버 응답
    • ; cat /etc/passwd
      • 해커가 리눅스의 사용자 목록 확인 가능
    • Security : Low
      • shell exec(ping -c 4 XXX) 로 바로 명령어 실행
        • ping -c 4;ls 시스템 디렉토리 리스트까지 깔 수 있음
      • ;id 현재 어떤 사용자 권한으로 실행되는지 알수있음
    • Security : Medium
      • ;id : ping -c 4 id 로 실행됨
      • & cat /etc/passwd 방어 안됨
    • Security : High
      • |id
  • 커맨드인젝션공격대응
    • 가장 좋은 방법 : 개발자의 의도에 맞는 입력값이 들어왔는지 확인하는 작업이 있으면 됨

CSRF 공격

  • Cross Site Request Forgery
    • 사이트간 요청 위조
    • 사용자들이 링크를 누르게하고 링크를 누르면 사용자 모르게 어떤 기능을 실행함(피싱)
    • 주로 패스워드를 변경하는데 사용
    • 피싱이란?
      • 이메일이나 게시판을 이용해서 마치 은행이나 대기업직원인척하면서 낚는 기법
    • 1080만명의 개인정보가 털린 옥션 해킹사건에 사용됨
  • 단계
      1. 사용자가 사이트에 접속, 로그인
      1. 로그인 되어있는동안 해커가 이메일을 보내서 링크를 클릭하도록 피싱
      1. 사용자가 클릭하면 이미 로그인되어있는 사이트의 비밀번호를 해커가 임의로 변경
        • 필요조건 : request header 의 session cookie 값을 알아야하므로 이미 로그인 되어있어야함
      1. 해커는 변경된 패스워드로 접속
  • Security : Low
    • request param 으로 다 보임
    • cp csrf.html /opt/lampp/htdocs/ -> 여기에 넣어두면 웹으로 접근 가능
    • 피싱 이메일을 통해 csrf.html 전달
  • Security : Medium
    • HTTP Referer 어떤 경로로부터 요청되었는지 알려주는 헤더를 확인함
    • 단점
      • csrf 공격이 해커사이트가 아닌 웹서버 자체에서 실행된다면?
      • eregi() : 앞 문자열이 뒤 문자열에 포함되는지 확인하는 함수..
        • 해커사이트 url 에 localhost 만 추가하면 referer에 localhost 가 포함되면서 공격 성공함
        • 단순히 서버주소 포함이 아니라 정확히 일치하는지 확인해야함
  • Security : High
    • request param 에 요청시마다 랜덤으로 바뀌는 csrf 토큰(user_token) 같이 넘김
    • 단점
      • 여전히 user_token 을 뽑아내서 해킹 가능 == Cross Site Scripting 과 CSRF 공격을 조합해서 해킹가능
  • Security : Impossible
    • 패스워드 변경 전 이전 패스워드 다시 입력
    • 만약 Cross Site Scripting 이 취약하다면 역시 이전 패스워드도 탈취할 수 있음

Comments