Linux使用sz/rz命令在服务器上传下载文件 及 GIF89a图片欺骗攻击导致tmp目录很多php开头的文件

一、Linux下使用sz/rz命令从服务器下载文件或上传文件至服务器

    使用secureFX可以直接和LINUX进行文件互传,但有些服务器会要求通过中间服务器连接,无法难过SecureFX直接操作文件了,不过Linux有两个很好用的命令:sz 和 rz

SZ:sz命令就是将服务器上的文件下载到本地电脑。s的意思就是send
RZ:rz命令是将本地的文件上传到服务器。r的意思received

1, sz/rz命令的安装使用

    两个命令都是在服务器上执行,通过secureCRT连接服务器后,在选项->会话选项->X/Y/Zmodem 配置中设置上传和下载的目录,sercureCRT只能操作这两个目录。LINUX服务器默认不带有这两个命令,需要执行安装,在centos下的安装命令:

yum  install lrzsz

    执行下载:直接使用sz 文件名。即下载到配置的下载文件夹。

    执行上传:使用命令:rz -be 会打开一个窗口。输入文件名,再点击右边的添加,就会进入下面的上传列表。确定即可。

1, 关于复制点Zmodem协议

    关于ZModem协议,先从XMODEM协议(XMODEM   Protocol)说起。XMODEM协议是一种使用拨号调制解调器的个人计算机通信中广泛使用的异步文件运输协议。这种协议以128字节块的形式传输数据,并且每个块都使用一个校验和过程来进行错误检测。如果接收方关于一个块的校验和与它在发送方的校验和相同时,接收方就向发送方发送一个认可字节。然而,这种对每个块都进行认可的策略将导致低性能,特别是具有很长传播延迟的卫星连接的情况时,问题更加严重。

    使用循环冗余校验的与XMODEM相应的一种协议称为XMODEM-CRC。还有一种是XMODEM-1K,它以1024字节一块来传输数据。YMODEM也是一种XMODEM的实现。它包括XMODEM-1K的所有特征,另外在一次单一会话期间为发送一组文件,增加了批处理文件传输模式。

    ZMODEM是最有效的一个XMODEM版本,它不需要对每个块都进行认可。事实上,它只是简单地要求对损坏的块进行重发。ZMODEM对按块收费的分组交换网络是非常有用的。不需要认可回送分组在很大程度上减少了通信量。它是Xmodem   文件传输协议的一种增强形式,不仅能传输更大的数据,而且错误率更小。包含一种名为检查点重启的特性,如果通信链接在数据传输过程中中断,能从断点处而不是从开始处恢复传输。 

二、linux下tmp目录里很多php开头的文件-GIF89a图片欺骗攻击

某天进入到linux的tmp目录里一看,很吃惊,一堆php开头的文件,如下图:

linux下tmp目录里很多php开头的文件-GIF89a图片欺骗攻击

不知道是哪里来的,而且已经很久了。查看内容基本都是这样的:

[root@kermit tmp]# cat phpzpqXze
GIF89a
<%
response.Write(987651234-123498765)
strURL = Request.Servervariables("url")
intPos = InstrRev(strURL,"/")
intStrLen = len(strURL)
strFileName = Right(strURL,intStrLen-intPos)
on error resume next
set fs=Server.CreateObject("Scripting.FileSystemObject")
fs.DeleteFile(Server.MapPath(".")&"\\"&strFileName)
%>

    这是GIF89a图片头文件欺骗,是一种攻击,GIF89a图形文件是一个根据图形交换格式(GIF)89a版进行格式化之后的图形。而写到这个临时目录说明是通过上传进入到了这个目录,这个文件会怎么执行呢?如果这个图片被存入进了WEB,在浏览器里打开并加载这个图片时就会出现异常,比如编写一个text文件,内容如下:

GIF89a
<head>
<meta http-equiv = "refresh" content ="1;url=http://www.sohu.com/" />  
</head>

然后保存成名字:a.gif。再在PHP的WEB目录下创建一个img.php文件,里面写上代码:

<img src="a.gif">

    然后访问img.php文件,你会看到页面打开后不久就跳转至搜狐网站了,如果a.gif的文件里跳转时再带上一些读取cookies的参数,那么用户的数据就被窃取了!然后PHP在判断这个图片上却显得很弱智。我们使用php里的函数getimagesize读取这张图片,会得到这样的结果:

Array
(
[0] => 2573
[1] => 26684
[2] => 1
[3] => width="2573" height="26684"
[channels] => 3
[mime] => image/gif
)

    结果显示图片的类型是没问题的,只是在尺寸上有些大,但也许这种注入有其它的办法能将尺寸修改成符合你网站需要的,那PHP在接收图片时有什么办法来阻止这种方式呢?既然getimagesize从图片类型上不能阻止,其它的函数:mime_content_type,Fileinfo也没法阻止了。当然如果攻击的脚本像上面这种完全可以从尺寸上阻止,如果脚本能通过,可以考虑重新将图片生成的方法防止含代码图片进入,程序如下:

//显示php获取的图像信息
print_r(getimagesize('a.gif'));

//如果尺寸合格, 重新创建图像实例
$img = getimagesize('a.gif');
$im  =  imagecreatetruecolor ($img[0], $img[1]);
imagepng ($im ,  './a.'.image_type_to_extension (IMAGETYPE_PNG));
imagedestroy($im);

    这时如果像上面这种脚本上传,重新生成的图片会是一张纯黑图片,也就不存在攻击脚本了。但这样也会带来额外的图片生成开销。

  • 25
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

林戈的IT生涯

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值