0%

web漏洞总结-简版

首先扫目录,然后从功能点中找漏洞,找不到试试bp的scan或者kali的whatweb。

页面多的时候不要忽略每一个页面的前端源码!

尝试触发报错,可能爆出路径/debug页面/版本信息

SQL注入

场景:登录,查询,cookie中

简单:闭合、注释、联合注入、报错注入,insert/update注入

综合:堆叠注入(prepare)、二次注入(select/update),无字段名查询,盲注(逻辑运算、正则匹配)、文件读取与写入、日志写入shell

绕过过滤:

  • 空格->括号,/**/%a0
  • information_schema->猜flag表flag列;mysql.innodb
  • substr->regexp/left/right/mid
  • 逗号->from [offset] for [step]
  • 等号->like
  • 闭合符号+注释->反斜杠转义,需要两个参数互相配合
  • 单引号->找数值型注入点
  • 一些关键词过滤:
    • /**/分隔
    • concat连接+预处理
  • 注释符->%00

结果处理:left/right/reverse/substr

文件上传

(有时候文件上传可能只是为了告诉你一个具有写权限的路径,并不能绕过)

与文件包含结合

.htaccess:FilesMatch,AddType,auto_append

.user.ini:auto_append_file

条件竞争

php短标签绕过php检测

phtml绕过<?检测

php7 segment fault特性(CVE-2018-14884)

文件包含

可以尝试读取:/flag,网站源码,/proc/self/下的文件

include把导入的字符串当成当前文件的代码结构,而file_get_contents只是返回字符串。

目录穿越

file://

命令执行

php代码注入

危险函数:eval,preg_match,create_function,extract,call_user_func,call_user_func_array,反引号

%09是空格

%0a换行,可以执行多条命令

$$变量覆盖

单引号过滤绕过:chr(102).chr(108).chr(108)

无参数代码执行

escapeshellarg+escapeshellcmd

json_encode_decode:Unicode编码绕过waf

Linux命令特性

文件内容读取函数:cat/tac/nl/more/less/head/tail/

文件查找:find+grep

分号分割多条命令;

问号?可作为占位符使用,可绕过关键词过滤

空格可替换为${IFS},$IFS$9

#可替换为%0a,忽略后面的内容;

关键词绕过:反斜杠代表分行,不影响命令执行;空变量$@

nmap用法

SSRF

(有时候url参数可能不是ssrf,只是单纯的文件包含

gopher协议:gopher://IP:port/_TCP/IP数据流

代码审计

获取源码的方式:扫后台备份;文件包含;show_source

php(反序列化和各种绕过

见代码注入

弱类型比较绕过:md5,intval,”字符串”==0为真,True==任意非False值为真,preg_match,整数与字符串类型比较时,会先将字符串转化为整数然后比较。

通过url编码可绕过:$_SERVER['QUERY_STRING']$_REQUEST

$_REQUEST取值POST优先级更高

preg_match:无字母数字rce(异或+取反);PCRE回溯次数;

参数解析特性:删除空白符(%20/%00);将某些字符([,+,.)等等转换为下划线(包括空格)

require_once:hash匹配失效

mt_rand:爆破seed

create_function:可闭合

原生类特性:Error(绕md5),SoapClient(_call存在SSRF)

魔术方法:toString, sleep, wakeup(绕过), get, set, call,invoke

php单引号中的内容不会被解析为特殊字符

phar反序列化

php反序列化字符逃逸

模板注入

jinja2

找到可利用的包,实现命令执行

  • 绕过class等关键词过滤
    • 字符串拼接
    • request.args
  • 下划线过滤->十六进制\x5f
  • 单引号<->双引号
  • 点号<->中括号

twig

smarty:直接执行php代码

敏感信息泄露

WEB_INF

通过扫目录观察可得

.git/

GitHack提取源码

GitHacker提取git相关配置信息,用于恢复git环境

常用git命令

1
2
3
git log --all
git log --reflog #查看恢复记录
git reset --hard e5b2a2443c2b6d395d06960123142bc91123148c #重置为某个分支

编码解码

Django:编码爆出debug界面

Mysql:宽字节

JSON:decode会自动解Unicode为utf-8

逻辑漏洞

身份验证绕过:jwt

支付0元购

其他

nodejs

  • vm沙箱逃逸
  • 原型链污染
  • js大小写绕过

C

  • include文件头报错

python

  • flask session伪造
  • django 字符集报错
  • format漏洞
  • os.path.join路径穿越
  • Unicode编码字符等价绕过:unicodedata.numeric(‘万’)=10000
  • idna编码+utf8解码导致字符绕过
  • pickle反序列化

CRLF注入

XSS

  • CSP绕过