Web渗透
1 Web安全简介1.1 服务器是如何被入侵的
攻击者在渗透服务器时,直接对目标下手一般有三种手段:C段渗透、社会工程学、Services;
1.C段渗透:通过渗透同一网段内的一台主机对目标主机进行ARP等手段渗透。
2.社会工程学:一种高端的渗透方式。
3.Services:软件溢出、mysql、ftp、web(sql注入、上传漏洞、xss、包含漏洞、代码执行、逻辑漏洞...)、msssql、rdp
2.深入HTTP请求流程
2.1 工作原理
客户端请求(request)与服务端的回应(respond)
请求(request)方法:GET、HEAD、POST PUT DELETE TRACE CONNECT OPTIONS
2.2 状态码:
1.1xx: 信息提示
2.2xx:成功
3.3xx:重定向
4.4xx:客户端错误状态码,例如请求一个不存在的url
5.5xx:服务器出错
2.3 http头
四部分组成:请求头、响应头、普通头、实体头。
1.请求头
a.Host:被请求资源的internet主机和端口号
b.User-Agent:客户端浏览器、系统信息等信息
c.Referer:代表当前访问URL的上一个URL,用户是从什么地方来到本页面
d.Cookie:一段文本,存储请求者的身份
e.Range:
f.x-forward-for:XFF头,代表请求端IP
g.Accept:指定客户端接收哪些MIME类信息:text/html
h.Accept-Charset:客户端接收的字符集
2.响应头
a.Server:服务器所使用的Web服务器名称
b.Set-Cookie:向客户端设置Cookie
c.Last-Modified:服务器通过这个头告诉浏览器,资源的最后修改时间
d.Location:服务器告诉客户端访问哪个页面,配合302状态码使用
e.Refresh:服务器通过这个告诉浏览器定时刷新浏览器
3.普通头
4.实体头
a.Content-Type:向接收方指示实体的介质类型
b.Cotent-Encoding:编码集
c.Content-Length:实体正文长度
d.Last-Modified:资源最后一次修改日期和时间
3.信息探测
3.1 Google Hack
3.2 Nmap探测主机信息
3.3 DirBuster资源探测工具
4.漏洞扫描
4.1 Burp Suite:Target模块、Spider模块、Scanner、Intruder自动攻击模块
4.2 AWVS:安全测试工具
4.3 AppScan:漏洞扫描工具
5.SQL注入漏洞
1.注入原理:用户输入的数据被SQL解释器执行
2.注入漏洞分类:数字型和字符型
3.注入工具:SQLMAP、Pangolin、Havij
4.防止sql注入:严格的数据类型、特殊字符转义、使用预编译语句、框架技术、存储过程
6.上传漏洞
1.解析漏洞
a.IIS解析漏洞
b.Apache解析漏洞
c.PHP CGI漏洞
2.绕过上传漏洞
a.客户端检测(在客户端绕过)
b.服务端检测(在服务端绕过)
3.文本编辑器上传漏洞
a.敏感信息暴露
b.黑名单策略暴露
c.任意文件上传漏洞
5.预防总结:
a.对路径进行验证
b.文件进行重命名
7.XSS跨站脚本漏洞
1.介绍
XSS 是指攻击者在网页中嵌入客户端脚本,通常是 JavaScript编写的恶意代码,当用户使用浏览器浏览被嵌入恶意代码的网页时,恶意代码将会在用户的浏览器上执行。
2.类型
a.反射型XSS:当用户访问一个带XSS代码的URL请求时,服务器端接收数据后处理,然后把带有XSS代码的数据发送到浏览器,浏览器解析这段带有 XSS 代码的数据后,最终造成 XSS 漏洞。
b.存储型XSS:当攻击者提交一段 XSS代码后,被服务器端接收并存储,当攻击者再次访问某个页面时,这段 XSS 代码被程序读出来响应给浏览器,造成 XSS 跨站攻击,这就是存储型 XSS。
c.DOM型XSS:一般发生在客户端处理数据阶段,经典例子:

3.检测XSS
1.手动检测XSS
a.可得知输出位置:输入一些敏感字符,提交处理,看有没有被转义
b.无法得知输出位置
2.自动检测XSS
a.通过appscan、awvs、burp suite工具检测
4.XSS高级利用
a.盗取用户 Cookie
b.修改网页内容
c.网站挂马
d.利用网站重定向
e.XSS 蠕虫
5.修复XSS跨站漏洞
1.关键在与控制输入与输出
2.使用HttpOnly:用以阻止客户端脚本访问Cookie,防止XSS会话劫持
8.命令执行漏洞
1.命令执行类型
a.php命令执行:
1.命令执行:system() shell_exec() exec() passthru(),例如system("ping",$host)
2.代码执行:eval()函数,把字符串按照php代码来执行
3.动态函数调用
4.php函数代码执行漏洞:preg_replace()、ob_start()、array_map()
b.java命令执行
1.Runtime.getRuntime来执行系统命令。
3.框架执行漏洞
1.Struts2代码执行漏洞
2.ThinkPHP命令执行漏洞
4.防范命令执行漏洞
a.尽量不要使用系统执行命令;
b.在进入执行命令函数/方法之前,变量一定要做好过滤,对敏感字符进行转义;
c.在使用动态函数之前,确保使用的函数是指定的函数之一;
d.对 PHP 语言来说,不能完全控制的危险函数最好不要使用;
9.文件包含漏洞
1.包含漏洞解析
a.php包含
1.php包含漏洞的利用:
*读取敏感文件
*远程包含shell
*本地包含配合文件上传【上传图片,图片包含代码】
*使用php封装协议
*包含Apache日志文件
*截断包含
*绕过waf防火墙
b.jsp包含
1.静态包含
2.动态包含
2.安全编写包含:
严格判断包含中的参数是否外部可控,因为文件包含漏洞利用成功与否的关键点就在于被包含的文件是否可被外部控制;
路径限制:限制被包含的文件只能在某一文件夹内,一定要禁止目录跳转字符,如:“./”;
包含文件验证:验证被包含的文件是否是白名单中的一员;
尽量不要使用动态包含,可以在需要包含的页面固定写好,如:include("head.php");
10.其它漏洞
1.CSRF漏洞(跨站请求伪造)
2.逻辑错误漏洞
3.代码注入
a.XML注入
b.XPath注入
c.JSON注入
4.URL跳转与钓鱼
待续。。。