杂项_记录

安全产品

这里从一种简单的模型入手,输入->检测->输出

一切都是在检测输入

攻击者的入口点,也都是 输入 着手

模型 输入 检测 输出
NDR pcap、流量 waf/正则/流量解析/文件分析/威胁情报等 阻断恶意流量
EDR(终端检测及响应) 进程事件/文件事件/主机API调用 父子进程关系异常/非常规api调用/敏感文件读取 异常阻断/杀死进程
WAF api调用 xss、sql注入等关键字检测/AI检测 中断异常连接
webshell查杀 文本文件 恶意关键字、数据进入敏感函数 隔离/删除

输入类型

控制流与数据流

控制流走向控制代码走向、或者改变原代码结构;

所谓走向和结构:

sql注入、xss、SSTI、命令执行等可以生效的原因,攻击者得手的原因

数据流就是被展示、存储、处理,同时也是程序员希望用户输入的部分

1
?name=id

业务流程问题

sql注入、xss、文件上传,一般被框架解决差不多了,预编译、白名单什么的

这里主要是逻辑、越权问题

校验(鉴权)缺陷

1
2
3
4
5
6
7
8
9
10
<?php
session_start();
if($_SESSION['is_login']==$_GET['is_login']){
echo "登录了";
...
}

?>
这里直接COOKIE为空,url访问?is_login=
造成的效果是NULL==NULL实现绕过

技巧

1.所有的漏洞都是根据脆弱输入->污点函数关键字->传播链这条规律

2.参考可能的触发点、容易忽视的输入点,引发绕过;

3.不行就上工具一把梭

数据流能否到控制流里?

业务逻辑可能的点->快速代码审计

总结

漏洞与语言无关,主要是代码越来越规范,传统漏洞不好产生了

输入->控制流->交互处

RCE

什么时候可以rce

这里有一个对比

1
2
3
sh -c '/usr/bin/echo $input'
/usr/bin/echo $input
比如php里的system等函数都是调用的sh -c

这里的sh -c是允许有管道符存在的,比如;、|,可以导致拼接型命令执行

这个叫做system类

还有一种叫execve类,不调用sh -c的,输入只能作为固定参数,但是还可以绕过

但是还是有现成的黑魔法绕过

你比如 curl $url

访问时是curl?url=www.baidu.com

其实可以用curl?url=file:///etc/passwd这种

主要是知道了可以利用的命令函数curl,虽然不能自定义其它命令比如id、whoami,但可以去搜一些curl本身函数支持的参数去进行精心构造,达到目的

具体见此

文件上传

传统的就,黑名单绕过,后缀绕过,中间件解析绕过

进阶的压缩包相关部分呢

和之前的webshell绕过一样,就是将路径当做压缩包名,进行拼接

或者说是将压缩包名改为87949.zip,然后代码对这个文件名的数字作为处理,转化成高危函数

序列化反序列化

这个已经记了好几遍,就是一种数据转换和存储的方式,一般将对象转化为字节流或字符串,再换原

对于python和php来讲,和魔法函数有关(即自动调用的函数,如构造函数/析构函数)

这个一般有自动化工具进行挖掘了

以php反序列化为例,检查方式为:

1.已存在的类中,是否有某个类A,该类的魔术方法中是否有可利用点

2.没有的话,这个魔术方法能否引入其它类B,重复1

java反序列化,一般是在重写上出的问题

代审

1.命令执行

这个在vscode里有app.py的情况下,python -m flask run即可

1
2
cmd = ['curl', url]
process = subprocess.Popen(cmd, shell=False, stdin=subprocess.PIPE, stdout=subprocess.PIPE,stderr=subprocess.STDOUT)

命令查询:https://gtfobins.github.io/

逻辑

小程序:

1.一个校验手机号的功能,主要是信息泄露:授权手机号功能处抓个包,如果响应包回显了些重要信息,也许可以遍历手机号,当然这个比较少

2.意见反馈:

文件上传(上传附件),得到了secret和appid,就可以去微信公共平台使用并获取token接口,构造接口实现访问测试

3.验证码不过期重用,遍历爆破即可

4.当响应包内容为 data:[],这个一般意味着有越权?如果post请求参数携带了token,尝试删除token,回显数据

5.js审计

知道了修改密码的接口,新密码和旧密码的参数

1
2
3
POST xxx/usr/modify/admin
...
oldpss=123123123&confirmpss=123123123

6.修改密码

未绑定手机号,但是可以发送验证码,那就抓包构造为自定义的手机号,那不就改密码了?

7.js泄露、js加解密

拼接目录时404,那么就要考虑有没有根目录、二级目录等再次拼接

加密解密,尝试找到加密函数上断点调试,还原出整个加密流程

8.文件上传时,抓包上传html文件,内容为xss语句,尝试弹cookie

如果上传就可以下载下来,那就尝试任意文件下载

9.空密码登录,直接爆破用户名即可

10.修改信息时,不用手机验证,不用旧密码,而且让输入用户名;这个存在越权改他人用户密码,但它是靠id鉴权的,所以需要保证id正确;只要知道id,可以实现任意密码修改

11.登录接口,短信登录优先测短信,手机不存在都可能收到短信

12.有的文件上传,响应包回显路径,考虑请求包尝试构造路径拼接

1
2
3
user_file # {"data":"user_file/2023/4/6/90..232"}

1/11/1123/user_file # {"data":"/media/1/11/1123/user_file/2023/4/6/90..232"}

危害的话,可能会覆盖原文件

13.同一资产,不同域名,但公用默认token

14.对于添加、删除功能都可以尝试是否鉴权

15.A站点登录成功的返回包,给到B站点,尝试绕过

16.修改请求包中,已登录用户的role权限的字段实现越权

17.api/web.rar

  • 版权声明: 本博客所有文章除特别声明外,著作权归作者所有。转载请注明出处!

扫一扫,分享到微信

微信分享二维码
  • Copyrights © 2023-2025 是羽泪云诶
  • 访问人数: | 浏览次数:

请我喝杯咖啡吧~

支付宝
微信