一.防御策略
- 命令注入漏洞
a) 例 str1 = $_POST[‘cmd’],在str1 前连接 字符”#”注释字符,str1 = “#”. $_POST[‘cmd’]
b)
- 上传文件漏洞
a) 注释上传写入代码.
b)
- 文件包含漏洞
a) 修改php.ini文件
allow_url_fopen on
allow_url_include on
修改为
allow_url_fopen off
allow_url_include off
b)
- 远程代码执行漏洞
a) 注释危险函数:system() exec_shell() eval() assert() create_function() preg_replace() file_put_contents()
b)
- 缓冲区溢出漏洞
a) 目前参考”7.Linux权限漏洞”,进行防御.
b)
- 系统后门漏洞
a) 直接删除后门程序
b) “Ps –ef|grep bash”命令查看是否有bash后门程序
c) “ss -ltnp”命令查看,是否有后门程序监听端口
d) 从上两个步骤找到该程序pid,用”kill pid”命令结束后门bash程序
e) 在web网站目录下,查看文件内容找到webshell或一句话木马,进行删除文件或注释代码
f)
- Linux权限漏洞
a) “PS –ef|grep httpd”命令查看 Apache服务是否是root执行该服务,若是修改/etc/httpd/httpd.conf 文件找到”user” “group”字段后加上apache apache,重启httpd服务。使Apache服务是apache用户执行该服务.
b) 修改/bin/cat /bin/echo等关键命令二进制文件,改成其名称,让其攻击者无法利用bash读取flag文件内容.
c) 修改/root/flagxxxxx.txt文件的权限,
i. chmod 000 /root/flagxxxxx.txt
ii. chown apache:apache /root/flagxxxxx.txt
d)
1.防XSS
作为body文本输出,作为html标签的属性输出:
比如:<span>${username}</span>, <p><c:out value="${username}"></c:out></p>
<input type="text" value="${username}" />
此时的转义规则如下:
< 转成 <
> 转成 >
& 转成 &
" 转成 "
' 转成 '
javascript事件
<input type="button" onclick='go_to_url("${myUrl}");' />
除了上面的那些转义之外,还要附加上下面的转义:
转成 \
/ 转成 /
; 转成 ;(全角;)
e) URL属性
如果 <script>, <style>, <imt> 等标签的 src 和 href 属性值为动态内容,那么要确保这些url没有执行恶意连接。
确保:href 和 src 的值必须以 http://开头,白名单方式;不能有10进制和16进制编码字符。
?:传参参数,代表是动态的
Title:传参函数名
:传参内容的值(这就是url编码解码后变成“个人简介”,一般反射型XSS的注入点)
f)上传waf
如果是框架写出的web就很好部署了,直接require在重写文件或者数据库文件中,如果是零散的php文件,那也有办法,如果是fastcgi(nginx,IIS比较常见)运行的php就在.user.ini加一句,具体百度一下.user.ini的后门,原理一样。其他情况也可以写个脚本强行在每个PHP前面加一句,脚本代码的样例也会放出来。(当然apache也可以.htaccess强行重写到waf再转回原页面,但是万一没重写环境呢)
1.将waf.php传到要包含的文件的目录
2.在页面中加入防护,有两种做法,根据情况二选一即可:
a).在所需要防护的页面加入代码
require_once
(
'waf.php'
);
就可以做到页面防注入、跨站
如果想整站防注,就在网站的一个公用文件中,如数据库链接文件config.inc.php中!
添加require_once('waf.php');
来调用本代码
常用php系统添加文件
PHPCMS V9 phpcmsase.php
PHPWIND8.7 datasql_config.php
DEDECMS5.7 datacommon.inc.php
DiscuzX2 configconfig_global.php
Wordpress wp-config.php
Metinfo includehead.php
b).在每个文件最前加上代码
在php.ini中找到:
Automatically add files before or after any PHP document.
auto_prepend_file = waf.php路径;
二.夺旗战术
- 防止网络卡顿延迟等待,采用从靠后的IP往前进行批量测试,例192.168.1.x,测试顺序192.168.1.254, 192.168.1.253, 192.168.1.252……192.168.1.3, 192.168.1.2, 192.168.1.1
- 写脚本批量测试顺序:远程代码执行漏洞 文件包含漏洞,能够直接读取flag的漏洞先考虑,然后考虑手动测试 远程溢出漏洞
- 在远程执行命令获取flag之后,修改其对手管理员密码,删除flag文件,并重启该系统,让其他队伍服务继续二次得分。
- 批量脚本代码框架准备(其中执行命令参考3战术,攻击者环境Kali,python2)
a) 批量利用远程代码执行漏洞,进行获取flag
b) 利用文件包含执行php函数 system()
c) 利用弱口令,准备bash shell脚本 批量连接ssh
d) 批量连接nc执行命令脚本
e)