本文都是php环境 ,php审计

1.配置文件双引号 代码执行漏洞

漏洞利用前提 我们能修改配置文件

然后利用php可变变量特性:php中字符串可以用单引号和双引号表示,但单引号效率比双引号高,因为单引号是真正的字符串,双引号要做运算,即将字符串中的变量替换成值,单引号不需要

可变变量特性

php里,
单引号内的变量不会被执行,
双引号内的变量会被执行,
双引号内单引号里面的变量会被执行,
但是双引号内变量加上反斜杠就可以让这个变量不被执行,成为特例

  1. <?php
  2. $a=5;
  3. echo '$a'."\n"; // 结果输出 $a
  4. echo "$a\n"; // 结果输出 5
  5. echo "'$a'\n"; // 结果输出 '5'
  6. echo "\$a=".$a; // 结果输出 $a=5 ,点是连接符
  7. ?>

2.查看配置文件 宽字节注入

查看数据库编码格式 查看数据库连接时编码设置

我知道宽字节注入但是我以前审计源码时候 好像都直接忽略这个东西 看都不看编码格式
搜索:SET NAMES character_set_client=gbk mysql_set_charest(‘gbk’)
注:不同语言环境的数据库配置差别挺大 数据库注入方式也就不一样 代码审计sql注入关键词也不一样

3.代码审计之逻辑漏洞

我今天分析我好像之前代码审计从来没有管过逻辑漏洞,但是很多网站其实就存在挺多逻辑漏洞。下次我一定要看看逻辑漏洞的代码

4.文件上传可能存在文件名sql注入

我不信哈哈哈哈 我遇到的网站要么他们会把文件名重新命名 要么存到第三方云存储 要么检测文件名后缀

5.文件管理功能可能存在路径穿越 任意文件读取

xss等。文件名没有过滤就会有xss。这个试过了但是路径穿越没有试过。

6.登录认证功能

过去被我强烈无视的东西。。。。。。。。
身份认证主要通过cookie session 生成cookie session算法过于简单的话,就可以自己伪造cookie 甚至有的程序直接把用户名明文放到cookie里,操作的时候就取这个cookie 这就可能造成越权漏洞。

这些很常见 下次我代码审计一定注意 这个身份认证。
例子:ESPCMS任意用户登录 越权漏洞。

7.找回密码功能

危害大 可以通过验证码爆破 对这个暂时没有什么兴趣。。。。我一直无视逻辑漏洞。

8.重装漏洞

我觉得没有什么用,网站被重装就重装呗,关我什么事。数据没有就没有。所以我从来不管,而且很古老,但是我知道一点点,下次再看。

9.二次编码漏洞

搜索urldecode rawurldecode
二次urlcode编码引发sql注入 我没见过但是听过
如果系统开启GPC 我们提交参数给webserver webserver会自动解码一次 然后巧妙构造程序里使用urlcode来解码参数就可能引发注入。

10sql注入漏洞防范

intval 其他再补充

11.PDO预编译与宽字节注入

编码设置不对即使PDO也是能绕过 我不信 我回去再试

12.xss漏洞

关键在于寻找没有被过滤的参数,并且这些参数传到输出函数。
xss漏洞受不同浏览器环境影响也大 富文本编辑器防御会更困难。。。。
xss漏洞比sql注入更多 有一些地方xss是存储型比如资料修改
(我审计的开源代码 一般全局过滤 每一个输入参数都会在全局过滤文件里经过一遍xss过滤 一遍sql过滤)
反射型xss:寻找带参数的输出函数 然后根据输出函数对输出内容回溯输入函数 观察有没有过滤。
(虽然他写的很绕口 但是很有道理的样子 下次试试 虽然我审计的时候从来不管xss漏洞 这个书这里举例让我想到了浏览器请求拆分漏洞 xss注入)
存储型xss 不用考虑浏览器过滤 寻找未过滤输入点 未过滤输出函数 而且这些输入和输出可能不是同一个业务功能。

白盒审计xss思维是找未过滤的参数 黑盒是不断fuzz 想到上一次参加一个互联网活动里关于Jira漏洞挖掘的一个思路。好像也是这样。

13.CSRF漏洞

我一直觉得这个漏洞没有什么用,xss都比它有用。看书看书,看我过去漏掉了多少漏洞
从这个作者举例来看 好像很有用。
跨站请求伪造 如果是危害很大的行为 伪造以后欺骗管理员点开 劫持管理员去做一些攻击者没有权限做的事情。

CSRF主要用于越权漏洞,白盒搜索 token referer。例子:Discuz 论坛被脱 WooYun-2014-64886 很好玩的样子。

水坑攻击(有意思 我知道水坑攻击 但是没想到是这样举例)

14.文件包含

一般出现于模块加载 模板加载 cache,文件后缀名截断

  • %00
  • ./ ./ 大量垃圾字符填充
  • ? 截断

    15.文件上传

    move_uploaded_file(string $filename, string $destination): bool

    上传文件名修改 后缀名黑名单
    image.png 这个函数因为我正则表达式不太行 经常忽视
    多看官网手册 少看教程。https://www.php.net/preg_replace/

    16.代码执行

    动态函数
    最近看见一个文章是代码执行平台(代码在线运行平台)去执行代码。
    image.png
    反引号命令执行
    image.png

    17.变量覆盖

    extract

18.报错

image.png
编码截断 利用不同编码
image.png

19.fuzz

pywebfuzz

不恰当的正则表达式

windows 短文件名
image.png