一般通用性web程序流程

hacker5年前黑客文章599

一般通用性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,而且激励客户应用安全性配备做的比较好的网站。

标签: 黑客技术

相关文章

PHP一句话木马全集

PHP一句话木马全集

因为PHP一句话木马可以说有很多,简易的、中等水平的、繁杂的.......,今日主要是共享一些较为强大的一些PHP一句话木马全集;   一、运用404错误页掩藏PHP小龙 <!DOC...

Nessus 5.0 使用指南

参考官方手册 http://static.tenable.com/documentation/nessus_5.0_user_guide.pdf Nessus是世界上最流行的...

WinDbg可用以调节核心方式运行内存转储

WinDbg可用以调节核心方式运行内存转储

什么叫WinDbg? WinDbg,像OllyDbg,是由Microsoft派发的Microsoft Windows多功能程序调试。该黑客工具可用以调节客户方式程序运行,驱动软件和电脑操作系统自身,...

黑帽SEO真的黑吗?

黑帽SEO真的黑吗?

从事SEO的朋友应该对黑帽这个词并不陌生,有的甚至嗤之以鼻,有的避而远之,包括小马前段时间写的《一个菜鸟SEOer对白帽和黑帽SEO的理性思考》,也倡导大家要做白帽SEO,总之各有见解,难道黑帽S...

TripwireCorp企业如今致力于付钱公司配备操纵商品

TripwireCorp企业如今致力于付钱公司配备操纵商品

什么叫Tripwire? Tripwire是一个文件目录和文档md5验证器。此专用工具可协助计算机管理员和客户查验特定的文档集以开展变更。该专用工具能够 通告管理人员是不是有伪造或毁坏的文档,因而能...

织梦dedecms管理系统后台查找技巧

有时在通过注射得到织梦程序的管理密码时,却发现找不到后台地址。这样让大家很是蛋疼,下面我来介绍几种织梦系统找后台的方法。 织梦dedecms管理系统后台查找技巧 这个时候大家可以尝试下在地址...