信息收集
端口、服务、版本、目录爆破
-A了解端口、服务、寻找突破点
80端口先访问一下:
看源码、目录爆破
dirsearch爆不出东西、就换gobuter再爆一遍
目前两个点:FTP、web页面
nikto先扫描:
连接ftp看看:
空账户名&密码不行、anonymous&anonymous行
全给他下载下来看看有什么
一个html代码&运行逻辑??
分析代码--》账户名有个admin,密码是potato。
这个没看出来有什么
nikto没扫出来什么。
试试登录:
没登录成功:
但是bad user这些关键词--》index.php.bak 应该是这个登录页面的代码。直接访问http://172.16.33.43/admin/dashboard.php 是不行的,我本来是用burp爆破,但是没有成果。所以参考了wp。这里的登陆页面绕过和scrmp函数有关。
涉及到新知识点:PHP类型转换机制的漏洞---PHP Magic Tricks: Type Juggling[3]
(让我偷几张图贴在这,你们先看看原理)
核心原理在于 PHP 的弱类型特性与 strcmp()
函数对非字符串输入的异常处理。也就是说,strcmp函数,当传入非字符串类型(如数组)时,函数会报错,但在 PHP 5.3 之前的版本中,错误处理逻辑会错误地 返回 0
(即判定为相等)。
则$pass的判断是true,整个if表达式被满足。
然后为什么输入 password[]= 会被当成数组?
也就是 password[]= 因为参数password同名,被解析为数组。我估计这个中括号里边默认为0,所以,array(0 => ' ') 。重点是同名参数,=什么无所谓。
好,应用到这个靶场上:
上效果图:
聊下一话题:
5个选项挨个点一下,看起来这俩最有希望:
Logs:
可能有文件包含
可能有命令注入
LFI
先从LFI的角度来:
三个log文件的请求都是一样的,只是文件名不一样,所以需要一个好的爆破字典。(这靶场也是挺奇怪,一会行一会儿不行的)
有个账户密码存储在里边:
好了,连接过去就行。
再看命令注入怎么来的。
命令注入
发现文件包含的同时,也可以查看/dashboard.php文件,代码审计后
存在命令注入
于是:
边界突破成功
提权
sudo、linpeas、su root(用空密码 or 空格)
sudo -l
所以尝试在/notes/下,用nice运行反弹脚本:
直接下载到notes下不行呢~~~
那试试tmp:
这样可行,但是还是webadmin(普通)的权限。
sudo以后就ok了