g0rmint
一:侦察
1.开80、22端口。
The requested URL / was not found on this server.
我的第一反应是80端口扫描错了,要不重新扫描一遍?
.…呃,其实是网站没有配置好吧,然后扫描网站文件路径。
信息:Apache/2.4.18 (Ubuntu) Server
路径:http://192.168.1.116/server-status/ 403forbidden
/* 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比较灵活。
:::
:::
:::