网络安全 频道

[攻防手记]记一次简单的渗透测试

    利用沙盒模式来添加个管理员,但是还是没有添加进去!郁闷了,于是把SA丢给朋友让他帮忙看看,过了一会笔者朋友给笔者把服务器发来了,竟然提上了。原来管理员做了密码策略,需要复杂的密码才能登陆。

    马上用终端连上去,但是却发现不允许登陆,说是不能同时多用户登陆,这个好解决,使用mstsc /console 然后终于进去了。

图9

    总结:

    所有的关系型数据库——包括SQL  SERVER,ORACLE,IBM DB2和MYSQL都容易受到SQL注射攻击。SQL注射攻击主要来自WEB应用程序将用户的包含动态SQL代码的输入转换成了SQL 命令给数据库执行。编者给广大的网管和WEB程序开发人员提几点建议:

    1、 应用程序使用的去连接数据库的帐户应该只拥有必须的特权,这样有助于保护整个系统尽可能少的受到入侵者的危害。应用程序不应该用SA或者管理员帐户去连接数据库。作为替代,它应该只有访问它要调用的单个库的权力。

    2、 如果一个输入框只可能包括数字,那么要通过验证确保用户输入的都是数字。如果可以接受字母,那就要检查是不是存在不可接受的字符。确保你的应用程序要检查以下字符:分号,等号,破折号,括号以及SQL关键字。.NET FRAMEWORK提供了正则表达式来进行复杂的模式匹配,运用它可以达到良好的效果。另外限制用户输入的字符的长度也是一个好主意。验证用户输入是必须的,因为入侵者可以利用WEB的开放性对应用程序进行SQL注射攻击。

    3、 动态的SQL语句是一个进行数据库查询的强大的工具,但把它和用户输入混合在一起就使SQL注射成为了可能。将动态的SQL语句替换成预编译的SQL或者存储过程对大多数应用程序是可行的。预编译的SQL或者存储过程可以将用户的输入做为参数而不是SQL命令来接收,这样就限制了入侵者的行动。当然,它不适用于你的存储过程中是利用用户输入来生成SQL命令的情况。在这种情况下,用户输入的SQL命令仍可能得到执行,你的数据库仍然有受SQL注射攻击的危险。

    4、 使用双引号替换掉所有用户输入的单引号,这个简单的预防措施将在很大程序上预防SQL注射攻击,单引号常常结束掉SQL语句,可能给于输入者不必要的权力。用双引号替换掉单引号可以使许多SQL注射攻击失败。

0
相关文章