webshell的“安全”
webshell的隐藏
在上传webshell的时候必须要进行webshell的隐藏工作。隐藏webshell,第一个目的是不让网站管理员发现马将其删掉,第二个目的是为了不被其他的Hacker发现了这个文件并加以利用。
大马的隐藏
- 
不死僵尸
 
windows系统存在系统保留文件夹名,windows不允许用这些名字来命名文件夹保留文件夹:
aux|prn|con|nul|com1|com2|com3|com4|com5|com6|com7|com8|com9|lpt1|lpt2|lpt3|lpt4|lpt5|lpt6|lpt7|lpt8|lpt。
但是这些可以使用windows的copy命令创建,比如:
c:>copy 3.asp \.\C:\aux.asp
在c盘中创建一个aux.asp。这个文件无法在图像界面下删除。
要删除必须使用del命令。
删除了之后是没有提示的,但是文件确实没有了。
当然用这样的方法虽然可以创建一个图形界面无法删除的webshell,
但是如果直接放在网页根目录下,被有经验的网管看到还是会删除的。
- 
clsid隐藏
 
windows每一个程序都有一个clsid,如果将一个文件夹命名为x.{程序clsid},然后输入一下两条命令:
创建后
点开进入的是控制面板,但是其实该文件还是文件夹,里面还存在大马,
而且创建一个这样一个带有clsid的文件夹将其命名为相应的程序可以迷惑网络管理员的实现,
比如进入回收站文件夹中创建这样一个带有回收站clsid的文件夹,在里面再copy一个保留字asp,
还可以使用:attrib +h +s +r +d/s /d
修改该文件的属性,将其隐藏,一般windows都是默认不显示隐藏文件的,
而且回收站文件夹是自动创建的,这样可以达到隐藏一个不死webshell到服务器中去。
- 
驱动隐藏技术
 
原理是在于,在windows文件系统中,打开文件夹的时候系统会发送一个
IRP_MJ_DIRECTORY_CONTROL函数,这个函数可以分配一个缓冲区.
将该文件夹下的子文件夹遍历处理得到的信息存放至缓冲区,在遍历的时候,寻找匹配的文件名.
如果文件名匹配,就绕过当前文件夹或者文件,对于绕过的原理,我查询了下代码,根据我的理解,
它是根据将遍历的指针在查询到目标文件的时候,加上该文件的偏移量,不扫描目标文件夹,直接跳过。
对于这种技术的实施,虽然网上很多C的源码,但是操作起来有一定的困难,因为头文件的支持,
还有系统的支持(不同系统的文件系统会不同),在网上查找到了Easy File Locker程序,
需要将其安装至web服务器上,对目标文件设置权限。
权限的设置有可读accessable,可写writable,可删deletable,可见visible。
上图可以看到我们将其隐藏了,如前文所说,因为直接绕过了遍历,那么访问绝对路径却可以访问。我的理解是:
c:\WINDOWS\xlkfs.dat
c:\WINDOWS\xlkfs.dll
c:\WINDOWS\xlkfs.ini
c:\WINDOWS\system32\drivers\xlkfs.sys
这4个文件代替了遍历查询,要访问隐藏后的文件,输入绝对路径并不是应用绝对路径查询,
而是通过上面4个文件进行的查询,相当于给隐藏文件做了一个单独的驱动。
为了不被管理员发现,可以将Easy FileLocker的程序删除,但是不能删除上述4个文件。
删除程序后,输入绝对路径还是可以访问,就达到了隐藏后门的作用
- 
注册表隐藏
 
注册表路径:
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\explorer\Advanced\Folder\Hidden\SHOWALL
在这个路径下有一个CheckedValue的键值,把他修改为0,如果没有CheckValue这个key直接创建一个,将他赋值为0.
然后创建的隐藏文件就彻底隐藏了,即时在文件夹选项下把“显示所有文件”也不能显示了。
一句话木马的隐藏
- 
头文件包含隐藏
 
在web里面的一些脚本文件中,有些文件里面有包含语句,可以利用这种包含方法包含一句话文件,
在访问这个页面会直接调用这些一句话。
asp包含语句:<!–#includefile=”文件路径”–>,直接填入路径,文件路径是web服务器上的路径。
可以使用站长助手将一句话的NTFS流小马写入图片里面,将路径的‘\’改‘:’写入之后图片是显示不了的,
然后找到web服务器上的一个asp文件,在文件的开始部分写上include语句,
<!–#includefile=”inc:1.jpg”–>。文件包含可以解析NTFS流为asp,包含之后,
我们访问那个asp文件就包含了一句话,这样就隐藏了一句话。
php包含语句:
<?php include($include);?>
这里的$include可以是外部路径比如:
这个aaa上的1.php内容为
<?php include($include);?>
bbb是外部服务器的,前提是这个服务器不能支持PHP。否则将会在bbb这个服务器上执行hehe.php(即一句话马),而aaa不执行。
- 
配置文件隐藏一句话(PHP)
 
在拿到PHP的webshell之后,可以利用php.ini隐藏文件,编辑配置文件,
其中一个项功能是将某一个文件的内容添加到任意界面的页眉页脚:
auto_prepend_file =hehe.php
然后看
include_path = “E:\PHPnow-1.5.6\htdocs;”
这个配置信息表示加载页眉页脚的文集位置,path规则是”\path1;\path2″,
表示将path1路径的文件夹下的页眉页脚文件添加到path中的文件中去,
因为这里是一个‘.’表示根路径,这里就相当于添加到了主页上面去了,
然后hehe.asp文件里面写上一句话,就可以通过php添加页眉的共能,将一句话写入网站首页。
- 
404小马
 
404小马在访问的时候显示出来一个404页面不存在的页面,但是实际上木马代码已经执行,
一般都是按5次shift可以将它调用出来。
笔记来源于:https://blog.csdn.net/qq_42357070/article/details/82881393

                
            
        
浙公网安备 33010602011771号