网站安全(20) —— 语义URL攻击

好奇心是很多攻击者的主要动机,语义URL 攻击就是一个很好的例子。此类攻击主要包括对URL
进行编辑以期发现一些有趣的事情。
-
什么是语义URL
攻击?
 
好奇心是很多攻击者的主要动机,语义URL
攻击就是一个很好的例子。此类攻击主要包括对URL
进行编辑以期发现一些有趣的事情。
 
例如,如果用户chris
点击了你的软件中的一个链接并到达了页面http://www.2cto.com /private.php?user=chris,
很自然地他可能会试图改变user的值,看看会发生什么。例如,他可能访问http://www.2cto.com /private.php?user=rasmus
来看一下他是否能看到其他人的信息。虽然对GET 数据的操纵只是比对POST
数据稍为方便,但它的暴露性决定了它更为频繁的受攻击,特别是对于攻击的新手而言。
 
大多数的漏洞是由于疏漏而产生的,而不是特别复杂的原因引起的。虽然很多有经验的程序员能轻易地意识到上面所述的对URL
的信任所带来的危险,但是常常要到别人指出才恍然大悟。
 
为了更好地演示语义URL
攻击及漏洞是如何被疏忽的,以一个Webmail
系统为例,该系统主要功能是用户登录察看他们自己的邮件。
 
任何基于用户登录的系统都需要一个密码找回机制。通常的方法是询问一个攻击者不可能知道的问题(如你的计算机的品牌等,但如果能让用户自己指定问题和答案更佳),如果问题回答正确,则把新的密码发送到注册时指定的邮件地址。
 
对于一个Webmail
系统,可能不会在注册时指定邮件地址,因此正确回答问题的用户会被提示提供一个邮件地址(在向该邮件地址发送新密码的同时,也可以收集备用邮件地址信息)。下面的表单即用于询问一个新的邮件地址,同时他的帐户名称存在表单的一个隐藏字段中:
复制代码
代码如下:
<input type="hidden" name="user" value="chris"
/>
<p>Please specify the email address where you want
your new password sent:
 
<input
type="text" name="email" />
 
<input
type="submit" value="Send Password"
/>
</form>
 
可以看出,接收脚本reset.php
会得到所有信息,包括重置哪个帐号的密码、并给出将新密码发送到哪一个邮件地址。
 
如果一个用户能看到上面的表单(在回答正确问题后),你有理由认为他是chris
帐号的合法拥有者。如果他提供了
作为备用邮件地址,在提交后他将进入下面的URL:
 
http://www.2cto.com
/reset.php?user=chris&email=chris%40www.2cto.com
 
该URL
出现在浏览器栏中,所以任何一位进行到这一步的用户都能够方便地看出其中的user和mail
变量的作用。当意思到这一点后,这位用户就想到
是一个非常酷的地址,于是他就会访问下面链接进行尝试:
 
http://www.2cto.com
/reset.php?user=php&email=chris%40www.2cto.com
 
如果reset.php
信任了用户提供的这些信息,这就是一个语义URL 攻击漏洞。在此情况下,系统将会为php 帐号产生一个新密码并发送至,这样chris 成功地窃取了php
帐号。
 
如果使用session
跟踪,可以很方便地避免上述情况的发生:
复制代码
代码如下:
<?php
session_start();
$clean
= array();
$email_pattern =
‘/^[^@\s<&>][email protected]([-a-z0-9]+\.)+[a-z]{2,}$/i‘;
if
(preg_match($email_pattern,
$_POST[‘email‘]))
{
$clean[‘email‘] =
$_POST[‘email‘];
$user =
$_SESSION[‘user‘];
$new_password = md5(uniqid(rand(),
TRUE));
if
($_SESSION[‘verified‘])
{
/* Update Password
*/
mail($clean[‘email‘], ‘Your New Password‘,
$new_password);
}
}
?>
 
尽管上例省略了一些细节(如更详细的email
信息或一个合理的密码),但它示范了对用户提供的帐户不加以信任,同时更重要的是使用session
变量为保存用户是否正确回答了问题($_SESSION[‘verified‘]),以及正确回答问题的用户($_SESSION[‘user‘])。正是这种不信任的做法是防止你的应用产生漏洞的关键。
 
其实,只要记住以下的原则就行了
-- 不要相信任何用户的输入

时间: 2024-08-09 21:51:56

网站安全(20) —— 语义URL攻击的相关文章

php网站常见的几种攻击方式(转)

针对 PHP 的网站主要存在下面几种攻击方式::1.命令注入(Command Injection)2.eval 注入(Eval Injection)3.客户端脚本攻击(Script Insertion)4.跨网站脚本攻击(Cross Site Scripting, XSS)5.SQL 注入攻击(SQL injection)6.跨网站请求伪造攻击(Cross Site Request Forgeries, CSRF)7.Session 会话劫持(Session Hijacking)8.Sessio

(转载)ASP网站如何防止注入漏洞攻击

SQL注入是从正常的WWW端口访问,而且表面看起来跟一般的Web页面访问没什么区别,所以目前市面的防火墙都不会对SQL注入发出警报,如 果管理员没查看IIS日志的习惯,可能被入侵很长时间都不会发觉.但是,SQL注入的手法相当灵活,在注入的时候会碰到很多意外的情况.能不能根据具体情 况进行分析,构造巧妙的SQL语句,从而成功获取想要的数据. 据统计,网站用ASP+Access或SQLServer的占70%以 上,PHP+MySQ占L20%,其他的不足10%.在本文,以SQL-SERVER+ASP例

Android安全之Intent Scheme Url攻击

0X01 前言 Intent scheme url是一种用于在web页面中启动终端app activity的特殊URL,在针对intent scheme URL攻击大爆发之前,很多android的浏览器都支持intent scheme url. Intent scheme url的引入虽然带来了一定的便捷性,但从另外一方面看,给恶意攻击页面通过intent-based攻击终端上已安装应用提供了便利,尽管浏览器app已经采取了一定的安全策略来减少这一类风险,但显然是不够的. 2014年3月,一篇关

PHP网站常见的几种攻击方式

PHP网站建设中常见的安全威胁包括:SQL 注入.操纵 GET 和 POST 变量.缓冲区溢出攻击.跨站点脚本攻击.浏览器内的数据操纵和远程表单提交. 1.防止SQL注入攻击 在 SQL 注入攻击 中,用户通过操纵表单或 GET 查询字符串,将信息添加到数据库查询中. 例如,假设有一个简单的登录数据库.这个数据库中的每个记录都有一个用户名字段和一个密码字段.构建一个登录表单,让用户能够登录. 解决这个问题的办法是,将 PHP 的内置 mysql_real_escape_string() 函数用作

网站如何防止sql注入攻击的解决办法

首先我们来了解下什么是SQL注入,SQL注入简单来讲就是将一些非法参数插入到网站数据库中去,执行一些sql命令,比如查询数据库的账号密码,数据库的版本,数据库服务器的IP等等的一些操作,sql注入是目前网站漏洞中危害最大的一个漏洞,受攻击的网站占大多数都是sql注入攻击. sql注入攻击用英语来讲Structured Query Language,在网站的编程语言当中是一种比较另类的网站开发语言,我们网站安全行业通常来讲sql是用来数据库查询的一种网站开发语言,同时也是一种脚本文件的一个文件名,

Android常见漏洞介绍(1):Intent Scheme URL 攻击

Intent scheme URL可以被web page用来启动某些组件,从而导致安全威胁.通过在浏览器中设置filter,控制intent的特性可以预防此类漏洞. 我做了一个简单的PPT介绍: http://files.cnblogs.com/files/yulele/schemeIntentURL.pdf

20145317彭垚《网络对抗》Exp7 网络欺诈技术防范

20145317彭垚<网络对抗>Exp7 网络欺诈技术防范 基础问题回答 通常在什么场景下容易受到DNS spoof攻击? 在同一局域网下比较容易受到DNS spoof攻击,攻击者可以冒充域名服务器,来发送伪造的数据包,从而修改目标主机的DNS缓存表,达到DNS欺骗的目的: 连公共场合的免费WiFi也容易受到攻击,尤其是那种不需要输入密码直接就可以连接的更加可疑. 在日常生活工作中如何防范以上两攻击方法? 可以将IP地址和MAC地址进行绑定,很多时候DNS欺骗攻击是以ARP欺骗为开端的,所以将

跨网站脚本攻击

1 前言 近年来,随着Web2.0的大潮,越来越多的人开始关注Web安全,新的Web攻击手法层出不穷,Web应用程序面临的安全形势日益严峻.跨站脚本攻击(XSS)就是常见的Web攻击技术之一,由于跨站脚本漏洞易于出现且利用成本低,所以被OWASP开放式Web应用程序安全项目(OWASP,Open Web Application Security Project)列为当前的头号Web安全威胁.本文将从跨站脚本漏洞的产生原理.攻击手法.检测方法和防御手段四个方面出发,全面的介绍跨站脚本漏洞的方方面面

你懂的网站、论坛、菠菜、竞价推广、网站防攻击服务器。安全专业。

常见的网站攻击有两种: 1,流量攻击,就是我们常说的DDOS和DOS等攻击,这种攻击属于最常见的流量攻击中的带宽攻击,一般是使用大量数据包淹没一个或多个路由器.服务器和防火墙,使你的网站处于瘫痪状态无法正常打开.但是这种攻击成本都会很高,所以遇到这样的攻击的时候大家不要惊慌,另外可以试试防御系统,这样的话攻击不会主要针对你的网站. 2, CC攻击,也是流量攻击的一种,CC就是模拟多个用户(多少线程就是多少用户)不停地进行访问那些需要大量数据操作(就是需要大量CPU时间)的页面,造成服务器资源的浪