| 网站首页 | 资讯 | 影音 | 图片 | 论坛 | 模拟驾考 | 免费取名算命 | 瓷都工具 | 留言本 | 域名 | 瓷都商城 | 汇款 | 
您现在的位置: 瓷都热线|诚信中国:“一就是一”(1941.CN) >> 资讯 >> 教程技巧0 >> 服务器类 >> 正文 登录 注册
专 题 栏 目
最 新 热 门
最 新 推 荐
相 关 文 章
IIS下配置Php+Mysql+zen
PHP网站漏洞的相关总结
PHP木马的攻击的防御之道
PHP、MySQL教程
Apache、php、mysql在wi
拥有图形界面的Win平台A
IIS+PHP+MySQL+Zend Opt
PHP安全之:重燃你的PHP安全之火         ★★★
PHP安全之:重燃你的PHP安全之火
作者:未知 文章来源:enet论坛 更新时间:2006-8-4 23:02:57
【声明:转载此信息在于传递更多信息,其内容表达的观点并不代表本站立场,由这些信息所产生的一切后果本站不负任何责任。如果您对本信息有什么意见,欢迎和本站联系,谢谢!】http://CiDu.Net

  对于特殊字符的重视

  对于特殊字符,有句话叫All puts is invalid.外国人文章里这句话很常见的。所有输入都是有害的。你永远不要对用户所输入的东西省心,为了对付这些危害,程序员都在忙着过滤大把大把的字符,唯恐漏了什么。而有些程序员呢?好像从没注意过这些问题,从来都是敞开漏洞大门的。不说废话,还是先看看下面这些东西吧。

  1.其实程序的漏洞里最关键,最让开发者放心不下的就是带着$符号的美元符号,变量,对于找漏洞的人来说,抓着变量两个字就是一切。就像目录遍历这个bug,很多邮件程序都存在,开发者考虑的很周全,有的甚至加上了网络硬盘这个东西,好是好,就像

  http://mail.com/file.php?id=1&put=list&tid=1&file=./

  要是我们把file这个变量换成./../甚至更上层呢?目录就这样被遍历了。

  2.尖括号"<>"跨站你不会不知道吧,一些搜索栏里,文章,留言,像前段时间phpwind附件那里的跨站等等。当然,对于跨站问题,你要过滤的远远不止尖括号。不怕过滤时漏掉什么,而是怕你想不起要去过滤。

  3.斜杆和反斜杆:对于/和\的过滤,记得魔力论坛的附件下载处的原代码泄露吗?

  attachment.php?id=684&u=3096&extension=gif&attach=.\..\..\..\..\..\..\includes\config.php&filename=1.gif

  对于过滤.. / \的问题,像windows主机不仅要过滤../还要过滤..\,windows主机对\会解析为/,这些细节跟SQL injection比起来,什么才叫深入呢?

  4.对于反引号(``),反引号在php中很强大,它可以执行系统命令,就像system()这些系统函数一样,如果用户的恶意语句被它所执行的话就会危害服务器,我想除了服务器设置的很好以外,对于它们,你还是老老实实的过滤好吧。

  5.对于换行符,NULL字符等等,像"\t,\x0B,\n,\r,\0这些,这些都是很有用的,像动网以前的上传漏洞就是因为上传中的NULL(\0)字符引起的,对于这些能随意截断程序流程的字符,你说我们在检测的时候应该有多细心呢?

  6.分号(;)和分割符( )

  分号截断程序流程,就像这个

  shell_exec("del ./yourpath/$file"); //使用系统函数shell_exec删除文件$file

  变量$file没指定,那么直接写zizzy.php;del ./yourpath ,这样你的yourpath目录也就被del了。

  分割符( )是UNIX里自带的管道函数,可以连接几条命令来执行。有时候加在过滤不严的系统函数中执行。

  逻辑错误

  验证不完全和一些逻辑错误在程序里也很容易找到,特别是现在的程序员,只顾深入的学习,而对于逻辑错误等等这样的安全意识都没有培养的意识,其实这是是靠自己去培养,而不是等着人来报告bug给你。对于逻辑错误的判断,我们只能说,多练练吧,经验才是最重要的。

  1.对于登陆验证的问题。举个例子:我们看某论坛的admin.php片断

  它这里username 和 password好像不对劲吧,存在管理员的username和password就直接通过验证,那就意味着没有用户名,没密码也行吧。我们提交

  GET /bbs/admin/index.php?page=general HTTP/1.1
  Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, */*
  Accept-Language: zh-cn
  Accept-Encoding: gzip, deflate
  User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Maxthon)
  Host: 127.0.0.1
  Connection: Keep-Alive
  Cookie: username=’or isnull(1/0) AND level=3/*; password=;

  这是我们伪造的一个数据包(你问我咋伪造地?抓包再修改呗),我们使用GET来提交数据,原理也就是在cookie这里构造欺骗语句。

  接着,整个SQL语句就成这样

  SELECT * FROM users WHERE username=’’or isnull(1/0) AND level=3/*’ AND password=’’

  这里仅仅用一个’or’=’or’的原理,就把username和password的检测给绕开了,而level=3则是伪造的等级。从而就饶过了检测,进入了管理后台。

  对于后台的验证不能这么马虎,两行代码就算完事,你还得从SESSION(会话),Cookie这些地方来增强验证。

  2.上传漏洞

  有次我看到在一个程序config.php里对上传文件类型限制是这样的

  $IllegalExtentions = array(’exe’,’asp’,’php’,’php3’,’bat’,’cgi’,’pl’,’com’,’vbs’,’reg’,’pcd’,’pif’,’scr’,’bas’,’inf’,’vb’,’vbe’,’wsc’,’wsf’,’wsh’); //对于上传文件的限制,只允许上传exe,asp,php,php3,bat,cgi,pl,com,vbs,reg,pcd,pif,scr,bas,inf,vb,vbe,wsc,wsf,ws’这些文件。

  规定不许用户上传什么什么文件,其它都可以上传,这种逻辑好不好呢?如果我上传.inc, ,.php4 .phtml, .html, .pwml 这样的类型呢?为什么你不把这种逻辑思维改为规定用户除了这几种文件能传,其它的统统不允许上传。就像这样,数组改成逆向的思维。

  $IllegalExtentions = array(’rar’,’gif’,’jpg’,’bmp’,’pdf’)//只能上传rar,gif,jpg,bmp,pdf几种格式

  其实这个跟你们上传cer,asa是一个道理。

  3.典型的逻辑错误

  在一些cms(整站程序)中随便注册个用户,你会发现修改资料的地方不要求输入原来的密码,只通过判断用户id或者email,你把网页保存到本地,把id或email改成管理员的,action 改为修改提交地址,提交你就成了管理员。解决办法不太难,只要我们增加密码验证,增强那个mysql的update语句的过滤也就ok了。

  这些我们也没办法,多数程序员对于安全根本不去在意,本来一个人可以去做的事,为什么偏偏要分出搞web安全的和web开发两种人呢?

上一页  [1] [2] [3] 下一页


声明:以上信息资料大都是网上搜集而来,版权归作者,如有版权问题请留言告知我将马上改正。
文中所提到的各种观点只是原文观点,各种说法未经一一确认。并不代表本站认可此观点!!
资讯录入:admin    责任编辑:admin 
  • 上一篇资讯:

  • 下一篇资讯:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    点击数:
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)