IT/Wargame

[Web Hacking] image-storage

kykyky 2024. 7. 8. 22:16

>> 소스코드 분석 

 

# list.php

line 26~32의 php에 의해,

현재 위치 아래의 uploads 폴더 내 파일들(중 .., ., index.html는 제외)의 list가 출력된다.

 

# upload.php

※ move_uploaded_file(A, B)

: 파일 A가 php의 HTTP POST 방식으로 업로드 되었는지 확인한 뒤 B로 옮김

 

이용자는 http://host1.dreamhack.games:[PORT]/uploads/[FILENAME] URL을 통해 파일에 접근 가능 

 

 

>> exploit

 

# 공격자는 뭘 할수 있는가? 

어떤 파일이든 서버에 올릴 수 있다.

 

# 그 파일로 뭘 수행해야 하는가? 

이 파일이 실행됨으로써,

서버가 "cat /flag.txt" 명령어를 실행하고 그 결과를 브라우저에 띄워서, 공격자가 flag.txt를 읽을 수 있어야 한다.

 

# 최종 exploit

1. 

 

 

2.

html의 form을 통해 공격자의 임의 입력을 받고,

이것이 system() 내에 들어가

결국 서버가 임의 명령어를 실행하게 된다.

※ form은 일반적으로 POST 방식으로 받는 줄 알았는데 여기서는 GET이며,

GET 방식은 POST 방식과 달리 URL에 데이터가 노출된다.

여기서 이걸 쓴 이유는 잘 모르겠다☆♡

 

>> mitigation

 

# 파일 확장자 제한

동적 리소스 확장자 제한 -> RCE(Remote Code Execution) 공격 예방

 

※ 웹 리소스는 크게 정적 리소스(Static Resource)와 동적 리소스(Dynamic Resource)로 분류됨

정적 리소스: 서버에서 실행되지 않음 (eg. JPG, PNG, GIF, MP4, MOV)

동적 리소스: 서버에서 실행되는 것 (eg. PHP, JSP)

 

# AWS, Azure, GCP 등의 정적 스토리지 이용

서버의 파일 시스템을 이용하지 않음 -> 악성 파일이 업로드되어도 웹 서버 공격으로 이어지지 않음

'IT > Wargame' 카테고리의 다른 글

[System Hacking] out_of_bound  (0) 2024.07.10
[Web Hacking] file-download-1  (0) 2024.07.09
[Web Hacking] command-injection-1  (2) 2024.07.08
[Web Hacking] Mango  (0) 2024.07.07
[Web hacking] simple_sqli  (0) 2024.07.07