Wargame
-
-
-
-
[HTB] Neonify WriteupWargame/Hack The Box 2023. 5. 19. 20:15
주어진 페이지에 접속해보자. 문자열을 입력하면 네온사인처럼 빛나게 출력해주는 웹 페이지가 나타난다. 상세 소스를 분석해보자. ruby언어로 이루어져 있으며, neon파라미터의 값이 ERB.new() 처리가 되는데, 선행되는 조건은 입력값이 영어대소문자, 스페이스, 숫자 로만 이루어져야 한다. 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[:..
-
[HTB] Diogenes' Rage WriteupWargame/Hack The Box 2023. 5. 4. 20:20
주어진 페이지를 들어가보니 자판기처럼 꾸며놓은 페이지가 나타났다. 주어진 소스코드를 분석해보자. // index.js const fs = require('fs'); const express = require('express'); const router = express.Router(); const JWTHelper = require('../helpers/JWTHelper'); const AuthMiddleware = require('../middleware/AuthMiddleware'); let db; const response = data => ({ message: data }); router.get('/', (req, res) => { return res.render('index.html'); });..
-
[HTB] Precious WriteupWargame/Hack The Box 2023. 5. 2. 20:25
nmap -sC -sS -sV -p- -O -o scanResult.txt 10.129.85.61 wkhtmltopdf 의 알려진 SSRF 취약점이 있지만 버전이 맞지 않았고, 버전 관계 없이 시도해보았을때 되지 않았다. https://www.jomar.fr/posts/2021/ssrf_through_pdf_generation/ SSRF Through PDF Generation SSRF Through PDF Generation www.jomar.fr 해당 버전인 wkhtmltopdf 0.12.6 에서도 CVE-2022-35583 라는 취약점이 존재하긴 했지만, 아직 공개된 POC는 없는 듯 했다. gobuster도 의미있는 결과가 나오지 않았고, 서버 버전이었던 nginx/1.18.0 + phusion ..
-
[HTB] AbuseHumanDB WriteupWargame/Hack The Box 2023. 4. 28. 13:42
우선 플래그 획득 조건을 확인해보자. //database.js const sqlite = require('sqlite-async'); class Database { constructor(db_file) { this.db_file = db_file; this.db = undefined; } async connect() { this.db = await sqlite.open(this.db_file); } async migrate() { return this.db.exec(` PRAGMA case_sensitive_like=ON; DROP TABLE IF EXISTS userEntries; CREATE TABLE IF NOT EXISTS userEntries ( id INTEGER NOT NULL PRIMARY..
-
[HTB] petite rcbee WriteupWargame/Hack The Box 2023. 4. 25. 10:33
주어진 페이지에 접근해보자. 파일 업로드 기능이 있는 것을 확인 할 수 있다. 웹쉘 파일 업로드 하는 시나리오를 우선적으로 생각하며 소스코드를 분석해보았다. # utils.py import tempfile, glob, os from werkzeug.utils import secure_filename from application import main from PIL import Image ALLOWED_EXTENSIONS = set(['png', 'jpg', 'jpeg']) generate = lambda x: os.urandom(x).hex() def allowed_file(filename): return '.' in filename and \ filename.rsplit('.', 1)[1].lower..