突破本地验证 继续上传

  • 内容
  • 评论
  • 相关

突破本地验证

本 地验证的方法,一般是使用javaScript脚本简单验证,比如上传格式的验证,输入内容长度的验证,如果服务器端也不进行二次验证的话,易导致恶意攻 击者只需在本地稍作修改就可以实现完全意义上的绕过。比如前些年比较流行的上传漏洞,其成因一般是因为对上传的文件类型或者扩展名过滤不严格造成的,导致 可以直接或间接上传脚本木马,在检测一网站时,从扫描结果得到一上传网页,如图:

查看页面源代码时,发现判断上传后缀是使用运行在本地的JS代码。代码如下:

<script type="text/javascript"><!--mce:0--></script>提交表单的代码如下:

<form action="/photoimgAction.do?method=savePhotoimg" accept-charset="UNKNOWN" enctype="multipart/form-data" method="post"></form>代码里“action”指的就是提交地址。针对上面简单的利用方法是:
只需要把上传页面保存到本地,扩展名必须是html或者是htm。再为提交地址补全路径,如上面的地址修改成

http://www.nuanyue.com/photoimgAction.do?method=savePhotoimg

即代码:

点击“保存”按钮就可以在没有文件名后缀限制能直接上传脚本了。
当然这种方法仅仅是对上传页面后缀为htm或者html的利用。当遇上到动态页面或者有更多限制时,还可以用Firefox的Firebug的插件进行动态调试,如图:

可以动态调试JavaScript,添加监控点、断点,进行实时修改过程参数。但这种方法在利用时,可能会有些麻烦多处添加断点。一种更简单的方法是使用Opera浏览器,先启动Opera浏览器访问上传页面,点击查看源代码,如图:

修改”.gif”为”.jsp”,再点击左上角的应用,修改过的源代码就已经应用到当前浏览的页面,通过修改javascript的本地验证流程,实行绕过上传。如图:

返回页面直接上传,如图:

结束许多Web程序编写者,都喜欢把一些验证放在客户端,比如上传的后缀格式验证,用户和密码的验证等直接往服务端传送,而在服务端完全没有验证而直接利用。从而导致恶意攻击者只要在本地稍作修改就可以直接绕过本地验证,而本质上这种验证形同虚设,毫无意义。

 

评论

1条评论
  1. Xerifecaiu

    At last, somnoee who knows where to find the beef