--
일단 index.php소스를 봐줍니다
latest 함수로 echo를 시켜 주는걸 볼수가 있는데 평소에는 아 여기서 취약점이 터지겠어 라는 생각으로 넘겼지만 돈이 급하고 취약점이 급하다 보니 걍 구조를 보게 되었습니다.
함수를 보시게 되면 캐시 파일이 존재 하면 그걸 include 시키고 존재 하지 않는다면 캐시 파일을 생성한후 그걸 include를 시켜줍니다.
이때 캐시 파일을 쓸때 $latest_skin_url 변수의 값을 넣어주게 되는데 latest_skin_url 변수는 G5_SKIN_URL 이 값이 담기게 됩니다
G5_SKIN_URL 값은 common.php파일의 g5_path() 함수에의해 host헤더 값이 담기게 됩니다.
익플 방법은 일단 캐시를 초기화 시켜주기 위해 게시글을 하나 쓴뒤, 그 다음 index.php로 host에 "><img src=1 onerror="alert('XSS');">하시면 됩니다
PoC :
import requests
from urllib import quote
header = {"Host":"\"><img src=1 onerror=\"alert('XSS');\">"}
url = "site_url"
r = requests.get(url, headers=header)
print r.text