译者:LeagerL
预估稿费:200RMB
投稿方式:发送邮件至linwei#360.cn,或登陆网页版在线投稿
命令注入是指攻击者可以能够控制操作系统上执行的命令的一类漏洞。 这篇文章将会讨论它的影响,包括如何测试它 ,绕过补丁和注意事项。
在命令注入之前,先要深入了解 的是:命令注入与远程代码执行(RCE)不一样。它们的区别是 ,通过RCE,执行的是代码 ,而在命令注入的时 ,执行的是一个(OS)命令。这可能只是一个微小的影响差异,但关键的区别在于如何找到并利用它们。
设置
我们首先编写两个简单的Ruby脚本,通过本地运行脚本来学习如何发现并利用命令注入漏洞 。我使用Ruby 2.3.3p222。下面是ping.rb。
puts `ping -c 4 #{ARGV[0]}`该脚本将会,防止异意ping作为参数传递给脚本的服务器。 然后它将在屏幕上返回命令输出。示例输出如下。
$ ruby ping.rb '8.8.8.8'
PING 8.8.8.8 (8.8.8.8): 56 data bytes
64 bytes from 8.8.8.8: icmp_seq=0 ttl=46 time=23.653 ms
64 bytes from 8.8.8.8: icmp_seq=1 ttl=46 time=9.111 ms
64 bytes from 8.8.8.8: icmp_seq=2 ttl=46 time=8.571 ms
64 bytes from 8.8.8.8: icmp_seq=3 ttl=46 time=20.565 ms
--- 8.8.8.8 ping statistics ---
4 packets transmitted, 4 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 8.571/15.475/23.653/6.726 ms
如上所示,它执行ping -c 4 8.8.8.8并在屏幕上显示输出。这是另一个脚本:server-online.rb。
puts `ping -c 4 #{ARGV[0]}`.include?('bytes from') ? 'yes' : 'no'该脚本将根据ICMP响应(ping)来确定服务器是否处于联机状态。如果它响应ping请求,将在屏幕上显示是。如果没有,将显示否。命令的输出不会返回给用户。示例输出如下。
$ ruby server-on.rb '8.8.8.8'
yes
$ ruby server-on.rb '8.8.8.7'
No
测试
检测一级命令注入漏洞的最佳方法之一是尝试执行sleep命令,并确定执行时间是否增加。首先,我们为ping.rb脚本建立时间基线 :
$ time ruby ping.rb '8.8.8.8'
PING 8.8.8.8 (8.8.8.8): 56 data bytes
...
0.09s user 0.04s system 4% cpu 3.176 total
注意,执行脚本大约需要3秒。我们通过注入sleep命令观察脚本是否容易受到命令注入攻击。
$ time ruby ping.rb '8.8.8.8 && sleep 5'
PING 8.8.8.8 (8.8.8.8): 56 data bytes
...
0.10s user 0.04s system 1% cpu 8.182 total
该脚本现在将执行命令ping -c 4 8.8.8.8 && sleep 5。再次注意执行时间:它从3秒跳到8秒,这增加了5秒。互联网上仍然可能会出现意想不到的延迟,所以重复注入和设定较长的时间是很重要的,以确保它不是假阳性。
我们来观察 server-online.rb脚本是否也是易受攻击的。
$ time ruby server-online.rb '8.8.8.8'
yes
0.10s user 0.04s system 4% cpu 3.174 total
$ time ruby server-online.rb '8.8.8.8 && sleep 5'
yes
0.10s user 0.04s system 1% cpu 8.203 total
同样,基线显示执行一个正常的请求大约需要3秒。在命令中添加&sleep5会增加到8秒的时间。
根据执行的命令,可以注入不同的sleep命令。以下是一些可以尝试的有效payload(它们都是有效的):
time ruby ping.rb '8.8.8.8`sleep 5`'
当一个?div style="border-bottom:1px solid #aaa;margin-bottom:25px">【病毒分析】假勒索真愤青:永久摧毁文件的israbye病毒分析 阅读原文» 简介 近期,360安全中心发现国内流入一款名为israbye的"伪勒索病毒"。与普通勒索病毒完全不同的是,israbye会彻底摧毁文件,即使付钱也无法恢复。而且,病毒想要的也根本不是钱。 一探究竟 该病毒在受害电脑展示的信息称可保证免费恢复文件,但前提是――"等他们收复巴勒斯坦,收复艾克萨……"此病毒的传播目的似乎是为了传递某种主张。上述信息除了英文版本外,还罕见地对应了一段希伯来语,再结合"END OF ISRAEL(以色列的终结)"的标题,并不是以钱财为目的的勒索病毒。 值得注意的是,被israbye病毒破坏的文件也不存在恢复的可能性。它会把文件内容将统一替换成"Fuck-israel, *** You Will never Recover your Files Until Israel disepeare"(其中星号为病毒从中毒机器中获取的用户名),而文件后缀则被更改为.israbye。这种方式下"加密"的文件,终究是等不到恢复的那一天的。 此病毒使用VS2012编写,从病毒程序中记录的pdb信息来看,病毒作者的用户名为Ahmed: 执行后,病毒首先会获取系统的启动目录和临时目录,并将自身复制到临时目录下命名为ClickMe.exe,之后向启动目录下释放cry.exe、cur.exe、lock.exe、index.exe四个程序: 释放完成后,先加密当前用户目录,之后再遍历磁盘电脑所有盘符,循环加密所有文件(循环从1开始,即跳过C盘不加密): 最后就是启动刚刚释放的四个程序并删除自身: 病毒释放的四个衍生程序也是各司其职,工作比较单一。 衍生物cry.exe负责调用修改壁纸: 衍生物cur.exe负责在鼠标指针后添加一个"END OF ISRAEL"的小尾巴 衍生物index.exe负责弹出信息说明窗口,并释放并播放一段bgm 衍生物lock.exe则负责"解决掉"一些分析人员的常用工具,同时启动上面的i
没有评论:
发表评论