WEB开发网
开发学院网络安全黑客技术 黑客攻防:在WEB程序中隐藏后门 阅读

黑客攻防:在WEB程序中隐藏后门

 2008-12-27 16:52:32 来源:WEB开发网   
核心提示: ……Manager amanager[] = null;……//调用searchManager方法amanager = Manager.searchManager(s);……继续往下找,Manager 类的

……Manager amanager[] = null;……//调用searchManager方法
amanager = Manager.searchManager(s);……

继续往下找,Manager 类的searchManager方法。图3

黑客攻防:在WEB程序中隐藏后门

图3

看到了吧!这个程序从这条SQL语句上做了手脚,让客户在后台查询所有管理员时看不到'ilovethisgame'这个用户,记录日志的时候,也同样使用了类似的方法,导致系统日志忽略了该用户。而程序的其他地方,比如修改管理员、登陆,等地方不受影响。

这个例子,总体上来说思想很有创意,但是手法上并不成熟,只要看到了代码,或者看到了数据库的数据,就会被我一层一层抓出来,甚至在我以前不懂JSP的情况下还把后门揪了出来。而且数据库里的管理员表里的数据也很明显,一旦客户使用mysqladmin一类的工具浏览数据库,不就曝光了?后门的“覆盖面”有点大,容易被客户的数据库管理员发现。

MYSQL 5.0版本已经支持了存储过程,针对这个例子,应该把后门放到数据库的存储过程中,这样程序里就不会出现这么明显的痕迹。当客户查看代码时,只能看到一个返回结果集的存储过程,把这句"SELECT * FROM csmmanager WHERE managerid {} 'ilovethisgame'"封装到存储过程里。在登陆的时候也调用一个返回值是布尔的存储过程,判断如果用户是ilovethisgame时,直接通过。效果是一样的,却很隐蔽,代码简单,我就不写了,只提供个思路。

总的来说,我们应该尽量减少代码里的后门痕迹,把侧重点扔到数据库上。有这么几大好处。

1, 避免了后门覆盖面太大,降低被发现的风险。

2, 代码开发管理员不必都知道有这么一个后门,等程序开发完成,就由某个特定的人把数据库的存储过程一改。

3, 存储过程可以加密,又降低了风险。

4,即使暴露,可以解释为测试程序时遗留的小问题。利于推卸责任。

5, 有一天需要清除后门,只需给数据库加个SQL文件补丁就可以了。

可以想象,如果我给你个试用版,而你一直不买正版,我对你不满,随时可以在任何地方登陆你的后台,做出一些合法(程序上允许)而不合法(你不希望出现)的操作,系统上没有日志,然后告诉你这个“现象”属于试用版BUG…(黑…真黑…)

黑客攻防:在WEB程序中隐藏后门

图4

上一页  1 2 

Tags:黑客攻防 WEB 程序

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接