Lerx应用规则阻挡跨站脚本渗透攻击
2020-03-30 14:59:36

近期大部分漏洞扫描设备所出报告中,大多数均是跨站脚本威胁。描述如下:

......

事件类型: 漏洞-跨站脚本

安全等级:高危

事件描述:web应用程序未对用户输入的字符过滤或合法性校验,允许用户输入javascript、vbscript语句,得到客户端机器的cookie等信息。

整改建议:过滤用户提交的数据中的<、>、script、eval、document 、.等字符,建议使用WAF防护。

......

一般Struts的WEB应用如果无WAF等防护,阻挡这此类威胁很难。因为Struts响应表单或URL等输入时,对于到达的参数基本是来者不拒。SpringMVC这方面要好得多。作为一款利用SpringMVC框架开发的WEB应用系统,Lerx为防止不明攻击渗透,安全等级再上一层,利用Spring AOP技术,对表单、URL等参数输入利用contrast注解,在Controller控制层对大多数请求进行了严格的检查。如下面的代码。


@RequestMapping("/login")
@Token(ajax = false, log = true,csrf=true,contrast = true, mark = "admin--<login>", failedPage = LOGINPAGE, msgKey = "")
public ModelAndView login(Map<String, Object> map, HttpServletRequest request...

...}


contrast为真则检查,csrf为真则对请求来源进行检查。

下面我们得用Burp来对Lerx模拟渗透入侵。

action位置:/action_admin/login

1.打开burpsuite,开启抓包模式

2.打开Firefox,配置代理服务器为127.0.0.1:8080

3.在火狐浏览器地址栏输入网渗透的网址。

4.Burpsuite获得抓包数据

5.Burpsuite中右键,选择sent to repeater。

6.打开repeater选项卡。


7.在代码中的GET /action_admin/login后加入?+Javascript渗透代码

'%20onclick%3D'document.title%3D36707'



8.右下角输入36707后回车


9.右键选择 Show response browser


10.在弹出窗口中选择copy,再粘贴到火狐浏览器地址栏中按回车。可以看见渗透被拦截阻断。



11.查阅网站日志。可以通过后台或查看网站日志文件。


12.可以看见日志文件记录了这次渗透攻击的详细内容,并成功阻止。


需要说明的是Lerx不仅仅对url拼接攻击进行检查,对表单内容进行修改伪装,比如增加不合法项,同样会被阻断。


发布:lzh