准备知识
Sql注入
原理:
用户能控制输入并构造恶意参数(多为sql语句),Web应用执行的代码拼接了未加过滤的用户输入。
危害:
1. 数据库信息泄露
2. 网页篡改
3.网站挂马:修改数据库的一些字段值,嵌入网吗链接,进行挂马攻击。
4. 数据库被恶意操作
5. 数据库被恶意操作:数据库服务器被攻击,数据库的系统管理员账户被篡改。
6. 服务器被远程控制,被安装后门。
7. 破坏硬盘数据,瘫痪全系统。
加固:
1. 字符串过滤。
2. 前端js防范sql注入。
3. 在数据库中限制用户权限。
4. 多使用数据库自带的安全参数。
5. 最小权限运行程序。
6. 命令执行错误时,不要给出过多关于错误细节的提示。
Web安全狗介绍
网站安全狗是一款集网站内容安全防护、网站资源保护及网站流量保护功能为一体的服务器工具。涵盖了网马/木马扫描、防SQL注入、防盗链、防CC攻击、网站流量实时监控、网站CPU监控、下载线程保护、IP黑白名单管理、网页防篡改功能等模块。能够为用户提供实时的网站安全防护,避免各类针对网站的攻击所带来的危害。
安全狗的主要功能
1:网马木马主动防御及查杀
网页木马和网页挂马扫描工具采用特征码+启发式引擎的查杀算法,WEB木马检出率大于90%
2:流量监控
能够实时监测到每个网站的进出流量和总流量,以及每个应用程序池及网站的CPU占用情况
3:网站漏洞防御功能
可拦截GET、POST、COOKIES等方式的SQL注入,可对GET、POST、COOKIES分别定义特征码,以及可拦截XSS注入等行为。
4:危险组件防护功能
全面拦截恶意代码对组件的调用权限,拦截IIS执行恶意程序,保护网站安全
5:.Net安全保护模块
快捷设置.Net安全模式,禁止.Net执行系统敏感函数,保障网站安全
6:双层防盗链链接模式
可以针对不同站点设置防盗链的过滤, 防止图片、桌面、软件、音乐、电影被人引用。如果发现请求者是盗用网站链接, 则自动重定向到错误处理页面
7:网站特定资源防下载
支持对doc、mdb、mdf、myd等特定资源的防下载保护,加入要保护的敏感资料的路径,即可防止敏感资料被下载
8:CC攻击防护
自主研发的独特抗攻击算法,高效的主动防御系统可有效防御CC攻击、流量攻击。
9:网站流量保护
支持下载流量控制、下载线程控制。采用独创的线程控制和流量控制技术,大大提高服务器性能, 保护网站流量。
SQL注入绕过WAF
-
大小写绕过
一些厂商的过滤很不严谨,一些是采用黑名单方式过滤,但是有些只过滤了小写形式,然而在传参的时候并没有将接收参数转换为小写进行匹配。针对这种情况,我们很简单就能绕过 如,union select 转换为 UnIOn sELeCT -
内联注释
比如一个过滤器过滤了,union、where、table_name、table_schema、 =、and information_schema 通常利用内联注释进行如下方式绕过:id=1/*!UnIoN*/+SeLeCT+1,2,concat(/*!table_name*/)+FrOM /*information_schema*/.tables /*!WHERE */+/*!TaBlE_ScHeMa*/+like+database()
在PHP中,/ **/
代表注释的意思,!
是终止的意思,因此当Web执行容器读到/*
的时候,会认为后面的全部是注释内容,便不再检测,接下来使用!
终止注释符,从而就绕过了检测 -
替换关键字
比如过滤器过滤掉了select,我们可以这样拼接:seselectlect
,使用嵌套拼接,这样过滤器过滤了中间的select,而两侧的字符又拼接成了select,这样可以绕过一些WAF -
Character编码
有些情况下,WAF对应用程序中的输入进行解码,但是有些WAF是只过滤解码一次的,所以只要我们对bypass语句进行双重编码就能将其绕过之。(WAF解码一次然后过滤,之后的SQL语句就会被自动解码直接执行了)。
实例演示
目标网站:172.16.12.2
检测漏洞:
点了几个页面发现URL中都是id=x类型的,输入id=1 and 1=1如下显示
显然我们被狗发现了。
尝试id=1′,显示如下:
显而易见,我们输入的参数被带入数据库了,所以才报错的。
此处也可以采用内联注释来绕过安全狗:/*! and 1=1*/正常显示,/*! and 1=2*/页面不显示内容。
绕过安全狗防注入检测
union select有一个特性,就是如果前面的语句出现错误,则将后面查询到的数据输出到前面。
通过/*! order by 6*/成立而/*! order by 6*/报错发现有6个项。
然后通过/*!union//*!select*/1,2,3,4,5,6显示如下,发现1和4可以替换为有用的函数。
发现数据库为zzcms,且版本为5.5.47
通过user(),@@version_compile_os发现当前用户和当前操作系统
爆表
mysql数据库的information_schema存储着很多关于mysql数据库的内容,如所有的用户名、表名、列名等等,具体见百度。
通过group_concat()将查询到的结果连接在一起显示。
爆列名
爆bao用户名和密码
这个密码是不是有点离谱(md5值一般为32位,“0–9”和“a–f”组成的字符串),数了一下32位的,而切字母也在”a”–“f”,所以我非常怀疑这是md5加密过的,解密后:123123.
绕过安全狗,进行上传
用admin和123123登录。
直接上传大马(data.php)被狗发现了,所以burpsuite抓包绕狗。
绕过原理:
发送到Repeater后,然后将文件内容复制一份,粘贴到下放,这时就相当于我们上传了两个文件,并将第一个文件修改后缀为jpg。当增加一处文件名和内容,让两个文件名不一致的时候,就成功绕过了安全狗的防护,上传了php文件。
原因是安全狗进行文件名匹配时候用的是第一个文件名data.jpg,是复合安全要求的,第二个文件在尾部,会将第一个文件覆盖掉,服务器在保存文件的时候保存了第二个文件名data.php,也就是,导致安全检查没有用,php文件已经成功上传了
大马界面如下
体验一下Webshell
提权
whoami发现竟然是system权限,可能是为了练手吧,system权限太难得了。
systeminfo查看系统信息
net user查看存在用户
我们可以通过administrator登录,但是不知道密码,由于我现在是system权限,所以net user administrator 123456将密码改为123456就可登录了。
在本机win+r输入mstsc打开windows的远程登录客户端,输入目标机ip,然后验证账户名和密码,登进去如下。