Web安全-渗透基础

本文涉及的产品
.cn 域名,1个 12个月
密钥管理服务KMS,1000个密钥,100个凭据,1个月
简介: Web安全-渗透基础

渗透基本名词
1、WebShell

WebShell就是以asp、php、jsp或者cgi等网页文件形式存在的─种命令执行环境,也可以将其称做为─种网页后门。黑客在入侵了─个网站后,通常会将这些asp或php后门文件与网站服务器WEB目录下正常的网页文件混在─起,然后就可以使用浏览器来访问这些asp或者php后门,得到─个命令执行环境,以达到控制网站服务器的目的(可以上传下载文件,查看数据库,执行任意程序命令等)。国内常用的WebShell有海阳ASP木马,Phpspy,c99shell等。

2、同源策略

(1)为了防止不同域在用户浏览器中彼此干扰,浏览器对从不同来源(域)收到的内容进行隔离。
(2)浏览器不允许任何旧有脚本访问一个站点的cookie,否则,会话容易被劫持。
(3)只有发布cookie的站点能够访问这些cookie,只有通过该站点返回的页面所包含或加载的JavaScript才能访问cookie。

3、CC攻击

这个也是知道一些,知道他是DDos的变种,正常请求伪造,服务器资源耗尽,最终还是看看百科答案吧:CC攻击是DDOS(分布式拒绝服务)的一种,相比其它的DDOS攻击CC似乎更有技术含量一些。这种攻击你见不到真实源IP,见不到特别大的异常流量,但造成服务器无法进行正常连接。

CC攻击的原理就是攻击者控制某些主机不停地发大量数据包给对方服务器造成服务器资源耗尽,一直到宕机崩溃。CC主要是用来攻击页面的,每个人都有这样的体验:当一个网页访问的人数特别多的时候,打开网页就慢了,CC就是模拟多个用户(多少线程就是多少用户)不停地进行访问那些需要大量数据操作(就是需要大量CPU时间)的页面,造成服务器资源的浪费,CPU长时间处于100%,永远都有处理不完的连接直至就网络拥塞,正常的访问被中止。

4、DLL文件

DLL(Dynamic Link Library)文件,即动态链接库,也有人称作应用程序拓展。Windows应用程序中,实行了模块化设计,也就是说并不是每个应用程序都编写完所有的功能代码,而是在运行过程中调用相应功能的DLL,不需运行的功能就不调用,所以大大加快了程序的加载速度和效率,其他应用程序也可以调用相关的DLL,这样也有利于促进代码重用以及内存使用效率,减少了资源占用,而且程序更新时也只要更新相关的DLL就可以了。要注意的是,有些病毒也会伪装成DLL文件,并替换系统的DLL文件,需要我们防范。

(1)DLL劫持原理

由于输入表中只包含DLL名而没有它的路径名,因此加载程序必须在磁盘上搜索DLL文件。首先会尝试从当前程序所在的目录加载DLL,如果没找到,则在Windows系统目录中查找,最后是在环境变量中列出的各个目录下查找。利用这个特点,先伪造一个系统同名的DLL,提供同样的输出表,每个输出函数转向真正的系统DLL。程序调用系统DLL时会先调用当前目录下伪造的DLL,完成相关功能后,再跳到系统DLL同名函数里执行。这个过程用个形象的词来描述就是系统DLL被劫持(hijack)了。伪造的dll制作好后,放到程序当前目录下,这样当原程序调用原函数时就调用了伪造的dll的同名函数,进入劫持DLL的代码,处理完毕后,再调用原DLL此函数。

(2)如何防止DLL劫持
DLL劫持利用系统未知DLL的搜索路径方式,使得程序加载当前目录下的系统同名DLL。所以可以告诉系统DLL的位置,改变加载系统DLL的顺序不是当前目录,而是直接到系统目录下查找。

5、0day漏洞

0day漏洞是指已经发现但是官方还没发布补丁的漏洞。信息安全意义上的0Day是指在安全补丁发布前而被了解和掌握的漏洞信息。

6、软件脱壳

从技术的角度出发,壳是一段执行于原始程序前的代码。原始程序的代码在加壳的过程中可能被压缩、加密……。当加壳后的文件执行时,壳-这段代码先于原始程序运行,他把压缩、加密后的代码还原成原始程序代码,然后再把执行权交还给原始代码。软件的壳分为加密壳、压缩壳、伪装壳、多层壳等类,目的都是为了隐藏程序真正的OEP(入口点,防止被破解)。

“加壳”指的是对编译好的EXE、DLL等文件采用加壳来进行保护;“脱壳”指的就是将文件外边的壳去除,恢复文件没有加壳前的状态。壳出于程序作者想对程序资源压缩、注册保护的目的,把壳分为压缩壳、密码壳、加密壳三种。顾名思义,压缩壳只是为了减小程序体积对资源进行压缩,常见的压缩壳包括FSG、ASPack、UPX、北斗等;加密壳也就是常说的保护壳、猛壳,它对程序输入表等内容进行加密保护,具有良好的保护效果,常见的加密壳包括ASPROTECT、ACPROTECT、PELock、幻影等;密码壳平时使用得不多,加密壳的程序只有在正确输入密码后才能运行。

7、C段入侵

即同C段下服务器入侵。如目标ip为192.168.180.253 入侵192.168.180.*的任意一台机器,然后利用一些黑客工具嗅探获取在网络上传输的各种信息。常用的工具有:在windows下有Cain,在UNIX环境下有Sniffit, Snoop, Tcpdump, Dsniff 等。

8、手机越狱

所谓iOS系统的越狱就是取得系统最高权限的行为,越狱前后iOS系统本身并不会发生质的改变,只是越狱后可以对iOS系统进行更充分的利用而已。

越狱的好处:
(1)越狱之后操作性更强,取得了手机的最高权限,就可以修改手机内容,包括安装免费的破解软件、自定义功能、美化等等。
(2)越狱后可以绕过AppStore免费下载APP。

越狱的坏处:
(1)越狱后失去保修。
(2)越狱之后,后台程序运行,桌面主题等都会加大耗电。
(3)越狱就是打破iOS系统封闭,所以手机就相对变得不安全了。

渗透基本流程
黑客攻击流程

(1)攻击前:网络踩点、网络扫描、网络查点
(2)攻击中:利用漏洞信息进行渗透攻击、获取权限
(3)攻击后:后渗透维持攻击、文件拷贝、木马植入、痕迹擦除

渗透测试与入侵的最大区别

(1)渗透测试:出于保护系统的目的,更全面地找出务器的安全隐患。
(2)黑客入侵:不择手段地(甚至是具有破坏性的)拿到系统权限。

渗透测试流程:

1、明确目标

确定范围:测试目标的范围,ip,域名,内外网。
确定规则:能渗透到什么程度,时间?能否修改上传?能否提权等。
确定需求:web应用的漏洞(新上线程序)?业务逻辑漏洞(针对业务的)?人员权限管理漏洞(针对人员、权限)?等等。(立体全方位)
1
2
3
根据需求和自己技术能力来确定能不能做,能做多少。

2、 信息收集

方式:主动扫描,开放搜索等。
开放搜索:利用搜索引擎获得,后台,未授权页面,敏感url等。

基础信息:IP,网段,域名,端口
系统信息:操作系统版本
应用信息:各端口的应用,例如web应用,邮件应用等等
版本信息:所有这些探测到的东西的版本。
服务信息
人员信息:域名注册人员信息,web应用中网站发帖人的id,管理员姓名等。
防护信息:试着看能否探测到防护设备
1
2
3
4
5
6
7
3、漏洞探索

利用上一步中列出的各种系统,应用等使用相应的漏洞。

方法:

1.漏扫,awvs,IBM appscan等。
2.结合漏洞去exploit-db等位置找利用。
3.在网上寻找验证poc。
1
2
3
内容:

系统漏洞:系统没有及时打补丁
Websever漏洞:Websever配置问题
Web应用漏洞:Web应用开发问题
其它端口服务漏洞:各种21/8080(st2)/7001/22/3389
通信安全:明文传输,token在cookie中传送等。
1
2
3
4
5
4、漏洞验证

将上一步中发现的有可能可以成功利用的全部漏洞都验证一遍。结合实际情况,搭建模拟环境进行试验。成功后再应用于目标中。

自动化验证:结合自动化扫描工具提供的结果
手工验证,根据公开资源进行验证
试验验证:自己搭建模拟环境进行验证
登陆猜解:有时可以尝试猜解一下登陆口的账号密码等信息
业务漏洞验证:如发现业务漏洞,要进行验证
公开资源的利用:-exploit-db/wooyun/ -google hacking -渗透代码网站 -通用、缺省口令-厂商的漏洞警等等。
1
2
3
4
5
6
5、信息分析

为下一步实施渗透做准备。

精准打击:准备好上一步探测到的漏洞的exp,用来精准打击
绕过防御机制:是否有防火墙等设备,如何绕过
定制攻击路径:最佳工具路径,根据薄弱入口,高内网权限位置,最终目标
绕过检测机制:是否有检测机制,流量监控,杀毒软件,恶意代码检测等(免杀)
攻击代码:经过试验得来的代码,包括不限于xss代码,sql注入语句等
1
2
3
4
5
6、获取所需

实施攻击:根据前几步的结果,进行攻击
获取内部信息:基础设施(网络连接,vpn,路由,拓扑等)
进一步渗透:内网入侵,敏感目标
持续性存在:一般我们对客户做渗透不需要。rookit,后门,添加管理账号,驻扎手法等
清理痕迹:清理相关日志(访问,操作),上传文件等
1
2
3
4
5
7、信息整理

目的:为了最后形成报告,形成测试结果使用。

整理渗透工具:整理渗透过程中用到的代码,poc,exp等
整理收集信息:整理渗透过程中收集到的一切信息
整理漏洞信息:整理渗透过程中遇到的各种漏洞,各种脆弱位置信息
1
2
3
8、形成报告

按需整理:按照之前第一步跟客户确定好的范围,需求来整理资料,并将资料形成报告
补充介绍:要对漏洞成因,验证过程和带来危害进行分析
修补建议:当然要对所有产生的问题提出合理高效安全的解决办法
1
2
3
9、流程总结

APP安全测试
1、 安全威胁分析

2、 面临的主要风险
3、APP安全测试内容
4、安全测试流程

Web安全基础
SQL注入
SQL注入的防护手段:

(1)使用预编译语句(避免动态拼接SQL语句)

原理: SQL注入只对sql语句的准备(编译)过程有破坏作用,而PreparedStatement已经准备好了,执行阶段只是把输入串作为数据处理,而不再对sql语句进行解析、准备,因此也就避免了SQL注入问题。

(2)字符串过滤(在输入出设置过滤逻辑,过滤掉敏感的非法字符)
(3)使用框架技术(比如使用ORM-对象关系映射的Hibernate)
(4)使用存储过程(存储过程的SQL语句同样是提前编译好并存放在数据库中)

XSS跨站脚本攻击
1、XSS攻击的定义

XSS是指恶意攻击者利用网站没有对用户提交数据进行转义处理或者过滤不足的缺点,进而添加一些代码,嵌入到web页面中去。使别的用户访问都会执行相应的嵌入代码。从而盗取用户资料、利用用户身份进行某种动作或者对访问者进行病毒侵害的一种攻击方式。

2、XSS漏洞的修复

XSS的起因主要是:过于信任客户端提交的数据!解决办法:不信任任何客户端提交的数据,只要是客户端提交的数据就应该先进行相应的过滤处理然后方可进行下一步的操作。

(1)字符串过滤:在HTML中,<、>、"、‘、&都有比较特殊的意义,因为HTML标签、属性是由这几个符号组成的。如果直接输出这几个特殊字符,极有可能破坏整个HTML文档的结构。所以,一般情况下,XSS将这些特殊字符转义。

(2)启用HttpOnly:HttpOnly是微软公司的Internet Exploer 6 SPI引入的一项新特性。这个特性为Cookie提供了一个新属性,用以阻止客户端脚本访问Cookie。至今已成为一个标准,几乎所有的浏览器都会支持HttpOnly。

文件上传漏洞
1、文件上传漏洞攻击形成的几个条件:

(1)上传的文件能够被Web容器解释执行。所以文件上传后所在的目录要是Web容器所覆盖到的路径。
(2)用户能够从Web上访问这个文件。如果文件上传了,但用户无法通过Web访问,或者无法得到Web容器解释这个脚本,那么也不能称之为漏洞。
(3)用户上传的文件若被安全检查、格式化、图片压缩等功能改变了内容,则也可能导致攻击不成功。

2、防范文件上传漏洞常见的几种方法

(1)将文件上传的目录设置为不可执行;
(2)判断文件类型(在判断文件类型时,可以结合使用MIME Type、后缀检查等方式。在文件类型检查中,强烈推荐白名单方式,黑名单的方式已经无数次被证明是不可靠的);
(3)使用随机数改写文件名和文件路径;
(4)单独设置文件服务器的域名。

3、文件上传漏洞总体的测试流程

(1)登陆网站,并打开文件上传页面。

(2)点击“浏览”按钮,并选择本地的一个JSP文件(比如hacker.jsp),确认上传。

(3)如果客户端脚本限制了上传文件的类型(比如允许gif文件),则把hacker.jsp更名为hacker.gif;配置HTTP Proxy(burp)进行http请求拦截;重新点击“浏览”按钮,并选择hacker.gift,确认上传。

(4)在WebScarab拦截的HTTP请求数据中,将hacker.gif修改为hacker.jsp,再发送请求数据。

(5)登陆后台服务器,用命令find / -name hacker.jsp查看hacker.jsp文件存放的路径。如果可以直接以Web方式访问,则构造访问的URL,并通过浏览器访问hacker.jsp,如果可以正常访问,则已经取得WebShell,测试结束。如果hacker.jsp无法通过web方式访问,例如hacker.jsp存放在/home/tmp/目录下,而/home/tomcat/webapps目录对应 http://www.example.com/ ,则进行下一步。

(6)重复1~3,在burp拦截的HTTP请求数据中,将hacker.gif修改为…/tomcat/webapps/hacker.jsp,再发送请求数据。在浏览器地址栏输入 http://www.example.com/hacker.jsp ,访问该后门程序,取得WebShell,结束检测。

命令执行漏洞
命令执行漏洞概念:当应用需要调用一些外部程序去处理内容的情况下,就会用到一些执行系统命令的函数。如PHP中的system,exec,shell_exec等,当用户可以控制命令执行函数中的参数时,将可注入恶意系统命令到正常命令中,造成命令执行攻击。

防范命令执行漏洞的方法:

(1)尽量不要使用系统执行命令;
(2)在进入执行命令函数/方法之前,变量一定要做好过滤,对敏感字符进行转义;
(3)在使用动态函数之前,确保使用的函数是指定函数之一;
(4)对PHP语言来说,不能完全控制的危险函数最好不要使用。

文件包含漏洞
1、文件包含漏洞的概述
2、安全编写文件包含

CSRF跨站请求伪造
————————————————

                        版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

原文链接:https://blog.csdn.net/weixin_39190897/article/details/83313883

目录
相关文章
|
监控 安全 JavaScript
【web渗透思路】框架敏感信息泄露(特点、目录、配置)
【web渗透思路】框架敏感信息泄露(特点、目录、配置)
678 0
【web渗透思路】框架敏感信息泄露(特点、目录、配置)
|
4月前
|
SQL 安全 中间件
网安零基础入门神书,全面介绍Web渗透核心攻击与防御方式!
Web安全是指Web服务程序的漏洞,通常涵盖Web漏洞、操作系统洞、数据库漏洞、中间件漏洞等。 “渗透测试”作为主动防御的一种关键手段,对评估网络系统安全防护及措施至关重要,因为只有发现问题才能及时终止并预防潜在的安全风险。 根据网络安全调查统计,75%的网络攻击行为都是来自Web应用层面而非网络层面。
|
安全 Shell Apache
记一次从web到内网的渗透
记一次从web到内网的渗透
145 0
|
前端开发 安全 JavaScript
【web渗透思路】任意账号的注册、登录、重置、查看
【web渗透思路】任意账号的注册、登录、重置、查看
760 0
【web渗透思路】任意账号的注册、登录、重置、查看
|
XML SQL 安全
【web渗透思路】敏感信息泄露(网站+用户+服务器)
【web渗透思路】敏感信息泄露(网站+用户+服务器)
652 0
【web渗透思路】敏感信息泄露(网站+用户+服务器)
|
SQL 缓存 JavaScript
【nodejs代理服务器一】nodejs http-proxy 开发反向代理服务器,防火墙,过滤常见的web渗透
【nodejs代理服务器一】nodejs http-proxy 开发反向代理服务器,防火墙,过滤常见的web渗透
573 0
【nodejs代理服务器一】nodejs http-proxy 开发反向代理服务器,防火墙,过滤常见的web渗透
|
安全 项目管理
【web渗透】appscan 免费版下载
【web渗透】appscan 免费版下载
170 0
|
存储 安全 算法
web渗透听课笔记
web渗透听课笔记
92 0
|
SQL 存储 安全
web渗透之sql注入
所谓SQL注入,就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令,比如先前的很多影视网站泄露VIP会员密码大多就是通过WEB表单递交查询字符暴出的,这类表单特别容易受到SQL注入式攻击.当应用程序使用输入内容来构造动态sql语句以访问数据库时,会发生sql注入攻击。如果代码使用存储过程,而这些存储过程作为包含未筛选的用户输入的字符串来传递,也会发生sql注入。黑客通过SQL注入攻击可以拿到网站数据库的访问权限,之后他们就可以拿到网站数据库中所有的数据,恶意的黑客可以通过SQL注入功能篡改数据库中的数据甚至会把数据库中的数据毁
|
存储 安全 网络安全
web渗透_一句话木马(webshell)_dvwa环境
web渗透_一句话木马(webshell)_dvwa环境
web渗透_一句话木马(webshell)_dvwa环境