Golang Snippet #10

This challenge covers the review of a snippet of code written in Golang

PRO
Tier
Easy
< 1 Hr.
680

In this lab, we examine a piece of Golang code that handles HTTP requests and serves files based on URL parameters. The main function sets up an HTTP server listening on port 8080, mapping requests to the handler function. The handler function attempts to open a file specified by a URL parameter, clean the path, and serve the file's contents.

The vulnerability lies in the use of path.Clean to sanitize the file path. While path.Clean simplifies paths by removing relative path segments like ./, it does not entirely mitigate directory traversal attacks. An attacker can exploit this by using paths like ../../etc/passwd to access sensitive files outside the intended directory, as path.Clean does not remove leading ../ segments unless prefixed by a /.

Want to learn more? Get started with PentesterLab Pro! GOPRO