5up3rh3i'blog
最近大牛们都在讨论类似的问题,基本围绕一个问题,漏洞(或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. 不管是系统还是应用,很多的道理其实都是一样的