请参阅以下代码:
public ActionResult URLInjection(string id)
{
string connectionString = ConfigurationManager.ConnectionStrings["SQLInjection"].ToString();
using (SqlConnection connection = new SqlConnection(connectionString))
{
try
{
connection.Open()
SqlCommand command = new SqlCommand("select * from SQLInjection.Person WHERE ID = @id", connection);
command.Parameters.Add(new SqlParameter("@id", id));
command.CommandTimeout = 5;
command.ExecuteNonQuery();
using (System.IO.StreamWriter w = System.IO.File.AppendText("C:\\Development\\C#\\SQLInjection\\Log.log"))
{
w.WriteLine("Executed query");
}
Response.Redirect("~/Home/Index");
}
catch (Exception e)
{
//Log the error
}
}
我已将其部署到本地PC上的IIS中。请参阅下面的SQLMap命令:
C:\SQLMap\sqlmap.py -u http://localhost/SQLInjection/SQLInjection/URLInjection/1 --dbs --tamper between.py
如果我执行此命令,则SQLMap将返回本地服务器上所有数据库的名称。
如果我将IIS端口绑定从80更改为81然后它不会,即如果我运行以下命令(将端口从80更改为81后),则表示没有问题(我已确认它可以看到81号港口的网站:
C:\SQLMap\sqlmap.py -u http://localhost:81/SQLInjection/SQLInjection/URLInjection/1 --dbs --tamper between.py
这似乎表明我的本地开发PC上的端口80存在安全问题。
问题是什么?