HackInOS靶机渗透writeup
0x00准备测试环境
导入下载好的HackInOS.ova文件后,将网络设置成桥接模式,并使用DHCP分配IP。
成功后打开的靶机图如下
0x01渗透过程
- 使用nmap扫描确定目标机器IP
nmap -sn 16.16.16.0/24
//确定目标机器IP为16.16.16.156,并发现8000端口提供web服务
- 使用浏览器插件header editor将localhost替换成16.16.16.156即可正常打开页面。
-
通过fuzzing遍历目录发现此站点敏感目录如下
/license.txt /readme.html /robots.txt /upload.php /uploads/ /wp-admin/ /wp-content/ /wp-includes/ /wp-config.php /wp-login.php /wp-includes/rss-functions.php /wp-admin/install.php
打开/robots.txt后发现
Disallow:/upload.php Disallow:/uploads
查看/upload.php是一个上传功能页面,猜测/uploads是上传后保存的路径
尝试传入php一句话,没有路径回显,猜想应该是做了文件后缀验证或文件内容验证
尝试将后缀改为png、jpg等,但仍然无法上传成功,所以猜测应该是对文件头做了验证
上传正常图片后回显
File uploaded /uploads/?
虽然能正常上传,但是明显文件名改了,没有正确的文件路径,也无法利用,再次陷入僵局。
左思右想,无限尝试最后在/upload.php源代码发现了突破
源码中注释了一个GitHub的链接
<!-- https://github.com/fatihhcelik/Vulnerable-Machine---Hint -->
github中是upload.php的源码
<!DOCTYPE html> <html> <body> <div align="center"> <form action="" method="post" enctype="multipart/form-data"> <br> <b>Select image : </b> <input type="file" name="file" id="file" style="border: solid;"> <input type="submit" value="Submit" name="submit"> </form> </div> <?php // Check if image file is a actual image or fake image if(isset($_POST["submit"])) { $rand_number = rand(1,100); $target_dir = "uploads/"; $target_file = $target_dir . md5(basename($_FILES["file"]["name"].$rand_number)); $file_name = $target_dir . basename($_FILES["file"]["name"]); $uploadOk = 1; $imageFileType = strtolower(pathinfo($file_name,PATHINFO_EXTENSION)); $type = $_FILES["file"]["type"]; $check = getimagesize($_FILES["file"]["tmp_name"]); if($check["mime"]