首先看简历
简历不要乱吹,会什么就写什么;
只要你写在简历上的面试官都会着重问。
第一个问题
基本上第一句是先让你做个自我介绍
你说的东西后面一定会问下去,所以建议说点项目或者设备的东西,先不要这么快上强度。
判断恶意外连/分析威胁情报
- 首先外连是从内到外
- 查看外连使用的协议
- 查看ip,看流量,看告警分析,看返回包、状态码
反序列化漏洞
Log4j
Log4j是由Apache提供的日志操作包,用于帮助用户处理日志信息。
该漏洞主要是由于日志在打印时当遇到${
后,以:
号作为分割,将表达式内容分割成两部分,前面一部分prefix,后面部分作为key,然后通过prefix去找对应的lookup,通过对应的lookup实例调用lookup方法,最后将key作为参数带入执行,引发远程代码执行漏洞。
核心原理为,通过Lookup接口+LADP,从服务器请求下载了存在恶意payload的class文件,由于日志检测时,存在${则触发替换机制,导致了表达式被替换成了lookup查找到的恶意payload,在请求过程中被实例化解析执行了。
日志在打印时当遇到${
后,Interpolator类以:
号作为分割,将表达式内容分割成两部分,前面部分作为 prefix,后面部分作为 key。然后通过prefix去找对应的 lookup,通过对应的lookup实例调用lookup方法,最后将key作为参数带入执行。
JNDI注入主要是用过下载远程class,来运行恶意代码。JNDI注入攻击时常用的就是通过RMI和LDAP两种服务。
Shiro
shiro提供记住密码功能
Payload产生的过程:命令=》序列化=》AES加密=》base64编码=》RememberMe Cookie值
利用:用生成的Payload,构造数据包,伪造cookie发送payload
【SHIRO-550】
shiro默认使用了CookieRememberMeManager,其处理cookie的流程是:
得到rememberMe的cookie值–>Base64解码–>AES解密–>反序列化
AES的密钥是硬编码在代码里,就导致了反序列化的RCE漏洞
【SHIRO-721】
不需要key,利用Padding Oracle Attack构造出RememberMe字段后段的值结合合法的
RememberMe cookie即可完成攻击
【两者区别】
shiro550使用可以使用已知密钥碰撞,但是shiro721由系统随机生成
550先验证”rememberMe” Cookie的值,再进行身份验证,因此可以绕过身份认证达成未授权访问
721登录时先进行身份验证,再验证”rememberMe” Cookie的值,所以需要一个可用的会话来利用
最后:shiro登录流程可以自定义
weblogic
weblogic就是把java应用程序运行起来,并提供服务的一种程序。
- weblogic控制台的7001端口,默认会开启T3协议服务,T3协议缺陷实现了Java虚拟机的远程方法调用(RMI),能够在本地虚拟机上调用远端代码。
- weblogic的WLS Security组件对外提供webservice服务,其中使用了XMLDecoder来解析用户传入的XML数据,在解析的过程中出现反序列化漏洞,导致可执行任意命令。
fastjson
正常请求是get请求并且没有请求体,可以通过构造错误的POST请求,即可查看在返回包中是否有fastjson这个字符串来判断
在请求包里面中发送恶意的json格式payload,漏洞在处理json对象的时候,没有对@type字段进行过滤,从而导致攻击者可以传入恶意的TemplatesImpl类,而这个类有一个字段就是_bytecodes,有部分函数会根据这个_bytecodes生成java实例,这就达到fastjson通过字段传入一个类,再通过这个类被生成时执行构造函数
【无回显怎么办】
- 一种是直接将命令执行结果写入到静态资源文件里,如html、js等,然后通过http访问就可以直接看到结果
- 通过dnslog进行数据外带,但如果无法执行dns请求就无法验证了
- 直接将命令执行结果回显到请求Poc的HTTP响应中
Jboss
Jboss是一个管理EJB的容器和服务器。
下面是三个JBoss反序列化漏洞:
漏洞存在/jbossmq-httpil/HTTPServerILServlet中
漏洞存在/invoker/readonly中
漏洞存在/invoker/JMXInvokerServlet中
程序获取http请求数据保存到httpRequest中,进一步处理后保存到变量ois中,然后程序没有对该数据进行过滤,直接使用readObject()方法进行反序列化。
Python
Python内置了很多序列化/反序列化的方式,最常用的有json、pickle、marshal这三种。
json较为安全,因为它序列化后的字符串长度最小。
漏洞产生的原因在于其可以将自定义的类进行序列化和反序列化。反序列化后产生的对象会在结束时触发__reduce__()函数从而触发恶意代码。reduce()类似与PHP中的wakeup,在反序列化的时候会自动调用。
防御:
1、用更高级的接口__getnewargs()、getstate()、setstate()等代替reduce()魔术方法;
2、进行反序列化操作之前,进行严格的过滤,若采用的是pickle库可采用装饰器实现。
PHP
以前的文章已经做出说明,不再重复叙述。
有哪些常见的框架/中间件漏洞
Python_Django
目录遍历漏洞、重置密码漏洞、SQL注入漏洞、任意代码执行
Python_Flask
SSTI模板注入漏洞(后面再学习)
Python_Web2py
本地文件包含漏洞、输入验证漏洞
Python_Tornado
Tornado是非阻塞式服务器,而且速度相当快
文件读取漏洞:os.path.abspath函数获得的路径,是没有结尾处的”/“的,因此可以自己构造路径
模板注入漏洞:同样后面再学习
Python_Scrapy
scrapyd未授权访问漏洞:6800端口可以部署恶意的scrapy包到云服务,进而获取服务器权限
Scrapy反序例化漏洞
struts2
struts是java的web框架
在注册或登录页面,提交失败后一般会默认返回之前提交的数据
由于后端使用%{value}
对提交的数据执行了一次 OGNL 表达式解析,所以可以直接构造 Payload 进行命令执行。
……
weblogic
weblogic是java的web框架
弱口令漏洞:
用户名:weblogic、system、admin、WebLogic
密码:weblogic、weblogic123、password、security、system、admin、WebLogic
然后在上传处上传一个jsp类型的小马的war包来拿到shell
任意文件读取漏洞:
http://ip:7001/hello/file.jsp?path= #接文件路径
Weblogic 后台的密文与密钥这两个文件分别为 config.xml 和 SerializedSystemIni.dat
未授权远程命令执行漏洞:
http://ip:7001/console/css/%252e%252e%252fconsole.portal
或
http://ip:7001/console/images/%252e%252e%252fconsole.portal
或者构造一个反弹shell XML 文件,通过访问这个文件来执行命令
远程代码执行漏洞分类
- 直接调用系统函数例如exec
- 把序列化的包反序列化的时候调用不当出现了rce
常见反序列化的流量特征
shiro就看cookie中rememberMe字段,什么都要从这里传
fastjson:可以在提交的包中找找json格式的数据,重点看一下有无rmi或者出网的一些行为,(在十六进制中会呈现ACED开头,这段不确定)
st2-045:请求头中的Content-Type字段
问漏洞题不会回答怎么办
- 先讲漏洞原理
- 漏洞特征,流量,返回码
- 结合设备特性讲
sql注入
报错注入
updatexml() 是mysql对xml文档数据进行查询和修改的xpath函数
extractvalue() 是mysql对xml文档数据进行查询的xpath函数
floor() mysql中用来取整的函数
exp() 此函数返回e(自然对数的底)指数X的幂值
时间盲注
sleep() 直接延迟时间
benchmark() 通过计算md5消耗时间
堆叠植入
mysqli_multi_query() 可以使用;堆叠多条语句
宽字节注入
使用PHP连接Mysql的时候,当设置"character_set_client=gbk"时会导致一个编码转换的问题
mysql在使用GBK编码的时候,会认为两个字符是一个汉字
GBK就是常说的宽字节之一,实际上只有两个字节
前一个ASCII码要大于128,才到汉字的范围
防护方案
- 预编译
- 限制长度
- 加WAF
- 通信加密
其中预编译:
因为sql注入是因为动态字符串的拼接导致sql命令发生改变,然后编译并且执行错误的结果。
而sql预处理则是提前“告诉”sql语法处理器,提前声明并且编译特定格式的sql语句,然后将所有用户的输入视为纯字符串参数,最后组成查询语句。
sql注入的进一步利用
- 拖库
- 在有绝对路径和into outfile函数时写shell到web目录下
- 服务器超管,获取服务器管理员权限
- mssql2005之前在SQLsever利用xp_cmdshell提权
- UDF提权是用户自定义函数,写一个恶意的dll到系统system32目录下(定义一个可以执行系统命令的函数)
常见的解析漏洞有哪些
- IIS 6.0 /xx.asp/xx.jpg “xx.asp”是文件夹名
- IIS 7.0 /7.5默认Fast-CGI开启,直接在url中图片地址后面输入/1.php,会把正常图片当成php解析
- Nginx 版本小于等于 0.8.37,利用方法和IIS7.0/7.5一样,Fast-CGI关闭情况下也可利用。空字节代码 xxx.jpg.php
- Apache上传的文件命名为:test.php.x1.x2.x3,Apache是从右往左判断后缀
- lighttpd xx.jpg/xx.php,
ISS服务器要做哪些方面保护措施
- 保持 Windows 升级:
- 使用 IIS 防范工具
- 移除缺省的 Web 站点
- 如果你并不需要 FTP 和 SMTP 服务,请卸载它们
- 有规则地检查你的管理员组和服务:
- 严格控制服务器的写访问权限
- 设置复杂的密码
- 减少/排除 Web 服务器上的共享
- 禁用 TCP/IP 协议中的 NetBIOS:
- 使用 TCP 端口阻塞
- 仔细检查*.bat 和*.exe 文件: 每周搜索一次*.bat
- 管理 IIS 目录安全:
- 使用 NTFS 安全:
- 管理用户账户
- 审计你的 Web 服务器