Web攻击分析与检测
实验预期】规则编写并检测出SQL注入。规则编写并检测出上传一句话木马。规则编写并检测出webshell与AntSword(蚁剑)连接。【实验步骤与结果】1.检测出SQL注入本节中使用 snort 来捕获网络流量当注入任何网页时它会分析SQL注入引用以获取任何Web服务器的数据库系统信息。当在其网络中捕获这些流量时Snort将生成恶意流量警报网络管理员将立即注意可疑流量并可以对攻击IP采取有效措施。进入【恶意PC】控制台打开浏览器输入地址http://172.168.12.1/sqli/02.php?id1进入sql注入页面如下图所示。切换至【Snort】控制台使用嗅探器模式运行Snort并将所有警报打印到控制台如下图所示。snort -i eth0 -v -d -e -x -L dump切换【恶意PC】控制台在浏览器输入单引号(单引号转换URL编码是%27)或双引号(双引号转换URL编码是%22)让其页面报错判断是否存在注入点。id1一个单引号’将前面那个单引号闭合掉 后面那个单引号使用注释符注释掉 – 或者使用#也可以。切换至【Snort】控制台可以看到snort嗅探到源地址140.250.74.206目的地址172.168.12.1目的端口80得知数据包的传输协议为tcp抓到GET请求是sqli/01.php?id1%27。按住ctrlz结束嗅探模式编辑/usr/local/etc/rules/local.rules文件中创建两个规则在终端中使用vim命令进行local.rules规则编辑添加规则如下图所示完成后保存并退出。alert tcp any any - any 80 (msg: Error Based SQL Injection Detected %27; content: %27 ; sid:100000011; ) alert tcp any any - any 80 (msg: Error Based SQL Injection Detected %22; content: %22 ; sid:100000012; )规则的动作为alert规则协议为tcp源地址、目的地址与端口设置为any目的端口为80msg为警告文字的信息而content为GET请求中的字段关键字分别为%27与%22。msg 规则选项向日志记录和警报引擎告知要打印的消息以及数据包转储或警报。它是一个简单的文本字符串利用 \ 作为转义字符来表示离散的字符否则这些字符可能会使 Snort 的规则解析器感到困惑例如分号字符。msg:message text;该 SID 关键字用来唯一标识 Snort 规则。此信息使输出插件可以轻松识别规则。此选项应与 rev 关键字一起使用。 100 保留以备将来使用Snort 分发中包含 100-999,999 条规则 1,000,000 用于本地规则文件 sid-msg。map 包含警报消息到 Snort 规则 id 的映射。sidsnort rules id;现在在接口上以检测模式运行Snort并将所有警报打印到日志目录。snort -c /usr/local/etc/snort/snort.lua -i eth0 -s 65535 -k none -l /var/log/snort新建终端使用tail -f 打印日志/var/log/snort/alert_fast.txt如下图所示。切换【恶意PC】控制台重新在浏览器测试单引号和双引号。切换至【Snort】控制台可以看到snort警告日志输出Error Based SQL Injection Detected %27和Error Based SQL Injection Detected %22两条文字警告分别为SQL注入测试单引号和SQL注入测试双引号。2.检测出一句话木马进入【恶意PC】控制台打开浏览器输入地址http://172.168.12.1/upload/02.php进入文件名过滤绕过漏洞页面如下图所示。文件名过滤绕过漏洞主要是因为通过黑名单的方式判断了文件上传的类型而且并没有完整的过滤导致攻击者通过上传黑名单类型之外的文件绕过文件上传的验证。黑名单的判断方式很容易绕过并且此处并没有判断大小写可以用PhP、phP、php3、phtml等多种后缀来绕过过滤。新建终端创建1.phP文件使用命令touch 1.phP使用vim命令编辑1.phP文件写入php一句话木马?php eval ($_POST[v]);?编辑完成后保存退出如下图所示。单击左上角搜索【wireshark】并单击打开该工具。切换至【Snort】控制台使用嗅探器模式运行Snort并将所有警报打印到控制台如下图所示。snort -i eth0 -v -d -e -x -L dump切换至【恶意PC】控制台在【wireshark】界面中单击【eth0】网卡接口使用eth0监听如下图所示。回到上传页面单击【Browse…】选择上传1.phP文件点击【submit】按钮。点击红色按钮直至变为灰色停止抓包并使用过滤表达式在过滤器过滤http协议【http.request】如下图所示。上传文件后发现已经上传成功了右键图片选择【Copy image Link】。新建浏览器标签页粘贴至地址访问后如下图所示。在数据包中以POST请求发出上传一句话木马而下一行为GET请求为php一句话木马的地址链接如下图所示。同样切换至【Snort】控制台停止运行嗅探器模式可以看到源地址为恶意PC目的地址为漏洞的服务器以及数据包协议为tcp目的端口为80还可以看到POST请求发出上传一句话木马如下图所示。GET请求为php一句话木马的地址链接如下图所示。编辑/usr/local/etc/rules/local.rules文件中创建规则在终端中使用vim命令进行local.rules规则编辑添加规则如下图所示完成后保存并退出。alert tcp any any - any 80 (msg: PHP webshell Detected; content: eval ; content: $_POST ; sid:100000013; )规则的动作为alert规则协议为tcp源地址、目的地址与端口设置为any目的端口为80msg为警告文字的信息而content为POST请求中的一句话木马字段关键字分别匹配为eval与$_POST。现在在接口上以检测模式运行Snort并将所有警报打印到日志目录。snort -c /usr/local/etc/snort/snort.lua -i eth0 -s 65535 -k none -l /var/log/snort新建终端使用tail -f 打印日志/var/log/snort/alert_fast.txt如下图所示。切换【恶意PC】控制台重新在浏览器测试上传一句话木马。切换至【Snort】控制台可以看到snort警告日志输出PHP webshell Detected文字如下图所示。3.检测webshell管理器-AntSword(蚁剑)蚁剑(AntSword)是一款开源的跨平台WebShell管理工具它主要面向于合法授权的渗透测试安全人员以及进行常规操作的网站管理员。切换至【恶意PC】控制台使用cd命令进入桌面的AntSword文件夹并执行AntSword文件弹出AntSword界面如下图所示。右击页面空白处在快捷菜单中选择【Add】如图所示。将一句话木马地址复制粘贴至【Shell url】右侧的文本框中在【Shell pwd】中输入v其他配置都选择默认即可此处使用的是default编码器注意此处为重点最后单击【Add】按钮如图所示。添加完成后如下图所示。切换至【Snort】控制台使用嗅探器模式运行Snort并将所有警报打印到控制台如下图所示。snort -i eth0 -v -d -e -x -L dump切换至【恶意PC】控制台关闭wireshark再次打开wireshark在【wireshark】界面中单击【eth0】网卡接口使用eth0监听双击AntSword添加的内容即获取到webshell如图所示。点击红色按钮直至变为灰色停止抓包并使用过滤表达式在过滤器过滤http协议【http.request】如下图所示。右键单击该行依次选择【Follow】→【HTTP Stream】,查看HTTP数据流如下图所示。可以看到此处使用的是default编码器而密码是v则为明文传输如下图所示。注可自行尝试观察其他编码器的特征值。同样切换至【Snort】控制台停止运行嗅探器模式可以看到源地址为恶意PC目的地址为漏洞的服务器以及数据包协议为tcp目的端口为80还可以看到上述的default编码器内容如下图所示。编辑/usr/local/etc/rules/local.rules文件中创建规则在终端中使用vim命令进行local.rules规则编辑添加之前注释前面三个规则内容添加规则如下图所示完成后保存并退出。alert tcp any any - any 80 (msg: AntSword default encoder Detected; content: %40ini_set ; sid:100000014; )规则的动作为alert规则协议为tcp源地址、目的地址与端口设置为any目的端口为80msg为警告文字的信息而content为default编码器重点字段关键字匹配为%40ini_set。现在在接口上以检测模式运行Snort并将所有警报打印到日志目录。snort -c /usr/local/etc/snort/snort.lua -i eth0 -s 65535 -k none -l /var/log/snort新建终端使用tail -f 打印日志/var/log/snort/alert_fast.txt切换【恶意PC】控制台重新双击在AntSword添加的内容。切换至【Snort】控制台可以看到snort警告日志输出AntSword default encoder Detected告警文字如下图所示。