ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • #1 운영체제 명령 실행 취약점
    web 취약점 2019. 2. 19. 16:52

    웹 취약점 분석을 위해 DVWA 를 사용하기로 했다.

    설치 동영상 출처 : https://www.youtube.com/watch?v=04XSU77pxaA




    위 동영상을 토대로 설치에 성공했다. 

    진짜 설치가 반이라고 힘이 빠지긴 하지만 !!

    ( gooling 을 얼마나 했는지 ㅎㅎ )


    본격적으로 첫 번째 취약점 분석 포스팅을 시작해보자~





    서버의 보안 단계를 조정하면서 테스트 할 수 있는 점이 신기했다.








     운영체제 명령 실행 취약점 



    Command Injection , DOS Injection 이라고도 불린다.

    사용자의 입력으로 시스템 명령어를 실행 시킬 수 있는 경우를 말한다.


    로그인 란과 같은 입력 칸 혹은 URL 에서의 입력으로 부터 발생할 수 있는 위협이다. 

    운영체제에 맞는 시스템 명령어를 통해 시스템 보안에 심각한 영향을 미칠 수 있다.


    해당 서버의 명령어를 실행할 수 있게 되므로, 서버 내의 저장된 파일을 지우거나 

    악의적으로 행동하도록 만들 수 있기 때문에 입력 값에 대한 필터링이 필요하다. 




    우선 명령 실행 취약점으로 들어가자 

    뭔가 ping 을 실행하는 페이지인 듯하다. 

    대놓고 "명령어를 실행해보세요" 같은 느낌이 난다.






    ping 이 실행된 것을 알 수 있다. 친절하게 그 결과 까지 하단에 출력되는 친절함을 보여주고 있다.

    ping localhost 가 실행되고 있다는 것을 알 수 있다.




    파이프라인인 경우 '|' , '&' 를 사용하게 되면 뒤의 명령이 실행되는 것을 알 수 있었다.

    명령문 A, B 에 대해서




    A | B > B 실행

    A & B > A(백그라운드 실행) B 실행

    A; B > A 실행 후 B 실행 





    이를 활용하여 다음과 같이 작성해보았다.







    'low' 레벨의 운영체제 명령 실행 취약점은 생각보다 너무 쉽게 발견되었다.

    파일 생성, hostname 확인, 파일 삭제하는 등 자유자재로 활용 가능했다.



    여러 명령어를 테스트해보다가 뜻밖에 파일을 발견했다.

    바로 'medium.php', 'high.php' file 의 내부 소스이다 !!






    ';' 세미콜론의 사용을 막아버렸기 때문에 왠지 '|' 나 '&' 를 사용하면 될 것 같다.

    medium 으로 들어가보자 ~


    역시나 ';' 가 아닌 '|' 나 '&' 를 사용해보니 명령어가 실행되었고, 

    high.php 또한 확인할 수 있었다.




    입력받은 값을 "." 에 따라 나누고 있으며, 각각은 정수여야하고, 4분단 이여야 한다는 조건이 달려있다.

    완벽한 조건인데...?



    기나긴 ~ 조사 끝에 is_numeric 의 취약점을 알아냈다.

    hex Data 또한 numeric 으로 인식한다는 점이다!!

    하지만, 0x31 을 '49' 로 해석해버리는 녀석을 손쓸 방법은 없었다.





    좀 더 조사해보니, 이 문항은 DVWA 다른 버전에서 Impossible 불가능한 단계에 있던 코드였다고 한다.








    당연히 이렇게 대놓고 '여기다 시험해보세요' 라고 드러내는 사이트는 아마 없을 것이다.


    자, 이제 실제 site 에는 이러한 운영체제 명령 실행 취약점이 어떤식으로 적용되는지 알아보자.

    ( SK 인포섹 공식블로그에서 발췌했습니다. ㅎㅎ 출처 : http://blog.skinfosec.com/220954123887)




    다음과 같이 url 파라미터에 끼워넣는 방식의 취약점이 존재할 수 있다.


    휴우.. 3시간 동안 이 문제에 매달리면서 알게된 것도 많아진 것 같다.
















    댓글

Designed by Tistory.