카테고리 없음

[DreamHack] EZ_command_injection 웹 해킹

qkrdldks04 2024. 11. 24. 19:37

문제 설명

 

커멘드 인젝션 command injection : 명령어를 삽입한다

 

웹 요청 메시지에 임의의 시스템 명령어를 삽입하고 전송, 웹 서버에서 해당 명령어를 실행하도록 하는 공격

(웹을 통해서 시스템 명령어(command)를 실행하는 공격)

 

ex) 파이썬으로 개발된 웹 애플리케이션에서 입력한 임의 IP에 ping을 전송하고 싶다면 os.system(“ping [user-input]”)을, 임의 파일을 읽고 싶다면 os.system(“cat [user-input]”)등의 형태로 시스템 함수를 사용할 수 있다.

 

문제 풀이

 

문제에 접속하니 이런 화면이 뜬다.

 

/ping 페이지에서 GET 형식으로 입력받고 ipaddress.ip_address(host) 에 host 파라미터에 있는 값을 전달하는 듯 하다.

 

 

host=127.0.0.0 을 해본 뒤 현재 있는 파일 목록을 출력하기 위해 ls 명령어를 써봤는데 실패했다.

찾아보니 ip_address 는 동작 방법이 다르다고 한다.

 

-> ::ffff:8.8.8.8%1 에서 1이 scope id가 됨

(8.8.8.8의 IPv6 표현)

그리고 이 scope id를 사용하면 삽입한 명령어가 실행됨. ex) ::ffff:8.8.8.8%1; whoami

 

::ffff:8.8.8.8%1; ls 를 했더니 플래그가 텍스트 형식으로 존재한다는 표시가 떳다.

 

 

::ffff:8.8.8.8%1; cat flag.txt 를 쳐서 cat 명령어로 파일 내용을 읽어줬더니 플래그가 나왔다!

 

 

문제 해결