g0rmint

靶机地址

一:侦察

1.开80、22端口。

2.访问http://192.168.1.116,显示

The requested URL / was not found on this server.

我的第一反应是80端口扫描错了,要不重新扫描一遍?

.…呃,其实是网站没有配置好吧,然后扫描网站文件路径。

信息:Apache/2.4.18 (Ubuntu) Server

路径:http://192.168.1.116/server-status/      403forbidden

http://192.168.1.116/robots.txt

/* Too easy? Lets see */

Disallow: /g0rmint/*

3.找到登陆表单

http://192.168.1.116/g0rmint/login.php

http://192.168.1.116/g0rmint/reset.php

::: {.image-package}
{.uploaded-img
width=”auto” height=”auto”}\

::: {.image-caption}
:::
:::

表单参数:email、pass、submit

提交的单引号,被反斜杠转义

4.解析登陆表单的逻辑:

以前遇到过表单,提交方式post,会将输入的表单参数提交到login.php,用脚本判断是否正确。

::: {.image-package}
{.uploaded-img
width=”auto” height=”auto”}\

::: {.image-caption}
:::
:::

在这里,action方法为空,意思是将表单提交给本页面。em......那么到底是谁在处理参数,判断用户名/密码的正确性?

应该是本页面的js脚本了,但是,是哪个js脚本干的呢。。

::: {.image-package}
{.uploaded-img
width=”auto” height=”auto”}\

::: {.image-caption}
:::
:::

5.em.........没什么思路,干脆用web扫描器扫一下吧

Acunetix Web Vulnerability
Scanner

::: {.image-package}
{.uploaded-img
width=”auto” height=”auto”}\

::: {.image-caption}
:::
:::

::: {.image-package}
{.uploaded-img
width=”auto” height=”auto”}\

::: {.image-caption}
:::
:::

有xss和csrf漏洞,等等…… 

虽然有着这些漏洞,但是csrf需要和管理员交互,,这是靶机,这里根本就没有真正的网站管理员啊。

没有思路了,看看writeup

6. 源代码

::: {.image-package}
{.uploaded-img
width=”auto” height=”auto”}\

::: {.image-caption}
:::
:::

<meta>标签:它提供页面元信息(meta-info),作用是针对搜索引擎和更新频率的描述等。

参数:content(必),http-equiv、name、scheme(可选)

name=backup-directory,暗示着有备份文件可以下载。

·访问 http://192.168.1.105/g0rmint/s3cretbackupdirect0ry/ ,显示404 not
found.

·访问http://192.168.1.105/g0rmint/s3cretbackupdirect0ry/backup.zip

下载了一个backup.zip文件,,哇,真的想不到诶~

7.源码分析。

::: {.image-package}
{.uploaded-img
width=”auto” height=”auto”}\

::: {.image-caption}
:::
:::

解压以后,看到网站文件的构架了,因为php脚本在服务端处理,客户端是看不到php源代码的。看看我们最好奇的login.php。。。

在第四步——解析登陆表单的逻辑,有一点疑惑:将表单提交给本页面。不知道是谁在处理参数,判断用户名/密码的正确性。当时还怀疑那十几个js脚本。

其实就是本页面的login.php脚本处理提交的表单,不过php脚本在客户端是看不到的。

::: {.image-package}
{.uploaded-img
width=”auto” height=”auto”}\

::: {.image-caption}
login.php
:::
:::

在第五步,扫描出两个邮箱地址,然后在下载下来的css文件夹下,找到style.css

::: {.image-package}
{.uploaded-img
width=”auto” height=”auto”}\

::: {.image-caption}
邮箱地址
:::
:::

在reset.php里有一句,会通过重置密码的时间生成重置密码。

$password = substr(hash('sha1', gmdate("l jS \of F Y h:i:s A")),
0, 20);

::: {.image-package}
{.uploaded-img
width=”auto” height=”auto”}\

::: {.image-caption}
:::
:::

::: {.image-package}
{.uploaded-img
width=”auto” height=”auto”}\

::: {.image-caption}
:::
:::

用泄露的邮箱/用户名重置密码。w3bdrill3r@gmail.com/noman

然后迅速复制网页上的时间,通过泄露的reset.php源码和时间参数,运行后获取重置的密码。就可以登陆表单了。

::: {.image-package}
{.uploaded-img
width=”auto” height=”auto”}\

::: {.image-caption}
reset.php
:::
:::

总结:

dirb可以暴力枚举一条单独的url。

dirBuster比dirb速度快,前者适合暴力枚举整个网站,后者时候枚举确定的文件夹下的文档是否存在,dirb比较灵活。
:::
:::
:::