作者:麦豪小仙 | 来源:互联网 | 2023-06-15 12:05
实验目的与要求1.了解命令注入攻击攻击带来的危险性。2.掌握命令注入攻击攻击的原理与方法3.掌握防范攻击的方法预备知识在PHP中您可以使用下列5个函数来执行外部的应用程序或函数。(
实验目的与要求
1.了解命令注入攻击攻击带来的危险性。
2.掌握命令注入攻击攻击的原理与方法
3.掌握防范攻击的方法
预备知识
在PHP中您可以使用下列5个函数来执行外部的应用程序或函数。
(1) system:执行一个外部的应用程序并显示输出的结果。
(2) exec:执行一个外部的应用程序。
(3) passthru:执行一个UNIX系统命令并显示原始的输出。
(4) shell_exec:执行shell命令并返回输出的字符串。
(5) ““”运算符:与shell_exec函数的功能相同。
正常情况下,PHP的命令执行函数system、exec、passthru、shell_exec与““”
运算符会执行外部的应用程序或命令,然后显示输出的结果。但是黑客可以在这些函数的参数内输入可执行外部应用程序或系统命令来执行攻击,这就是命令注入(Command Injection)攻击。
许多Web应用程序会执行外部命令,来辅助应用程序本身的功能。但是却没有仔细地验证所执行的是否是真正想要的命令,因此给黑客以可乘之机来执行任何指令。
例
攻防实例一
可以查看在c:\xampp\htdocs\example_code\source\code1\ex1-1.php中使用的是system函数执行windows系统dir命令,来显示URL参数dir所指定的子目录的内容。
当点击演示1时,出现下图显示:
黑客可以使用下列的URI来进行命令注入攻击:ex1-5.php?dir=. \&ping 127.0.0.1
直接在浏览器中输入:http://localhost:8080/example_code/source/code1/ex1-5.php?dir=. \&ping 127.0.0.1,结果显示如下:
可以使用escapeshellarg函数来处理命令的参数,防止URI来进行命令注入攻击点击防护5,如图:
攻防实例二:
返回如图界面:
可以查看c:\xampp\htdocs\example_code\source\code1\ex1-6.php文件,使用exec函数执行windows系统命令dir,来显示URL参数dir所指定的子目录的内容。
点击演示二,结果如下图所示:
黑客可以使用下列的URI来进行命令注入攻击:dir=.%5c%26ping%20127.0.0.1,
点击攻击5,结果如下图所示:
攻击实例三
在c:\xampp\htdocs\example_code\source\code1\ex1-7.php中,使用的是passthru函数执行windows系统命令,读取URL参数username所指定的来访者账号,并显示来访者的登录日志的内容。
在浏览器中输入http://localhost:8080/example_code/source/code/ex1-7.php后,显示结果如下图:
可以使用下列的URI来进行命令注入攻击:ex1-7.php?username=tom%26ping%20127.0.0.1,
当你点击攻击7时,有如下效果:
可以使用escapeshellarg函数来处理命令的参数,防止URI来进行命令注入攻击
点击防护7,如图: