Day_2_文件上传漏洞
第二天
7.9
今天主要研究内容关于文件上传 File Upload 漏洞 ,Windows11 DVWA靶机
0x00 关于Webshell
1. 什么是Webshell
*Web:需要服务器开放的Web服务
*Shell: 取得对服务器某种程度上的操作权限
因此,webshell又指攻击者通过网站端口取得的对于服务器的一定操作权限,也被人称为后门工具,攻击者会利用漏洞将编写的攻击脚本上传到服务器中,将它与服务器中的正常文件一同放于服务器目录中。
浏览器的网站由许多文件组成,是一个大的目录文件,其中PHP等可以在网站上执行的文件,属于通常编写的脚本类型。
2.Webshell类型
包含大马,小马,打包马,内存马,托库马,一句话木马
PHP类型一句话木马
<?php
@eval($_REQUEST['cmd']);
?>
a. 其中$_REQUEST用于数据传递,可以用
$_GET、$_POST、$_COOKIES、$_REQUEST、$_FILE、$_SERVER
b. 从远程URL中获取数据
file_get_contents、curl、svn_checkout
c. 从本地磁盘文件读取数据
file、file_get_contents
整个脚本中,eval 用来将其后内容视为PHP代码执行;$_REQUEST 将接收的输入指令赋值给变量cmd
3. Webshell管理工具
中国蚁剑:
URL地址:传入的Webshell所在位置,获取权限,通过执行该php文件。
连接密码:输入的指令应该传入cmd中,为接受命令的变量名。
中国蚁剑的使用更加便利,也可以在url中输入ip//后门文件地址?cmd=system("calc")
"?"后面是传递的参数
0x01 关于Burpsuite无法连接靶机
通过Burpsuite直接连接靶机,发现无法抓包,抓不到本地(127.0.0.1)靶场的包。
为什么抓不到?
解决方法
采用本地ip去登录DVWA,Windows系统通过ipconfig查询本地网卡ip地址
找到本地ip 192.168.147.1 打开192.168.147.1/DVWA
要想实现抓包首先要保证浏览器网络设置正确(以火狐浏览器为例)
在火狐浏览器中打开设置
同时在Burpsuite中proxy,保证设置正确
在Intercept模块中打开开关,
若上传时卡住,再看bs就发现成功截获信息,要是有消息要更改加工一下,Forward就可传回原网页。
0x02 Medium-Level
题不难,用burpsuite抓包,然后修改上传的脚本的后缀名为php,包装后再次传回。
为什么可以代理加工
1. MIME类型验证
由于攻击者可以通过向服务器发送构建的请求来轻松控制 MIME 类型,因此攻击者很容易绕过此类验证。在这种程度上,攻击者可以轻松上传具有允许的 MIME 类型的恶意 PHP 文件,从而导致服务器泄露。
2. Blacklist文件扩展名
使用此机制的上传表单将检查正在上传的文件的扩展名,并将其文件扩展名与应用程序认为有害的扩展名列表进行比较。
但是黑名单十分危险,攻击者可以通过不同的大小写更改扩展名(pHP,PHp)
3. 双扩展
攻击者滥用双重扩展名,其中应用程序通过查找文件名中的字符并提取点字符后面的字符串来提取文件扩展名。
多个扩展名顺序无关紧要,但是除了语言和内容编码外,系统通常会使用最右边的扩展名来确定文件的类型。因此存在危险如果输入filename.php.jpg可能会绕过验证。
4.使用.htaccess保护上传文件夹
由于上传的文件可以并且将会覆盖现有文件,因此攻击者可以轻松地将现有的 .htaccess 文件替换为修改过的文件。
move_uploaded_file()
0x03 High-Level
我们发现单纯的抓包修改不了了,查看源码发现增加了对于后缀名的检查,依靠对文件头字段与后缀进行的双重检查,整体更严格了。
进行图片马的构造,将图片与php文件合并为一起
Win:copy 1.jpg/b+shell1php/a shell5.php Lin:cat shell3.php >> shell5.jpg cat 1.jpg >> shell3.jpg 或 cat file1.txt file2.txt file3.txt > merged.txt
但是此题无法直接访问,只能通过page访问图片文件执行
url:?page=file:///D:\phpstudy_pro\WWW\dvwa\hackable\uploads/shell5.jpg
重点
-
上传Webshell
-
找到上传Webshell位置
-
执行Webshell