zoukankan      html  css  js  c++  java
  • AWD比赛笔记

    一.防御策略

    1. 命令注入漏洞

    a)       例 str1 = $_POST[‘cmd’],在str1 前连接 字符”#”注释字符,str1 = “#”. $_POST[‘cmd’]

    b)        

    1. 上传文件漏洞

    a)       注释上传写入代码.

    b)        

    1. 文件包含漏洞

    a)       修改php.ini文件

    allow_url_fopen    on

    allow_url_include   on

                      修改为

    allow_url_fopen    off

    allow_url_include   off

    b)        

    1. 远程代码执行漏洞

    a)       注释危险函数:system() exec_shell() eval() assert() create_function() preg_replace() file_put_contents()

    b)        

    1. 缓冲区溢出漏洞

    a)       目前参考”7.Linux权限漏洞”,进行防御.

    b)        

    1. 系统后门漏洞

    a)       直接删除后门程序

    b)       “Ps –ef|grep bash”命令查看是否有bash后门程序

    c)        “ss -ltnp”命令查看,是否有后门程序监听端口

    d)       从上两个步骤找到该程序pid,用”kill pid”命令结束后门bash程序

    e)       在web网站目录下,查看文件内容找到webshell或一句话木马,进行删除文件或注释代码

    f)         

    1. 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}" />

    此时的转义规则如下:

    < 转成 &lt;

    > 转成 &gt;

    & 转成 &amp;

    " 转成 &quot;

    ' 转成 &#39

    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路径;

    二.夺旗战术

    1. 防止网络卡顿延迟等待,采用从靠后的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
    2. 写脚本批量测试顺序:远程代码执行漏洞 文件包含漏洞,能够直接读取flag的漏洞先考虑,然后考虑手动测试 远程溢出漏洞
    3. 在远程执行命令获取flag之后,修改其对手管理员密码,删除flag文件,并重启该系统,让其他队伍服务继续二次得分。
    4. 批量脚本代码框架准备(其中执行命令参考3战术,攻击者环境Kali,python2)

      a)       批量利用远程代码执行漏洞,进行获取flag

       b)       利用文件包含执行php函数 system()

      c)        利用弱口令,准备bash shell脚本 批量连接ssh

      d)       批量连接nc执行命令脚本

      e)        

  • 相关阅读:
    牛客多校第九场 && ZOJ3774 The power of Fibonacci(二次剩余定理+斐波那契数列通项/循环节)题解
    2019牛客多校第九场B Quadratic equation(二次剩余定理)题解
    URAL 1132 Square Root(二次剩余定理)题解
    牛客多校第九场H Cutting Bamboos(主席树 区间比k小的个数)题解
    配置android.support.v7.widget.Toolbar 搜索框样式
    Google之路
    Editplus 竖选,竖插入技巧
    JNDI
    Spring Hibernate Transaction示例
    AOP 入门
  • 原文地址:https://www.cnblogs.com/WhiteHatKevil/p/10063963.html
Copyright © 2011-2022 走看看