本文都是php环境 ,php审计
1.配置文件双引号 代码执行漏洞
漏洞利用前提 我们能修改配置文件
然后利用php可变变量特性:php中字符串可以用单引号和双引号表示,但单引号效率比双引号高,因为单引号是真正的字符串,双引号要做运算,即将字符串中的变量替换成值,单引号不需要
可变变量特性
php里,
单引号内的变量不会被执行,
双引号内的变量会被执行,
双引号内单引号里面的变量会被执行,
但是双引号内变量加上反斜杠就可以让这个变量不被执行,成为特例
<?php
$a=5;
echo '$a'."\n"; // 结果输出 $a
echo "$a\n"; // 结果输出 5
echo "'$a'\n"; // 结果输出 '5'
echo "\$a=".$a; // 结果输出 $a=5 ,点是连接符
?>
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
上传文件名修改 后缀名黑名单
这个函数因为我正则表达式不太行 经常忽视
多看官网手册 少看教程。https://www.php.net/preg_replace/16.代码执行
动态函数
最近看见一个文章是代码执行平台(代码在线运行平台)去执行代码。
反引号命令执行
17.变量覆盖
extract
18.报错
19.fuzz
pywebfuzz
不恰当的正则表达式
windows 短文件名