信息系统安全实验之Web服务器防SQL注入安全加固实验

一、实验目的

1.掌握用户的口令使用MD5加密的方法从而提高破解的难度;

2.掌握如何加固网站防止SQL注入。

二、实验环境

1.操作系统:Windows 7*2(虚拟机环境),其中PC1为攻击者,PC2为靶机。

2.工具:SQLMap、PHPStudy、CMD5网站、http://www.jsons.cn/md5/网站。

三、实验步骤和结果

1.在PC2使用PHPStudy中的MYSQL-Front查看网站的用户:

        可以看到有两名用户admin和bupt2020211950,两名用户的密码admin888和2020211950@bupt均以MD5加密后的密文形式保存于数据库中。

2.在http://www.jsons.cn/md5/网站中查看两名用户口令的密文:

        可以看到,在该网站上对明文进行MD5加密(32位小写)后得到的密文,是与数据库中保存的密文一致的。

3.在PC1中使用SQLMap,输入“python sqlmap.py –u "http://192.168.161.135/ ry.php?ry_id=1" -D jnng -T root -C root_id,root_name,root_pass --dump”,可以获取到用户admin进行MD5加密后的口令:

        在CMD5网站网站中输入7fef6171469e80d32c0559f88b377245,可以得到破解结果:admin888。

4.打开网站的管理员登录界面,使用admin身份和密码admin888登录,可以看到登录成功:

5.使用notepad++打开代码文件code里的install.php,定位到116行:

        可以看到,这一行的作用是将明文进行MD5加密后保存在数据库中。若我们想要使用其他的加密方式,如SHA1加密,需要将此行的“md5”修改为“sha1”,另外还需在rootfun.php的915行、936行进行相应修改:

6.再次用SQLMap注入查看密文,由于用户bupt2020211950的口令不是弱口令,在字典中碰撞不出结果,可以直接终止碰撞(Ctrl+c),输出结果:

        在CMD5网站中输入40703d9dbd88e9c7bc22ff21e29d0791,可以看到无法解出明文:

        因此得出结论:用户bupt2020211950的口令,因为只有密文保存,没有明文保存,而且用CMD5网站无法破解,所以攻击者无法使用这个用户的口令登录。

7.为了防御SQL注入,需要修改代码。SQLMap运行时已经告知ry_id是一个可注入点,即可以进行 url 注入,通过观察

http://192.168.161.135/ry.php?ry_id=1可以知道,id后面跟的只能是数字,那么现在可以找到代码中关于 ry_id 可以获取变量的地方,发现对ry_id对类型限制被注释了,导致SQLMap可以借此漏洞进行注入。

        打开ry.php文件,删去第14、22行的注释,实现对类型限制为数字,则可以防止SQLMap注入。

修改前:

修改后:

8.使用SQLMap,输入“python sqlmap.py -u http://192.168.161.135/ry.php?ry_id=1””:

        可以发现最终注入失败了,由此便实现了Web服务器防SQL注入安全加固。

四、实验收获

1.实验过程中遇到的问题及其解决方法

(1)在虚拟机(PC2)中无法编辑.php文件,不能修改ry.php等。

        解决方法:在本机中使用notepad++对.php文件进行编辑并保存,然后将编辑好的文件粘贴至PC2中,并重启PHPStudy。

(2)在命令行中切换到SQLMap工作目录,并输入注入语句后,命令行没有显示预期的内容(想要获取的信息)。

        解决方法:删除C盘中.sqlmap/output文件夹中的内容,然后重新运行SQLMap注入语句,便能够得到预期的内容。

2.实验的心得体会和收获

(1)对SQLMap的使用更加熟悉了;

(2)对MD5加密的原理有了一定的了解;

(3)理解了防止SQL注入的原理,掌握了如何加固网站防止SQL注入的方法。

        总的来说,通过这次实验,我对防止SQL注入的方法有了更加深刻的认识,这是从课本上获取不到的。正所谓“纸上得来终觉浅,绝知此事要躬行”。

五、实验思考

(1)在使用需要登录的信息系统,比如学校的教务系统时,应该避免使用弱口令,这样很容易被破解。比较安全的方式是设置一个复杂但自己能够记住的口令。

(2)可以根据实际情况,将系统的登录口令以某种安全的加密算法保存在数据库中,比如MD5,SHA256,SM3等。千万不能直接将口令以明文形式存储在数据库中,这样会造成极大的安全隐患。

(3)设置WAF防火墙也是防范SQL注入的一种有效方法。目前有很多优质的开源WAF防火墙,可以进行部署来提高信息系统的安全性。

(4)对于安全性要求比较高的信息系统,可以考虑用新兴的身份认证方式代替传统的口令登录方式,比如使用生物特征:指纹、人脸、虹膜等,这些生物特征是具有高度唯一性的,因而比一般的口令登录认证安全得多。如果要进一步提升信息系统的安全性,可以采用双因素认证,即口令登录+生物特征认证,这种方式可能会麻烦一些,但是安全性比单因素认证高的。因此,需要根据信息系统对安全性的具体需求进行权衡,来选择最适合系统的身份认证方法。

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值