`
michael8335
  • 浏览: 184219 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

小网站的小问题汇总

 
阅读更多
申明:这些问题都比较简单,属于初学者级别,大牛勿喷,
最近做了个内部监控和管理系统,本来很小的系统,结果被我同事拿个安全扫描软件(不知哪儿搞来的)扫出很几个漏洞,下面就总结一下:
问题1、SQL注入,在登录的时候,已经做好了防SQL操作,但是在登录之后,考虑的比较少,DAO层有字符串拼接SQL操作,导致一旦获取到管理员账号后,很容易实现SQL

注入。
解决:这个我知道的有两种,一:不是用字符串拼接,采用PreparedStatement传参的形式来规避,虽然我也采用PreparedStatement,但是SQL语句还是有部分是用了拼

接。二:检查请求参数,查看请求参数中是否包含and、exec、insert、select、delete、update、count、*、chr、truncate、or关键字,如果参数中包含这些关键字,

基本可以确定为SQL注入,将此次请求抛弃。基于修改成本,我采用了第二种方式,增加了一个Filter来过滤所有请求。
问题2、用户名和密码在网络中明文传递,虽然登录的时候,我采用了post这种方式提交,但是明文在网络中传递,还是容易被别人拦截。
解决:这个我知道的也有两种,一、在传递之前,是用JS将用户名和密码加密,然后再提交,网上有很多这种处理,但是这种有两个不好的地方:A,治标不治本,虽然

在网络上传递时,采用的是密文,但是在客户端登录页面,可以很轻易的查看到JS源代码,在网络中拦截到请求之后,很容易将密文解密;B,这种方式如果采用Post方

式提交,需要JS获取用户名和密码之后进行加密,然后修改原来的值,这样浏览器保存的用户名和密码都是密文,要求每次登录都必须手动输入用户名和密码,即无法使

用浏览器的保存密码功能;如果采用get方式提交,则登录参数会直接暴露在URL中。二、直接走https协议。三、我觉得应该还有很多其他处理方式,只是我不知道,需

要在网上查查,后续补充
问题3,Struts2漏洞
例如提交一个如下请求http://192.168.1.111:8080//monitor/monitor/querysids.action?('\u0023_memberAccess[\'allowStaticMethodAccess\']')(meh)=true&

(aaa)(('\u0023context[\'xwork.MethodAccessor.denyMethodExecution\']\u003d\u0023foo')(\u0023foo\u003dnew%20java.lang.Boolean(%22false%22)))&(asdf)

(('\u0023thread.sleep(0)')(\u0023thread\u003d@java.lang.Thread@currentThread()))=1,该请求主要利用Strtus2的漏洞,消耗系统资源,该URL中,关键部分为

thread.sleep(0),该段代码主要是触发操作系统立刻重新进行一次CPU竞争。
解决:升级到最新的Strtus2
问题4,跨站攻击
发布的时候,不小心把SVN的.svn问题提交到服务器上了,这些问题可能引起跨站攻击
解决:删除所有.svn文件
0
1
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics