一般通用性web程序流程

hacker4年前黑客文章555

一般通用性web程序流程是假如想要知道域名并不是一件简易的事儿,假如用一个固定不动的URI来做为网站域名会出现各种各样不便。开发者一般是依靠HTTP Host header(例如在php里是_SERVER[“HTTP_HOST”] ),而这一header许多状况下是不可靠的。而许多运用是立即把这个值不做html编号便輸出来到网页页面中,例如:

  1. <link href="http://_SERVER['HOST']"    (Joomla)

 

也有的地区还包括有secret key和token:

  1. <a href="http://_SERVER['HOST']?token=topsecret">  (Django, Gallery, others)

 

那样解决难题一般会非常容易遭受到二种普遍的进攻:缓存文件环境污染重置密码

1、缓存文件环境污染就是指 *** 攻击根据操纵一个缓存文件系统软件来将一个恶意站点的网页页面回到给客户。

2、重置密码这类进攻关键是由于发给客户的內容是能够环境污染的,换句话说能够间接性的被劫持发送邮件內容。

 

一、重置密码环境污染进攻

拿 Gallery 这一站来做事例。在我们开展重置密码的情况下,网址会让我们推送一个任意的key:

  1. $user -> hash = random::hash() ;
  2. $message -> confirm_url = url::abs_site("password/do_reset?key=$user->hash") ;

 

当客户点一下密码重置的连接时,毫无疑问能够表明点的是自身的帐户。

重置密码环境污染进攻

 

这个地方的系统漏洞是: url::abs_site 这一部分应用的Host header是来源于客户密码重置的恳求,那麼 *** 攻击能够根据一个受他操纵的连接来环境污染重置密码的电子邮件。

  1. POST /password/reset HTTP/1.1
  2. > Host: evil.com
  3. > ...
  4. > csrf=1e8d5c9bceb16667b1b330cc5fd48663&name=admin

 

这一系统漏洞在Django,Piwik 和Joomla上都存有,也有一些别的的运用,架构和类库。

自然这类拒绝服务攻击一定要能骗领客户点一下浏览这一受环境污染的连接,假如客户警惕了沒有点一下,那麼进攻便会不成功。自然你自己还可以相互配合一些社会工程学的方式来确保进攻的通过率。

也有一些状况,Host将会会被url编号后立即放进email的header里边导致header引入。根据这一, *** 攻击能够非常容易的就能被劫持客户的帐户。

 

二、缓存文件环境污染

根据Host header来环境污染缓存文件的进攻方式最开始是Carlos Beuno 在2008年明确提出来的。可是在如今的 *** 结构中,这类进攻還是较为艰难的,由于如今的缓存文件机器设备都可以鉴别Host。例如针对下边的这二种状况她们绝对不会弄搞混:

  1. GET /index.html HTTP/1.1       > GET /index.html HTTP/1.1
  2. > Host: example.com              > Host: evil.com

 

因而以便能使缓存文件能将环境污染后的response回到给客户,大家还务必让cdn加速见到的host header 和运用见到的host header 不一样。

例如针对Varnish(一个很知名的缓存文件服务项目手机软件),能够应用一个拷贝的Host header。Varnish是根据最开始抵达的恳求的host header来鉴别host的,而Apache则是看全部恳求的host,Nginx则仅仅看最后一个恳求的host。这就代表着你能根据下边这一恳求 来蒙骗Varnish做到环境污染的目地:

  1. > GET / HTTP/1.1
  2. > Host: example.com
  3. > Host: evil.com

 

运用自身的缓存文件也将会遭受环境污染。例如Joomla就将获得的host值没经html编号便写进随意网页页面,而它的缓存文件则对这种沒有一切解决。例如能够根据下边的恳求来载入一个储存型的xss:

  1. curl -H "Host: cow\"onerror=\'alert(1)\'rel=\'stylesheet\'" http://example.com/ | fgrep cow\"

 

事实上的恳求是那样的:

  1. > GET / HTTP/1.1
  2. > Host: cow"onerror=\'alert(1)\'rel=\'stylesheet\'

 

回应实际上早已遭受环境污染:

  1. <link href="http://cow"onerror='alert(1)'rel='stylesheet'/" rel="canonical"/>

这时候只必须访问主页看是不是有弹出窗口就了解缓存文件是不是早已被环境污染了。

 

安全性的配备:

1、 *** 服务器层面必须做的

因为http恳求的特性,host header的值实际上是不能信的。唯一可靠的仅有SERVER_NAME,这一在Apache和Nginx里能够根据设定一个vm虚拟机来纪录全部的不法host header。在Nginx里还能够根据特定一个SERVER_NAME名册,Apache还可以根据特定一个SERVER_NAME名册并打开UseCanonicalName选择项。提议二种方式另外应用。

 

2、运用自身必须做的

处理这个问题实际上是很艰难的,由于沒有彻底自动化技术的方式来协助网站站长识 别什么host 的值是非常值得信赖的?尽管做起來有点儿不便,可是最安全性的作法是:仿效Django的方式,在网址安裝和复位的情况下,规定管理人员出示一个可信任站点的网站域名授权管理。假如这一完成起來较为艰难,那最少还要确保应用SERVER_NAME而不是host header,而且激励客户应用安全性配备做的比较好的网站。

标签: 黑客技术

相关文章

nginx&IIS7.0&IIS7.5+php解析拿webshell

上传地址:http://chncto.com/bluesword/blue_sword.php?t=t_upload&Action=PostMsg 已使用解析拿下shell。...

GnuPG的典型性主要用途是啥?

GnuPG的典型性主要用途是啥?

什么叫GnuPG? GnuPG是由Phil Zimmerman最开始撰写的著名的系统加密。它协助客户维护她们的数据信息免遭风险性。它是PGP规范的开源系统完成。   GnuPG是完全免费的...

aspmaker如何实现超级管理员与普通管理员登陆后台

aspmaker如何实现超级管理员与普通管理员登陆后台

后台管理员是网站后台必不可少的一个环节,如何使用aspmaker实现超级管理与普通管理员登陆后台。下面就详细讲解一下。 第一步,首先打开一个已经设置好的aspmaker文件,在工具条中点击“...

dSniff的典型性主要用途是啥?

dSniff的典型性主要用途是啥?

什么叫dSniff? dSniff是由Dug Song建立的数据流量剖析和登陆密码嗅探工具,用以分析各种各样运用协议书并获取有关数据信息。dsniff,mailsnarf,filesnarf,msg...

全新提权免杀asp木马病毒

全新提权免杀asp木马病毒

一个能够绕开当今目前市面上基本上全部Webshell查杀的免杀PHP一句话木马脚本制作。...

AcunetixWVS的典型性主要用途是啥?

AcunetixWVS的典型性主要用途是啥?

什么是Acunetix WVS? Acunetix是一个Web漏洞检测程序流程,可全自动查验Web程序运行的系统漏洞,比如跨网站脚本制作,SQL引入,身份认证网页页面上的明文密码抗压强度和随意文件创...