声明:该公众号分享的安全工具和项目均来源于网络,仅供安全研究与学习之用,如用于其他用途,由使用者承担全部法律及连带责任,与工具作者和本公众号无关。
免责声明: 该教程仅用于网络安全学习,如有人利用该技术从事违法犯罪行为一切和作者无关,请各位遵守法律法规!
可以转发,禁止直接复制粘贴!
挖掘过程
开局一个登录框,常规思路弱口令,每次的攻防演习都离不开最大威胁-弱口令,现如今这个是最为简单也是最好的入口点,因为弱口令不仅仅只会让你获得web管理权限,还有其他协议的权限,所以打某个目标前一定要对比好路径,开放端口。
部分弱口令如下:
admin/admin@123
admin/Epoint@11111
admin/Epoint@22222
admin/111111
admin/000000
admin/222222
sysadmin/1
Admin/1
A0000054/A0000054
E000005/E000005
postgres/123456
在尝试弱口令后无果后尝试使用SQL注入万能密码也没有反应
第二个思路:爆破,但爆破不是对所有网站都行,而且爆破非常浪费时间,这里不到迫不得已时不要使用爆破这种方法
第三个思路:查看是否有逻辑漏洞,使用bp对该网站进行抓包
可以看到网站使用的明文传输,明文传输可能是我们做渗透测试中,最常见的一种漏洞,实际上它并不能算得上是一种漏洞,仅仅只能说是一种不足之处而已,明文传输在网站上随处可见,除了银行网站,很有可能每一个密码都是经过特殊加密然后再进行传输的,我们重点分析一下他的响应包
响应内容为
{"info":"u5bc6u7801u9519u8befuff01","status":0,"code":"110192","url":""}
通过分析得到
-
"info"字段的值是"u5bc6u7801u9519u8befuff01",经过Unicode解码后是中文字符,意思是"密码错误!",这表明可能是由于密码错误而导致的问题。
-
"status" 字段中的值为 0,通常表示请求或操作没有成功完成。
-
"code" 字段中的值为 "110192",可能是用于识别特定类型错误的代码或标识符。
-
"url" 字段为空,可能表示没有相关的链接提供更多信息或帮助。
综合来看,这段响应提示了密码错误,并且请求因此未成功完成。
尝试将status值改为1,code值改为0,修改后的响应内容为
{"info":"u5bc6u7801u9519u8befuff01","status":1,"code":"0","url":""}
放包后,页面没有任何反应,猜测应该是值不对或者不存在逻辑漏洞
思路四:查看js文件,这里推荐一个工具,在我公众搜索
JSSCAN即可获取工具
在这次的渗透测试中先使用手工测试,万能的F12
审计发现存在一个文件上传页面
UPLOAD_PICTURE
: 这是一个用于上传图片的URL看起来是通过post将图片上传到服务器
UPLOAD_FILE
: 这是一个用于上传文件的URL,类似上传图片,可能用于上传其他文件
UPLOAD_DIALOG_URL
: 这是一个用于上传文件的对话框的URL,可能是一个弹出式对话框,用于文件上传
前两个url需要构造参数才能够上传,我们重点关注一下第三个url
打开后有一个图片的上传点,打开最近上传为空白页面,应该最近没有上传过或者我们没有权限打开
此时已经在幻想上传shell了
结果发现此处有设置了白名单只允许gif,jpg,jpeg,png,bmp文件上传,
尝试抓包更改文件名进行绕过,发现根本上传不了,还是太菜了
回到开始的登录框继续查看js文件
居然发现了一个注册页面,把我注册页面给我注释掉了
任意注册一个admin1账号看看
直接登录进了后台,并且拥有管理员权限,猜测这应该是一个管理员注册页面
进去之后也是发现有很多订单,这里厚码
进去测试了多个功能点,均发现上传不了shell,也没有发现sql注入点
综合发现没有利用点,还是太菜了
最后总结一下开局登录框应该如何渗透
登录 注册
万能密码绕过登录
存在 SQL 注入的情况下,有可能使用万能密码直接登录
admin' or '1'='1'--
admin' OR 4=4/*
"or "a"="a
' or''='
' or 1=1--
有超级多
登录口 SQL 注入
存在 SQL 注入的话直接注出账密
未授权访问
后台未授权访问
列举几种找未授权访问的方法
・使用目录扫描工具,如 dirsearch 等扫描路径,有的可能存在目录遍历
・查看 js 代码中登录成功后的跳转 url
・使用 jsfind 找可疑 url
其他功能点 (注册)(找回密码)
任意重置密码
此时客户端会发一个验证码包,这是随意输入验证码,发包,返回包
返回包错误的回显为 {“status”:0},将返回包的东西换成 {“status”:1},即可重置密码
用户枚举漏洞
找回密码界面,输入用户名抓包,查看返回包中泄露的信息
输入用户名 admin 点击确定,查看 Burp 捕获的包,其中有一个请求包用于确认用户 admin 是否存在,存在则返回用户的邮箱信息
验证码问题
验证码不刷新
验证码不会自动刷新,导致一个验证码可以用很多次
验证码失效
验证码无效依然可爆破,在挖掘弱口令的时候,常常会遇到图片验证码无效的情况,此时只需要输入正确的账号密码和验证码,使用 burpsuite 依然可继续爆破
验证码前端返回
有的平台可能验证码校验在前端进行,错误的将后台的验证码返回到前端,导致攻击者可以抓取返回包中的验证码
验证码爆破
有的平台可能验证码比较简单只有几位数字,且没有对登录次数限制,存在爆破,使用 burp 抓包爆破
验证码可重复使用
实例:通过一分钟发送一次,可同时存在多条有效的验证码,通过爆破验证达到任意密码重置漏洞
验证码短信轰炸
对于验证码发送次数没有做限制,导致造成短时间内短信重发,使用 burp 抓取获取验证码的包放到 repeater 不断重放,更暴力点可以使用 intruder
验证码 OCR
对登录页面使用工具如 xcode 对验证码进行识别爆破用户账号密码
验证码验证逻辑错误
就是验证码可以修改接收者,将账户修改密码的验证码抓包修改为其他手机号,后台并没有做验证
万能验证码
可能存在万能验证码 0000 或者 9999,不常见
越权
过于简单的 cookie
如果用户登录后的 cookie 并不是随机的,而是如
cookie:Guest
这种过分简单的身份验证方法,可以导致越权,如果又存在用户注册,就可以注册一个普通用户然后越权为 admin
已知漏洞利用
因为一个 web 服务会用到很多组件,只要一个组件出现漏洞,这个密不透风的墙就被推到了,所以说资产收集是很重要的,收集足够多的信息,知己知彼百战百胜
有条件可以用一个扫描器扫描已知漏洞
・web 框架历史漏洞
・cms 历史漏洞
・oa 历史漏洞
・使用 fofa、浏览器插件 wappalyzer 等收集资产,然后拿漏洞库的 poc 去尝试。工具地址: https://www.wappalyzer.com/
弱口令
默认密码
很多设备都存在默认的帐号密码
特别是一些厂商设备弱口令很常见
https://wiki.bylibrary.cn/%E9%80%9F%E6%9F%A5%E8%A1%A8/%E5%B8%B8%E8%A7%81%E4%BA%A7%E5%93%81%E5%BC%B1%E5%8F%A3%E4%BB%A4/
一个简单的弱口令就让高昂的设备白给
测试账号未删除
比如 test,ceshi
拼音姓名字典
拼音姓名字典、用户名字典(如 root,system,admin1 等)+ 弱口令爆破,使用常规的拼音姓名字典 +123456,123,等弱口令进行爆破
如果网站有注册功能,破解用户密码的时候可以先去注册查看注册机制,如果可以使用 123456 等
密码那么就用拼音字典去爆破 123456 等弱口令,如果不行,可根据密码复杂程度制作密码,比如密码需求是字母加数字的八位,就可以尝试 abcd1234 等符合密码规则的密码进行爆破
* 用户名枚举
使用两位字母和三位字母枚举,爆破 123456 等弱口令,成功爆破出一枚管理员后台账号密码,之前一个学校的后台弱口令没成功,SQL 注入后发现用户名全是姓名首字母,密码 1111
提示过于详细
当爆破的时候返回包显示密码不正确和用户名不存在的时候,我们可以搜集这些用户名进行专门的弱口令爆破,例如我爆破出存在多个存在的用户名,首先搜集这些用户名,然后设置 burpsuite,通过以下格式的方法进行爆破,例如:Lihua,lihua123 lihua lihua lihua lihua@123 lihua lihua1234 且注意网站下方是否有建立时间,如果时间是 2017 年建站的 ,我们的密码可以设置成 lihua@2017 lihua@2018 等进行专门针对用户名的爆破
域名做字典
截取子域名一部分作为字典挖掘弱口令
比如学校 wlzx(网络中心),tw(团委),jxzl(教学质量)等常见的系统用户名也是子域名
根据网站性质猜测用户名,比如教务类网站常有 teacher,student1 等用户名,或者企业缩写为用户名
搜集文章发布者姓名
搜集文章发布者姓名,在挖掘弱口令漏洞的时候,我常常会搜集文章发布者的姓名,网页上会有一些文章发布者的名字,我会把它搜集其他作为针对该网站爆破后台的用户名,并且整合前几种方法进行爆破。如果遇到中文名的管理员,我会把它转换为英文名,比如发布者:李刚,我的字典里就会多 lilgang,lg,lig,lgang,这几个用户名,配合前几种姿势进行爆破。当然也遇到过比较奇葩的,直接就是中文为用户名
信息收集
不放过细节,qq 群号很重要
在以前遇到一个这样的案例,网站上面存在一个客服 qq 群号码,网站是需要公司用户登录的,验证码也无法爆破,我在了解了网站的业务之后,通过网站上的 qq 群号码加群,在群公告之中发现了默认密码是 xxx@xx1, 但是不知道用户名,就在群里问了一句我登录不进去了,然后私聊一些群里的其他用户获取了用户名是企业统一信用代码,而群名片就是企业名字。我通过中国企业统一代码查询网站得知了这些企业的用户名。然后通过该默认密码进入了后台继续深入挖掘。另外在 src 上也挖到过同类问题,直接通过企业用户名和企业信用代码就可以重置企业用户密码进而查看学生简历,总而言之,任何网页上的信息都可能作为用户名,需要细心搜集
注册账号搜寻信息
在网站登录口无法爆破的时候,可以耐下心来注册,通过后台搜索好友等方法搜集用户名。然后在了解注册密码复杂程度机制之后挨个挨个的去手工尝试用户名密码。比如搜集到了 lihao 用户名,就可以参照前面的方法手动尝试 lihao lihao123 等密码进行登录,此方法需要很大耐心,但是十分有效
安装文档
搜集该网站的安装文档,使用文档等寻找默认账号密码或者未打码(也可以通过百度,谷歌,百度网盘等搜集)
Fuzz
工号、学号、身份证号等 fuzz,当遇到用户名可能为工号的情况下,fuzz 一波数字工号 ,或者寻找有无工号泄露的地方,根据工号继续爆破
扩展
思考爆破时什么变量是可控的
当我们遇到一个段的测试任务时,可以使用一个简单的弱口令字典批量爆破整个段的服务。不管内网还是外网都实用,例如内网想爆破 ssh 的时候,可以使用
总结还是比较菜的,希望和师傅们共同学习交流
有任何问题欢迎各位师傅提出宝贵的意见
原文始发于微信公众号(狗头网络安全):记一次对某国外购物网站的渗透
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论