黑客攻防:在WEB程序中隐藏后门
2008-12-27 16:52:32 来源:WEB开发网……Manager amanager[] = null;……//调用searchManager方法
amanager = Manager.searchManager(s);……
继续往下找,Manager 类的searchManager方法。图3
图3
看到了吧!这个程序从这条SQL语句上做了手脚,让客户在后台查询所有管理员时看不到'ilovethisgame'这个用户,记录日志的时候,也同样使用了类似的方法,导致系统日志忽略了该用户。而程序的其他地方,比如修改管理员、登陆,等地方不受影响。
这个例子,总体上来说思想很有创意,但是手法上并不成熟,只要看到了代码,或者看到了数据库的数据,就会被我一层一层抓出来,甚至在我以前不懂JSP的情况下还把后门揪了出来。而且数据库里的管理员表里的数据也很明显,一旦客户使用mysqladmin一类的工具浏览数据库,不就曝光了?后门的“覆盖面”有点大,容易被客户的数据库管理员发现。
MYSQL 5.0版本已经支持了存储过程,针对这个例子,应该把后门放到数据库的存储过程中,这样程序里就不会出现这么明显的痕迹。当客户查看代码时,只能看到一个返回结果集的存储过程,把这句"SELECT * FROM csmmanager WHERE managerid {} 'ilovethisgame'"封装到存储过程里。在登陆的时候也调用一个返回值是布尔的存储过程,判断如果用户是ilovethisgame时,直接通过。效果是一样的,却很隐蔽,代码简单,我就不写了,只提供个思路。
总的来说,我们应该尽量减少代码里的后门痕迹,把侧重点扔到数据库上。有这么几大好处。
1, 避免了后门覆盖面太大,降低被发现的风险。
2, 代码开发管理员不必都知道有这么一个后门,等程序开发完成,就由某个特定的人把数据库的存储过程一改。
3, 存储过程可以加密,又降低了风险。
4,即使暴露,可以解释为测试程序时遗留的小问题。利于推卸责任。
5, 有一天需要清除后门,只需给数据库加个SQL文件补丁就可以了。
可以想象,如果我给你个试用版,而你一直不买正版,我对你不满,随时可以在任何地方登陆你的后台,做出一些合法(程序上允许)而不合法(你不希望出现)的操作,系统上没有日志,然后告诉你这个“现象”属于试用版BUG…(黑…真黑…)
图4
- ››web安全之信息刺探防范1
- ››webqq 最新加密算法
- ››webdriver 数据库验证方法
- ››WebSphere Application Server 7.0 XML Feature P...
- ››Web2.0网络时代基于社会影响力的声望值
- ››Web服务器搭建:配置Linux+Apache+Mysql+PHP(或Pe...
- ››WebLogic调整Java虚拟机性能优化参数
- ››webqq2.0协议研究(3)-ClientId生成
- ››Web.config配置文件
- ››WebBrowser组件的execWB方法——Delphi控制浏览器...
- ››Web前端设计模式--制作漂亮的弹出层
- ››WebSphere 反向投资者: 解决 WebSphere Applicati...
更多精彩
赞助商链接