1、最近学web渗透,无意间发现一个有意思的站点:
(1)用户的参数都在url路径里面,并未通过类似? a=xxx&b=yyy形式传参
(2)整个站点能让输入的只有这一个search框,没有其他用户交互的地方了;
(3) 这里既然有输入框,那么可能的漏洞有:
- xss:反射型,比如用户的输入被后台又输出到页面; 存储型:后台数据库或日志记录了用户的查询关键词,然后管理员或运维人员在页面查看用户的查询记录,导致中招
- sql注入:如果后台把用户输入的关键词存入数据库,这里就有sql注入的可能;
(4)思路有了,于是挨个尝试,但这里都没发现问题:
- xss:反射型,搜索框一直会显示search,下面会显示no result,不会在页面展示任何用户的输入,此路不通;存储型:也不知道后台会不会在页面展示用户的搜索记录,暂时无解;
- sql注入:这里没有源码,不知道有没有用单双引号、括号闭合,页面也没找到显错点,只能尝试盲注.....
2、人肉尝试了一圈,试了无数payload,效率及其低下,而且全都没卵用,只能借助工具:xray+awvs; 这两款神奇的介绍和安装、使用方法google一下可以找到一大堆,这里不再赘述;安装好后,直接运行,awvs给出的扫描出两个严重漏洞:
(1)sql注入:在/News/detail/id/[*].html路径在存在盲注,并且还列举了payload
(2)xss:给出了受影响的网页和payload:
漏洞的类型和路径都给了,接下来挨个验证;
3、(1)sql注入是盲注,且页面没有显错点,人工验证效率较低,这里先用burp在提示的路径抓包, 然后在payload的地方标注*号,
接着上sqlmap,不过比较遗憾,跑了好几次都没结果,无法继续dump库、表和数据,这里暂时放弃;
不过这里继续手动挨个尝试payload,发现确实是这样的,没误报,比如这里输入true payload,能看到返回正确的页面:
输入false的payload,页面显示不存在:
(2)接着验证xss漏洞:根据扫描结果,这里先看看用户的输入被输出在页面的哪个地方,如下:中间还被加上了小于号<
既然用户在url的输入又被输出到页面,这里就有机可乘:把原来的输入改成</script>标签继续尝试,结果并未弹窗;查看源码,发现</script>标签被放在了</html>后面,无法闭合,导致alert没法执行;
既然script标签被限制,只能改用其他标签,比如<img scr=1 onerror=alert(666)>来验证,成功弹窗,如下:证明awvs扫出来的xss漏洞是真的
换成chrome继续尝试并未弹窗,查看源码发现alert居然被过滤了,不得不佩服chrome的开发团队。这里从侧面反应了chrome比firefox安全!
(3)以上是awvs报的漏洞,这里还有另一款神奇xray,也报了漏洞,如下:
有两个也是xss,点开看细节,给出了url和payload;
s
这里也给出了payload在页面展示的地方,可以发现一个小窍门:通过构造超长的url参数,让script标签完整的在页面展示,而不是像上面那样</script>被放在最末尾,导致无法闭合前面的标签;
按照提示,构造url,成功弹窗,说明这个反射型的xss也是对的;
参考: