Web安全-命令执行漏洞利用与防护
命令执行漏洞利用与防护
【实验目的】
掌握命令执行漏洞产生的原因和利用方法,感受其带来的危害,了解相应的防范策略。
【实验环境】
**目标靶机:**DVWA2008
(用户名: 360college 密码: 360College)
**Web渗透主机:**WebPentester
(用户名: college 密码: 360College)
【实验原理】
命令执行漏洞指的是网站的应用程序有些需要调用执行系统命令,当用户能控制这些函数中的参数时,就可以将恶意系统命令拼接到正常命令中,从而造成命令执行攻击。本实验通过利用网站的命令执行漏洞,使大家了解命令执行漏洞产生的原因,感受其带来的危害,了解相应的防范策略。
当应用需要调用一些外部程序去处理内容的情况下,就会用到一些执行系统命令的函数。如PHP中的system,exec,shell_exec等,当用户可以控制命令执行函数中的参数时,将可注入恶意系统命令到正常命令中,造成命令执行攻击。
常见的原因有:
(1)代码层过滤不严格:商业应用需要执行命令,商业应用的一些核心代码可能封住在二进制文件当中,在web应用中通过system函数调用。
system("/bin/program --arg $arg")
(2)调用第三方组件存在的代码执行漏洞:如wordpress,可以选择imagemagick这个常用的图片处理组件,处理用户上传图片时造成命令执行;还有JAVA中 struts2/elasticsearch groovy等。
实验步骤
第一步 登录存在文件包含漏洞的Web服务器并启动网站Web服务
(1)使用360College账号登录靶机(密码为360College)
(2)双击桌面快捷方式phpStudy启动服务:
Web服务成功启动后的界面如下图所示:
第二步 渗透主机远程访问DVWA网站,并利用命令执行漏洞获取信息
(1)输入url地址:
http://【靶机IP】:8085
以用户名admin密码password进行登录:
(2)设置训练级别为low
(3)在命令执行菜单框下输入127.0.0.1并通过submit提交,此时反馈信息显示执行了“ping 127.0.0.1”命令
(4)在命令执行菜单框下输入127.0.0.1 && natstat -an再次通过submit提交,此时反馈信息显示不仅执行了“ping 127.0.0.1”命令,而且还执行了“natstat -an”命令:
执行结果如图所示:
(5)如果分析DVWA命令执行功能源代码,如图所示:
其在使用shell_exec命令执行函数时没有将输入的参数进行限制,导致能够带入其他系统命令来执行。
【思考与总结】
命令执行漏洞能够造成的危害有:
(1)执行系统命令或读写系统文件;
(2)反弹内外shell;
(3)控制整个Web服务器;
(4)辅助内网渗透。
对其的防护策略是:
(1)尽量不要执行一些外部命令;
(2)使用自定义函数或函数库来代替外部命令;
(3)使用一些过滤函数来对用户输入的命令参数进行过滤;
(4)指定可执行文件的路径,预先把要使用的命令放置在该路径下。