百度空间 | 百度首页 
 
查看文章
 
web安全漏洞(bug)的利用
2009-11-04 22:37
web安全漏洞(bug)的利用

最近大牛们都在讨论类似的问题,基本围绕一个问题,漏洞(或bug)的利用要看具体的场景.主要分2个情况:

1.漏洞(或bug)在某些场景可以利用,在某些场景不可以利用
2.漏洞(或bug)在某些场景可以利用的价值更大

这里我也举几个例子说明这个问题

0x01 xss vs httponly

在pstzine0x01里在<利用httponly提升应用程序安全性>一文里介绍了httponly代码的安全效果,这个其实就和ms在windows系统上采取的那些措施一样,只是提高了利用的门槛.但是对于会一点点js编程的朋友来说,httponly根本没有太大的作用.

今天还有个朋友问我dom xss和其他的xss利用有什么不同,我的回答是"xss的本质是就是可以执行js/html,你的js/html水平有多牛,那么你的xss利用就有多牛" 抓做这个本质,你就可以写出你自己需要功能的playload.比如利用xmlhttp去执行http请求,得到返回数据,那么你根本就不需要另外得到cookie再通过第3方程序通过这个cookie取数据了...

现在在很多mailxss(如hotmail)的利用程序里有应用

0x02 xss vs cookie-domain

xss和cookie是分不开的,而大多的网站对具体的应用不同,cookie的domin也不样,比如google里的:mail与wwww域.但近来一些"黑客实用主义者"过分的强调了这个关系.很多人认为在www下的普通xss因为不可以跨到mail而认为它没什么太大作用,只可以alert()弹弹筐YY/SY一下,但是在某些场景里有着特殊而且重要的利用.还是那句话'取决于你的js/html等的水平'...

0x03 sql-injection vs password-hash

这里我们不谈论具体数据库权限和操作系统之间的一些利用.只谈论大多数情况下的select的注射.目前世面上的大多应用程序注射的exp基本都是得到用户名和密码hash,这个hash很多都是用的md5,虽然在目前在那些大型数据库保存md5hash里很容易查询出明文,也是看到这个原因,很多应用程序不再采用纯粹的md5的方式...所以根本很难破解或者查询...但是对于具体的应用程序的场景了,很多情况下是可以得到更大的利用的. 首先你要知道select的注射的本质是可以查询你当前权限下的所有数据.你理解了这个,对于很多具体的应用程序,都是可以直接执行代码的....

0x04 其他一些具体的场景下的应用

记得flyhat牛发现的dedecms的一个漏洞<DedeCMSV53任意变量覆盖漏洞>,当时这个漏洞要具体利用其他是比较麻烦的,我在看代码的时候发现dedecms的有个功能存在着潜在的问题:它默认把mysql出错的信息保存在
mysql_error_trace.php文件里

DedecmsV53-GBK-Final\upload\include\dedesql.class.php

function DisplayError($msg)
{
$errorTrackFile = dirname(__FILE__).'/../data/mysql_error_trace.php';
$emsg = '';
$emsg .= "<div><h3>DedeCMS Error Warning!</h3>\r\n";
$emsg .= "<div><a href='http://bbs.dedecms.com' target='_blank' style='color:red'>Technical Support: http://bbs.dedecms.com</a></div>";
$emsg .= "<div style='line-helght:160%;font-size:14px;color:green'>\r\n";
$emsg .= "<div style='color:blue'><br />Error page: <font color='red'>".$this->GetCurUrl()."</font></div>\r\n";
$emsg .= "<div>Error infos: {$msg}</div>\r\n";
$emsg .= "<br /></div></div>\r\n";

echo $emsg;

$savemsg = 'Page: '.$this->GetCurUrl()."\r\nError: ".$msg;
//保存MySql错误日志
$fp = @fopen($errorTrackFile, 'a');
@fwrite($fp, '<'.'?php'."\r\n/*\r\n{$savemsg}\r\n*/\r\n?".">\r\n");
@fclose($fp);
}

那么只要让mysql出错就可以得到shell了,利用flyhat发现的那个很容易让mysql出错.... [ps:利用数据库出错得到shell的这个漏洞,已经有人发现并且公布了]

这里只所以引用这个漏洞,只是觉得和大牛谈论那个进程崩溃于特定场景的利用有'异曲同工'的效果?

另外还有一个具体的列子:<关于最近ipb那2个注射漏洞>


小结:

1. 漏洞(bug)的利用离不开具体场景
2. 哪些场景让漏洞(bug)发挥最大的威力(具体场景具体分析)
3. 不管是系统还是应用,很多的道理其实都是一样的

类别:默认分类 | | 添加到搜藏 | 分享到i贴吧 | 浏览() | 评论 (6)
 
最近读者:
 
网友评论:
1
2009-11-05 09:54 | 回复
黑客使用主义者
 
2
2009-11-05 10:05 | 回复
顶老中医
 
3
2009-11-05 11:50 | 回复
呵呵,天时地利人和啊,这句话从古至今就说明了干好一件事的必备条件...
 
4
2009-11-06 14:04 | 回复
对http-only这点不同意,如果没有cookie的话,你通过js的所有操作都是暂时性的,对方一关IE你还能操作码?但是有了cookie,可以通过刷新的方法一直保持有效,因为大多数WEB应用都没有防这招。
 
5
2009-11-06 15:47 | 回复
回复idnux:这个怎么说呢,主要是由于yahoo一直没有用httponly所以对于维持cookie的这个很多人去研究了,据说有人对点退出还有可以永久维持?

但是有的东西你只要去研究怎会有那么点收获的,一个很好的列子:
http://hi.baidu.com/xisigr/blog/item/aebf0728590b72f698250acc.html
http://hi.baidu.com/xisigr/blog/item/3d875fd1cd95f387a1ec9c24.html

 
6
2009-11-06 15:48 | 回复
而且我文章里主要是对于那些有httponly的以往都是用来钓鱼来说的
 
发表评论:
姓 名:
网址或邮箱: (选填)
内 容:
验证码: 请点击后输入四位验证码,字母不区分大小写
      

     

©2010 Baidu