引文
之前分别讲了WEB常见的安全漏洞,各个漏洞基本都已经讲完,本文给大家总结一下我们讲的这些漏洞,来帮助大家构建思维导图,让大家对WEB漏洞的理解变得更深。本文会配合靶场来演示这些漏洞。
靶场布置
作为新人入门的靶场,DVWA再适合不过了,靶场里面包含众多WEB漏洞供我们测试,而且难度对新人非常友好。
DVWA中包含的web漏洞:
暴力破解:HTTP表单暴力破解登录页面;用来测试密码暴力破解工具,展示弱口令的不安全性。
命令执行:在底层操作系统上执行命令。
伪造跨站请求:启动一个“攻击者”更改应用的管理员密码。
文件包含:允许“攻击者”将远程/本地文件包含到Web应用程序中。
SQL注入:启动一个“攻击者”将SQL语句注入到HTTP表单的输入框中,DVWA包括基于(盲注)和错误的SQL注入。
不安全文件上传:允许“攻击者”将恶意文件上传到web服务器。
跨站脚本(XSS):“攻击者”可以将自己编写的脚本注入到web应用或数据库中,DVWA包含反射型和存储型XSS。
作为新手靶场,它的部署也非常简单,比如我们要部署到本地,只需DVWA靶场文件与PHPSTUDY。
首先再官网下载源文件:
我们打开PHPSTUDY配置环境,在PHPSTUDY目录文件里布置DVWA源码,访问本地(127.0.0.1)即可。
SQL注入漏洞
这应该是最常见的WEB漏洞了,其原理大致是Web应用程序对用户的输入没有做严格的判断,导致用户可用将非法的SQL语句拼接到正常的语句中,被当作SQL语句的一部分执行。基本的注入类型:
UNION query SQL injection(联合查询注入)
Error-based SQL injection(错型注入)
Boolean-based blind SQL injection(基于布尔的盲注)
Time-based blind SQL injection(基于时间的盲注)
Stacked queries SQL injection(可多语句查询注入)
下面来演示一下最简单的手工注入:
查询框我们随便输入1回显了ID为1的用户信息,假设我们输入1’
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘‘1’’’ at line 1
返回了我们错报信息,判断存在SQL注入,用orderby查询到两列数据,于是我们判断回显点:
在回显点查询当前数据库返回给了我们信息,说明可行,接下来就是基本查询表名列名字段名。
查询表明:
1’ union select 1,group_concat(table_name) from information_schema.tables where table_schema = ‘dvwa’#
查询表user里面的字段
1’ union select 1 , group_concat(column_name) from information_schema.columns where table_name = ‘users’ #
发现存在密码字段,我们进行查询:
1’ union select user,password from users#
得到密码:
暴力破解
暴力破解可以理解为穷举所有可能的条件,一般利用于用户密码的爆破,将密码进行逐个推算直到找出真正的密码为止。我们将在常用的密码字典中穷举出正确的密码。
比如如下一个登录页面:
我们点击登陆时进行BURPSUITE抓包,使用BURP内置的爆破模块来标记我们要爆破的地方:
之后导入字典开始进行攻击(ATTACK):
发现有一个请求的回显长度不一样,判断为正确的密码,爆破成功。
文件上传
攻击者可以上传一个与网站脚本语言相对应的恶意代码动态脚本到服务器上,然后访问这些恶意脚本中包含的恶意代码,从而获得了执行服务器端命令的能力,进一步影响服务器安全。如果Web 服务器所保存上传文件的可写目录具有执行权限,那么就可以直接上传后门文件,导致网站沦陷。我们还是通过靶机进行演示:
一个文件上传的点,通过上传文件发现什么都没有过滤,于是我们尝试上传一句话木马。
上传成功后利用菜刀去进行连接。
扩展:一句话木马格式如下:
<?php @eval($_POST[‘attack’]) ?>
XSS漏洞
跨站脚本攻击。它指的是恶意攻击者往web页面插入恶意的html代码。当用户浏览该页面时,嵌入到web里面的html代码会被运行,从而达到恶意攻击用户的特殊目的(比如影响网站运行,窃取管理员COOKIE)。
可以简单分为如下几类:
反射型xss:不会永久存储用户的数据,仅发生在用户的一次访问之后。
存储型xss:攻击代码被持久化保存在服务器上,不会因为一次访问就消失,持久攻击。
DOM型不需要与服务器端交互的,它只发生在客户端处理数据阶段。
看看靶机里面的题:
一个搜索框,我们传入最基本的XSS语句:
<script>alert(/xss/)</script>
提交之后网页就出现了名为XSS的弹窗,原理也很简单就是在网页里面插入了一个alter语句来拼接代码。
命令执行
命令执行就是在需要输入数据的地方输入了恶意代码,而且系统并没有对其进行过滤或者其他处理导致恶意代码也被执行,最终导致数据泄露或者正常数据被破坏。常用的命令执行漏洞也是我们常见的系统命令(比如exec,cat等),通常不会让我们直接执行命令,而是需要一定的过滤来绕过检测,举一些拼接例子:
A&B(简单的拼接,AB之间无制约关系)
A&&B(A执行成功才会执行B)
A|B(A的输出作为B的输入)
A||B(A执行失败,然后才会执行B)
比如有一个ping命令的搜索框,我们传入本地地址,得到回显如上,假设我们像下面一样拼接:
这就是一个简单的拼接,成功查看了用户信息。
结语
今天带来的是WEB常见漏洞的总结配合了一个比较简单的靶场,适合新手入门,有兴趣的小伙伴可以自己尝试搭建环境来做一下这些题目,如果喜欢本文,不妨一键三连。# 学习计划安排
我一共划分了六个阶段,但并不是说你得学完全部才能上手工作,对于一些初级岗位,学到第三四个阶段就足矣~
这里我整合并且整理成了一份【282G】的网络安全从零基础入门到进阶资料包,需要的小伙伴可以扫描下方CSDN官方合作二维码免费领取哦,无偿分享!!!
如果你对网络安全入门感兴趣,那么你需要的话可以
点击这里👉网络安全重磅福利:入门&进阶全套282G学习资源包免费分享!
①网络安全学习路线
②上百份渗透测试电子书
③安全攻防357页笔记
④50份安全攻防面试指南
⑤安全红队渗透工具包
⑥HW护网行动经验总结
⑦100个漏洞实战案例
⑧安全大厂内部视频资源
⑨历年CTF夺旗赛题解析