一、直接上传获取Webshell
这是最常见且直接的方法,利用网站对上传文件的过滤不严或存在漏洞,直接上传Webshell文件。
常见场景:
许多PHP和JSP程序存在此类漏洞。例如,一些论坛系统允许用户上传头像或心情图标,攻击者可以将Webshell伪装成这些文件类型进行上传。
示例:
①PHP系统:在允许上传图片或头像的地方,将Webshell代码嵌入图片中(如使用GIF图片作为载体,将Webshell代码写在图片文件的注释部分),然后上传。
②JSP系统:直接上传JSP格式的Webshell文件,利用系统对文件类型检测不严的漏洞。
二、添加或修改上传类型
许多脚本程序的上传模块允许用户添加上传类型,攻击者可以通过修改上传类型来绕过限制,上传Webshell。
操作方式:
①在后台管理界面中,找到上传类型设置选项。添加允许上传的文件类型,如
.asa
、.asp
、.php.gif
等。②由于某些服务器或脚本解析引擎对文件后缀的解析存在漏洞,这些看似非可执行的文件类型实际上可以被当作脚本执行。
示例:
①在某些论坛系统的后台,添加
.asa
类型,然后上传.asa
后缀的Webshell文件。②利用PHP的特性,上传
.php.gif
文件,由于PHP会忽略点号后的内容,将其作为PHP脚本执行。
三、利用后台管理功能写入Webshell
进入网站后台后,通过修改配置文件或利用后台的某些功能,将Webshell代码写入服务器。
常见方法:
①修改配置文件:在后台找到网站配置文件(如
config.php
、web.config
等),直接插入Webshell代码。②利用友情链接等功能:某些系统允许用户添加友情链接,攻击者可以在链接名称或URL中写入Webshell代码。
示例:
1.在某论坛系统的后台,找到友情链接管理界面,添加一个新的友情链接,在链接名称处写入Webshell代码。
2.修改网站配置文件,如
config.php
,在其中插入<?php eval($_POST['cmd']); ?>
等代码。
四、利用后台数据库备份及恢复功能
许多网站后台提供数据库备份和恢复功能,攻击者可以通过该功能将Webshell代码写入数据库备份文件,然后恢复为Webshell文件。
操作步骤:
①上传一张包含Webshell代码的图片或文件。
②在后台数据库备份功能中,将上传的文件备份为可执行的脚本文件(如
.asp
、.php
)。③通过恢复备份文件,将Webshell部署到服务器上。
示例:
1.在某CMS系统的后台,上传一张包含
<% eval request("cmd") %>
代码的JPG图片。2.在数据库备份功能中,将该图片备份为
shell.asp
文件。3.通过恢复备份,将
shell.asp
文件部署到网站根目录。
五、利用解析漏洞
某些服务器或脚本解析引擎对文件后缀的解析存在漏洞,攻击者可以利用这些漏洞将非可执行文件类型解析为可执行脚本。
常见漏洞:
1.IIS解析漏洞:IIS服务器在某些情况下,会将
.asp;jpg
后缀的文件解析为ASP脚本。2.Apache解析漏洞:Apache服务器在解析PHP文件时,如果文件名中包含.php.
,会将其后的内容忽略,只解析.php
部分。示例:
1.利用IIS解析漏洞,上传
shell.asp;jpg
文件,服务器会将其解析为shell.asp
并执行。2.利用Apache解析漏洞,上传
info.php.jpg
文件,服务器会将其解析为info.php
并执行。
六、利用编辑器漏洞
许多网站在编辑界面使用了存在已知漏洞的编辑器,攻击者可以利用这些漏洞直接上传Webshell或配合解析漏洞进行攻击。
常见编辑器漏洞:
- FCKeditor漏洞:允许用户上传任意类型的文件,并通过修改文件后缀绕过限制。
- ewebeditor漏洞:存在文件上传类型绕过漏洞,允许上传非法的文件类型。
示例:
- 在使用FCKeditor的网站编辑界面中,上传一个
.php
后缀的文件,并通过修改文件后缀为.jpg
绕过限制。- 利用ewebeditor的漏洞,上传一个包含Webshell代码的
.asp
文件。
七、修改网站模板或脚本文件
攻击者可以通过修改网站模板或脚本文件,将Webshell代码嵌入其中,当页面被访问时,Webshell代码被执行。
常见方法:
1.修改模板文件:找到网站使用的模板文件(如
.html
、.asp
、.php
等),插入Webshell代码。2.修改脚本文件:在网站的脚本文件(如登录脚本、注册脚本等)中插入Webshell代码。
示例:
1.在某CMS系统的模板文件中,插入
<% eval request("cmd") %>
代码。2.修改网站的登录脚本文件,在登录成功后执行的代码中插入Webshell代码。
八、利用SQL注入写入Webshell
如果网站存在SQL注入漏洞,攻击者可以通过注入SQL语句,将Webshell代码写入数据库,然后利用数据库导出功能或文件包含漏洞将Webshell部署到服务器上。
操作步骤:
①利用SQL注入漏洞,获取数据库的管理权限。
②通过SQL语句,将Webshell代码写入数据库的某个表中。
③利用数据库导出功能或文件包含漏洞,将Webshell代码导出为文件并执行。
示例:
1.在存在SQL注入漏洞的网站中,注入
INSERT INTO users (username, password) VALUES ('admin', '<?php eval($_POST['cmd']); ?>')
语句,将Webshell代码写入users
表。2.通过某种方式(如文件包含漏洞)访问该记录,触发Webshell代码的执行。
九、文件包含漏洞
某些网站存在文件包含漏洞,攻击者可以利用该漏洞,上传一个包含Webshell代码的文本文件(如
.txt
),然后通过文件包含功能执行其中的代码。常见漏洞:
①本地文件包含:允许包含服务器上的任意文件。
②远程文件包含:允许包含远程服务器上的文件。
示例:
1.在存在本地文件包含漏洞的网站中,上传一个包含
<?php eval($_POST['cmd']); ?>
代码的shell.txt
文件。2.通过文件包含功能访问
shell.txt
文件,触发Webshell代码的执行。
十、其他高级方法
1.0day漏洞:指尚未被公开披露的软件漏洞,攻击者可以利用这些漏洞直接获取服务器的控制权。
2.社会工程学攻击:通过欺骗、诱导等手段,获取目标系统的访问权限或敏感信息,进而获取Webshell。
防范措施:
1.加强文件上传管理:严格限制上传文件的类型,对上传的文件进行严格的安全检测。
2.修复已知漏洞:定期更新网站软件和插件,及时修复已知的安全漏洞。
3.配置防火墙和入侵检测系统:配置防火墙规则,限制对敏感端口的访问;部署入侵检测系统,及时发现并阻止可疑的攻击行为。
4.定期备份数据:定期备份网站数据和配置文件,以便在遭受攻击时能够快速恢复。
5.加强权限管理:对网站文件和目录设置合理的权限,限制用户对敏感文件和目录的访问。
结语
不要只想努力成为一个成功的人
更要努力成为一个有价值的人
!!!