HackTheBox에서 제공하는
EASY 난이도의 웹해킹 문제
Ruby 로 개발된 웹페이지에 대한 SSTI 취약점과 관련된 문제이다.
문제 소스파일과 함께
문제페이지 주소가 주어진다.
문제 페이지에 들어가면
Ruby로 개발된 것을 어필하는듯 빨간 보석들이 보이고
중간에 입력할 수 있는 칸이 하나 보인다.
웹 페이지의 기능은
사용자가 입력한 텍스트를
아래쪽에 네온 효과를 줘서 출력시키는 것이 전부이다.
처음엔 SSTI 관련 문제인지 모르고
XSS 페이로드를 테스트 해보고자
<script> 를 입력해 보았다.
그랬더니 Malicious Input Detected 라는 문구가 출력된다.
class NeonControllers < Sinatra::Base
configure do
set :views, "app/views"
set :public_dir, "public"
end
get '/' do
@neon = "Glow With The Flow"
erb :'index'
end
post '/' do
if params[:neon] =~ /^[0-9a-z ]+$/i
@neon = ERB.new(params[:neon]).result(binding)
else
@neon = "Malicious Input Detected"
end
erb :'index'
end
end
그래서 같이 제공된 소스코드를 확인해 봤더니
입력칸에 /^[0-9a-z ]+$/i 라고 정규식을 걸어놓은것을 봤다.
0부터 9까지, a 부터 z까지, 스페이스바를 제외한 다른 입력은
Malicious Input 으로 취급받게 된다.
https://st98.github.io/diary/posts/2017-12-08-harekaze-ssti-problem.html
이것저것 검색해보다가
어느 일본분의 블로그에서 힌트를 발견했다.
입력값에 %0A를 넣으면 정규식을 우회 가능하다는 것이다.
curl을 이용해 문제 페이지에 요청을 보내보았다.
1%0Apwn@ 이라고 파라미터를 전달했는데
원래라면 필터링 되어야할 골뱅이가
응답에서 보이는것을 확인했다.
우회가 된다는 뜻이다.
다음으로 SSTI 국룰인 7*7 을 보내보았다.
파라미터가 URL 인코딩 되어있는데
이런 의미이다.
<%= 7*7 %> 라고 보낸것이다.
응답 패킷을 보면 7*7이 계산되어서
49가 출력되는것이 보인다.
SSTI 취약점이 존재한다는 것이다.
한번 시험삼아 /etc/passwd 파일도 뽑아봤다.
File.open('/etc/passwd').read 해주면 된다.
역시나 잘 되는것을 볼 수 있다.
플래그는 그냥 flag.txt 에 있었다.
아까 /etc/passwd 부분만 바꿔주면
플래그의 내용을 확인할 수 있다.
'워게임 > HackTheBox' 카테고리의 다른 글
[HackTheBox] Cryptohorrific - 리버싱 / Plist pro / IDA (180) | 2023.09.17 |
---|---|
[HackTheBox] Obscure - 포렌식 / Wireshark / John the Ripper (93) | 2023.07.20 |
[HackTheBox] FreeLancer - 웹해킹 / SQL Injection / LFI / dirb (86) | 2023.07.14 |
[HackTheBox] Forest - 포렌식 / Stegsolve / Steghide / Vigenere (66) | 2023.04.25 |
[HackTheBox] Impossible Password - 리버싱 / IDA (61) | 2023.04.18 |