sql注入原理:
应用程序在与数据库交互时,未对用户的输入处理不严格,导致用户输入的恶意代码被当作sql语句的一部分执行。
sql注入种类:
字符,数字注入;布尔盲注,时间盲注;报错注入;联合查询注入;堆叠注入;内联查询注入;宽字节注入;XFF注入;
sql注入防御:
使用预编译,正则表达式过滤,开启魔术引号,加装WAF等
预编译原理:
预编译的核心思想是将SQL查询分为两部分:查询模板和参数。查询模板包含SQL语句的结构,而参数则仅被当作字符串进行处理。
xss种类:
存储型,反射型,DOM型;
存储型:指恶意脚本被永久存储在目标服务器上的一种攻击方式,通常存在于数据存储的地方。
反射型:常出现在url中,一般需要攻击者提前构造好恶意链接,欺骗用户点击,触发攻击代码;
DOM型:基于DOM的XSS是指恶意脚本通过修改页面的DOM结构而执行的攻击方式。
xss修复:
html实体编码;白名单过滤;javascript标签过滤;开启http-only;加装WAF;
XSS,CSRF和SSRF的区别:
xss跨站脚本攻击,csrf跨站请求伪造脚本攻击,ssrf服务器请求伪造攻击。
xss是服务端对输入数据没有进行足够过滤,使得用户浏览器被注入恶意脚本。csrf是服务端没有对提交的数据进行随机值校验,导致攻击者可以利用用户cookie信息伪造用户请求发送到服务器。ssrf是服务器对用户提供的url过于信任,导致攻击者以此为跳板攻击内网或其它服务器。
xxe漏洞:
xml解析器在解析xml数据时,同时处理了外部实体。这些外部实体可以导致加载恶意外部文件,造成文件读取、命令执行、内网端口、攻击内网、发起dos攻击等。
php反序列化:
序列化就是将一个对象转化成字符串;反序列化则是将字符串重新转化为对象。
php反序列化可以分为两种:无类只需提前将数据序列化后再传入;有类则需要依靠魔术方法来触发执行代码。
java反序列化:
java中的ObjectOutputStream类的writeObject()方法可以实现序列化,其作用是把对象转化为字节流,而readObject()方法可实现反序列化,将字节流还原成对象。
java典型反序列化:shiro反序列化
Apache shiro提供了一个remember功能生成cookie用来记住用户信息。服务端对cookie的处理流程是先将其base64解码,再进行aes解密,再将其反序列化进行检验。因此只要我们获取了aes的密钥,便能将恶意代码进行aes加密,再base64编码,发送给服务端,服务端便会触发恶意代码。
逻辑漏洞有哪些:
越权,响应包修改,支付金额修改,cookie爆破,密码找回等
登录框的渗透思路:
爆破,sql注入,万能密码,js文件查看敏感信息,目录扫描,通用系统漏洞尝等等
CDN和DNS区别:
CDN是内容分发网络,主要作用是让用户就近访问网络资源,降低网络拥堵。DNS是域名服务器,作用是将域名翻译成ip地址。
如何绕过CDN:
查询历史dns记录;查询子域名用来解析ip;网络空间引擎搜索;利用ssl证书寻找真实ip;使用国外主机解析域名;寻找网站信息泄露;网站邮件订阅查找;
常见的中间件漏洞:
iis6.0:PUT漏洞通过put请求上传恶意txt文件,再通过move请求更改文件后缀,即可拿下shell;
解析漏洞在*.asp目录下的任何文件会被解析asp文件,或者*.asp;.jsp分号后直接截断。
apache:解析漏洞是多个文件后缀包含php的,会利用配置文件特性而识别成php;
路径穿越漏洞是在一个存在且访问的目录下使用.%2e/%2e%2e/即可访问其它文件,
若开启cgi或cgid mod情况下,还可执行任意命令。
nginx:目录穿越漏洞由于配置不当使得xxx../即可穿越到上层目录;
文件解析漏洞是xxx.jpg/.php直接当作php文件执行;
等等等等。。。。。。
WAF绕过手法:
1.从真实ip渗透,同网段绕过,http和https同时开放服务绕过,边缘资产漏洞利用绕过。
2.分块传输,利用pipline绕过,更换协议,更改请求方式。
3.编码绕过,等价符合替换,内联注释,缓冲区溢出,文件格式绕过,参数污染,白名单及静态资源绕过。
等等等等。。。。。
命令无回显解决:
延时判断,http请求监听,dnslog,通过写入当前目录下载查看。
常见端口:
21:ftp 22:ssh 23:telent 25:smtp邮件服务 53:dns域名系统
80:http 443:https 1433:sqlserver 3306:mysql 3389:windows远程桌面
7701:weblogic 8080:tomcat
未授权访问:
对某些页面的验证不严格导致绕过了用户验证环节,使其能直接访问到后台。