07操作系统命令注入攻击防护实训.docx
- 文档编号:17633398
- 上传时间:2023-07-27
- 格式:DOCX
- 页数:12
- 大小:2.18MB
07操作系统命令注入攻击防护实训.docx
《07操作系统命令注入攻击防护实训.docx》由会员分享,可在线阅读,更多相关《07操作系统命令注入攻击防护实训.docx(12页珍藏版)》请在冰点文库上搜索。
07操作系统命令注入攻击防护实训
实训六操作系统命令注入攻击防护实训
一、实训目的
1、了解基本的操作系统命令注入攻击方法;
2、掌握WAF防护操作系统命令注入攻击的配置方法。
二、应用环境
本次实训我们将模拟网站存在操作系统命令注入攻击漏洞时,对网站进行操作系统命令注入攻击,并使用WAF进行攻击防护。
三、实训设备
1、WAF设备1台
2、PC机2台
3、双绞线(直通)2根
四、实训拓扑
透明部署模式
五、实训要求
1、按照拓扑连接网络
2、按照拓扑中的IP地址配置设备IP
六、实训步骤
第一步:
在PC机2上部署含有操作系统命令注入漏洞的网站,并在本地访问正常,在PC机2上打开浏览器输入http:
//127.0.0.1/
第二步:
在PC机1上打开浏览器输入https:
//192.168.1.2/登录WAF设备,将保护网站添加到WAF站点管理中,左侧功能树进入站点->站点管理,点击新建按钮
输入web服务器IP地址和端口,点击确定,将网站加入WAF保护中
注意:
此步骤中策略集选择“无”
第三步:
在PC机1上使用浏览器输入http:
//192.168.1.3访问PC机2上的网站,可以正常访问
第四步:
通过手工方式进行操作系统命令注入攻击,在PC机1上打开浏览器输入http:
//192.168.1.3/?
cmd=dirc:
使用操作系统命令dirc:
查看C盘目录文件,如下图浏览器中列出了C盘目录的详细情况
我们再使用操作系统命令创建一个系统用户,在浏览器中输入http:
//192.168.1.3/?
cmd=netuserabcd123456/add
登录到PC机2上,点击我的电脑右键管理->本地用户和组->用户,新建了一个abcd的用户
我们也可以使用操作系统命令使得PC机2关机,在PC机1上打开浏览器输入:
http:
//192.168.1.3/?
cmd=shutdown-s-t10000
输入完毕回车后,登录到PC机2上可以看到一个关机的窗口,如下
在PC机1上输入http:
//192.168.1.3/?
cmd=shutdown-a取消关机
第五步:
在WAF上启用操作系统命令注入防护功能
上一实训中我们已经讲述了怎么使用web防护功能,这里我们不再赘述,我们使用默认的攻击阻止策略集,进入站点->站点管理->修改要保护的web网站->点击确定
第六步:
再次使用操作系统命令注入攻击对web网站进行攻击,我们会发现,每次攻击攻击被阻断,并出现请不要进行web的提示
通过以上步骤,说明WAF已经成功阻断了本次攻击
七、注意事项和排错
1、需要将保护网站添加到WAF保护中,才能够保护生效。
2、攻击不能被阻止时,首先清空浏览器缓存,然后检查防护规则是否被成功应用。
八、配置序列
无
九、共同思考
操作系统命令注入漏洞对网站的危害?
一十、课后练习
1、尝试其他操作系统命令进行注入攻击?
2、更改防护时间,比如:
只上午18:
00-23:
00防护操作系统命令注入攻击?
一十一、知识背景
操作系统命令注入攻击CommandInjection,即命令注入攻击,是指黑客通过把HTML代码输入一个输入机制(例如缺乏有效验证限制的表格域)来改变网页的动态生成的内容。
一个恶意黑客(也被称为破裂者cracker)可以利用这种攻击方法来非法获取数据或者网络资源。
当用户进入一个有命令注入漏洞的网页时,他们的浏览器会通译那个代码,而这样就可能会导致恶意命令掌控该用户的电脑和他们的网络。
命令注入攻击最初被称为Shell命令注入攻击,是由挪威一名程序员在1997年意外发现的。
第一个命令注入攻击程序能随意地从一个网站删除网页,就像从磁盘或者硬盘移除文件一样简单。
在PHP中可以使用5种命令来执行外部应用程序或函数,system执行外部应用程序并显示输出结果,exec执行一个外部应用程序,passthru执行UNIX系统命令并显示原始的输出,shell_exec实行shell命令并返回输出的字符串``与shell_exec命令函数功能相同
一、system函数
示例:
php
echo"
";";$last_line=system("dirc:
",$retval);
echo"
echo"命令输出的最后一行:
".$last_line."
";
echo"命令的返回值:
".$retval;
?
>
二、exec函数
php
$output=array();
$last_line=exec("dirc:
",$output);
?
>
三、passthru函数
voidpassthru(stringcmd[,int&return_var])
cmd为要执行的UNIX命令
return_var存储系统命令返回值
注意:
当UNIX系统命令输出是二进制的数据时候,需要用这个命令
四、shell_exec命令
stringshell_exec(stringcmd)
五、``运算符
此运算符与shell_exec有相同功能
$output=`dirc:
`;
#1漏洞程序实例:
//ex.php
php
$dir=$_GET["dir"];
$username=$_GET["username"];
if(isset($dir))
//if(isset($username))
{
system("ls-al$dir");
//passthru("cat/logs/usage/$username");
}
?
>
攻击手法:
使用URL:
ex.php?
dir=;cat/etc/passwd这个命令会显示/tec/passwd文件的内容
命令注入的方式:
`command`执行command
$(command)执行command
;command执行command并显示执行结果
|command执行command并显示执行结果
&&command执行command并显示执行结果
||command执行command并显示执行结果
/home/user/.bashrc覆盖.bashrc文件
防范方法:
1、$dir=escapeshellarg($_GET["dir"]);//此函数作用:
'被替换为\',"替换为\",;被替换为
\;
2、将safe_mode设为On,使用safe_mode_exec_dir指定执行文件的路径
php.in
safe_mode=On
safe_mode_exec_dir=/user/excutable/php
#2漏洞程序实例:
使用eval函数(eval函数将字符串作为PHP源代码来执行)
php
//ex.php
if(isset($_GET["arg"]))
{
$arg=$_GET["arg"];
eval("\$myvar=$arg;");
}
?
>
攻击URL:
ex.php?
arg=system("dirc:
")//显示c盘内容
#3漏洞程序实例:
可变变量攻击
php
//ex.php
$x="Hello";
foreach($_GETas$key=>$value)
{
$key=$value;
}
?
>
攻击URL:
ex.php?
x=123
#4程序漏洞实例
php
if(isset($_GET["func"]))
{
//或者直接echocall_user_func($_GET["func"]);
$myfunc=$_GET["func"];
echo$myfunc();
//或者
echo${"myfunc"}();
}
?
>
攻击URL:
ex.php?
func=phpinfo//显示服务器信息
此类攻击防范方法:
1、检测使用者输入的字符串
2、将使用者输入的字符串进行编码处理
3、将web应用程序的输出字符串进行编码处理
4、预先指定可以提供给eval等函数的参数。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 07 操作系统 命令 注入 攻击 防护