1.搭建
2.注册账号
用御剑扫后台
发现后台管理页面
3.漏洞
漏洞类型
(1)宽字节注入
漏洞描述及危害
在数据库中使用了宽字符集(GBK,GB2312等),除了英文都是一个字符占两字节;MySQL在使用GBK编码的时候,会认为两个字符为一个汉字(ascii>128才能达到汉字范围);在PHP中使用addslashes函数的时候,会对单引号%27进行转义,在前边加一个反斜杠”\”,变成%5c%27;可以在前边添加%df,形成%df%5c%27,而数据进入数据库中时前边的%df%5c两字节会被当成一个汉字;%5c被吃掉了,单引号由此逃逸可以用来闭合语句。
注入会导致数据库信息泄露,网页被篡改,数据库被恶意操作,服务器被远程控制和被种植木马等多种危害。
漏洞详情
打开http://ip/admin/upload/admin/admin_login.php?act=login
任意输入密码,填写正确验证码,开启burp抓包
把拦截的包发送给重发器,修改admin_name为admin%df%27 or 1=1%23,再点击发送
成功登录
修补建议
1.统一使用utf-8字符集
2.utf-8字符集可以说是非常安全的字符集了,但是并不代表100%安全。
3.使用PHP函数iconv(‘utf-8’,‘gbk’,$_GET[‘id’]),也可能导致注入产生iconv导致的致命后果
4.使用mysqli_set_charset(GBK)指定字符集
5.使用mysqli_real_escape_string(connection,escapestring)进行转义
6.在mysqli_query中设置参数,
(2)任意文件写入
漏洞描述及危害
任意文件写入漏洞通常由于代码中对文件上传功能所上传的文件过滤不严或web服务器相关解析漏洞未修复而造成的,如果文件上传功能代码没有严格限制和验证用户上传的文件后缀、类型等,攻击者可通过文件上传点上传任意文件,包括网站后门文件(webshell)控制整个网站。
漏洞详情
打开http://ip/admin/upload/admin/admin_index.php
如图所示构造post文件名和内容创建模板写入
然后再访问写入路径即可
修补建议
1、对上传文件类型进行验证,除在前端验证外在后端依然要做验证,后端可以进行扩展名检测,重命名文件,MIME类型检测以及限制上传文件的大小等限制来防御,或是将上传的文件其他文件存储服务器中。
2、严格限制和校验上传的文件,禁止上传恶意代码的文件。同时限制相关上传文件目录的执行权限,防止木马执行。
3、对上传文件格式进行严格校验,防止上传恶意脚本文件;
4、严格限制上传的文件路径。
5、文件扩展名服务端白名单校验。
6、文件内容服务端校验。
7、上传文件重命名。
8、隐藏上传文件路径。