记一次完整的渗透测试

admin 2022年5月12日11:20:59评论197 views字数 2541阅读8分28秒阅读模式

偶然间翻到了去年的一次渗透测试报告,个人觉得还算是有点东西,所以在这里向大家分享一下


首先测试环境当然是有授权的,客户那边是存在云waf和ips的,ips加白之后,云waf却怎么也加不上,这样就给我带来了很大的困扰,比如说sql注入sqlmap不但用不了,而且还经常封禁我,甚至我的云服务器都被封了一整天。。。


所以这边文章带来了sql注入绕waf的姿势,该云waf为某某云waf,比较简单吧个人认为


首先映入眼帘的是登录框,客户给了一个低权限的账户,由于是生产环境所以不能上扫描器,不能插垃圾数据,不能做一些危害性比较高的操作


记一次完整的渗透测试


登录框能测啥,欢迎大家前去我的博客,个人总结了一些,应该是很全了

https://blog.csdn.net/weixin_48421613/article/details/117535912


1. 明文传输问题

说实话,此处除了没有验证码之外并没有测出来登录前有啥漏洞,所以第一个问题仅仅写了一个密码明文传输,关于密码明文这个问题呢,其实主要有以下几种情况:


  1. 使用HTTPS传输,那么传输层加密,此时不存在明文传输引起的嗅探风险,但是由于缺乏验证码,所以存在枚举/爆破风险

  2. 使用HTTP传输,此时存在嗅探风险

  3. 使用HTTPS传输,且有图形验证码,此时我认为是相对安全


记一次完整的渗透测试


2. 登陆中问题-SSO登录认证缺陷

问题描述:

SSO认证存在缺陷,可越权登录他人账户


首先让我们看一下正常登录后,普通用户的功能


记一次完整的渗透测试


此时退出登录,重新登陆,同时拦截数据包,并将response返回包返回至当前页面

此时返回数据包如下

记一次完整的渗透测试


此时发现该参数为用户权限信息,只有在登录的时候和刚刚进入后台的时候会有两个数据包,皆有该参数,该参数为base64加密后的数据,此时将此参数修改为管理员base64加密数据,而后提交数据包


记一次完整的渗透测试


不难发现,成功的出现了系统管理模块,此时提权为管理员权限,越权登录成功


记一次完整的渗透测试


3. 登陆后问题-任意用户密码重置漏洞

问题描述:

可通过篡改用户名或ID、暴力破解验证码等方式修改/重置任意账户的密码


记一次完整的渗透测试


输入想要修改的密码,初始数据包如下图所示

不难发现,仅仅是有想要修改的用户名、修改的密码字段


记一次完整的渗透测试


修改accessToken参数为admin,此处使用base64编码即可


记一次完整的渗透测试


修改提示成功,此时退出登录,使用admin用户进行登录,登录成功


记一次完整的渗透测试


4. 登陆后问题-任意文件读取漏洞


问题描述:

目录遍历(任意文件下载)漏洞不同于网站目录浏览,此漏洞不仅仅可遍历系统下web中的文件,而且可以浏览或者下载到系统中的文件,攻击人员通过目录遍历攻击可以获取系统文件及服务器的配置文件等等。一般来说,他们利用服务器API、文件标准权限进行攻击。严格来说,目录遍历攻击并不是一种web漏洞,而是网站设计人员的设计“漏洞”


这里也是运气成分居多,在测试的时候,里面有很多下载报表的位置,但是大多是JWT格式加密的,尝试解密后,皆是只能解密一部分,那么基本上就不存在该漏洞,然而还是有一个被我找到了,下载的时候参数后面啥也没有,既不是JWT也不是常见的路径名下载


记一次完整的渗透测试


点击下载按钮,同时拦截数据包,输入测试poc,可遍历任何文件

xxx=%2xxx%2F..%2F..%2F..%2F..%2F..%2F..%2F..%2F..%2F..%2F..%2F..%2F..%2F..%2F..%2F..%2F..%2F..%2F..%2Fetc%2Fpasswd


记一次完整的渗透测试


5. 登陆后问题-SQL注入漏洞


问题描述:

所谓SQL注入,就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。具体来说,它是利用现有应用程序,将(恶意)SQL命令注入到后台数据库引擎执行的能力,它可以通过在Web表单中输入(恶意)SQL语句得到一个存在安全漏洞的网站上的数据库,而不是按照设计者意图去执行SQL语句。造成SQL注入漏洞原因有两个:一个是没有对输入的数据进行过滤(过滤输入),还有一个是没有对发送到数据库的数据进行转义(转义输出)。


该站注入漏洞还是不少的,此处仅以一处为案例,漏洞页面其实就是一个搜索表单


记一次完整的渗透测试


此处存在布尔型盲注,不会出现数据库报错等错误,所以只能根据延迟或者数据变化来进行测试


此处存在基于字符型的布尔注入,继续进行测试,由于存在waf,需要对其进行特殊绕过,继续进行测试,输入测试poc , 条件为真时,数据消失

xxx='%0bor%0b1='1


记一次完整的渗透测试


条件为假时,数据恢复


记一次完整的渗透测试


利用此特性进行注入查询,输入测试poc获取当前数据库库名长度为8

xxxxx='%0bor%0blength(database())='8

记一次完整的渗透测试


通过此poc可获取当前数据库库名对应的ascii值,标红的位置为需要遍历的参数,第一个选中1-8;第二个选中32-127即可,而后将结果进行排序即可获取相对应的库名ascii值,解密即可

xxxx='%0bor%0bascii(mid(substr(database(),1,1)))='8


脚本参考如下,将结果按照顺序存放入chr.txt即可,注意,每一个值需要换行



f=open("chr.txt",'r+')s=[]for i in f.readlines():    str=i.strip()    c=chr(int(str))    print(c)    s.append(c)print(''.join(s))


当然了,最后还测试出了垂直越权、任意文件上传漏洞,这里就不做过多的展示了,关于垂直越权和常见的逻辑漏洞,我的博客也有归纳,请各位移步


https://blog.csdn.net/weixin_48421613/article/details/111117004


https://blog.csdn.net/weixin_48421613/article/details/121008379


还是那句话

CSDN Vlan911西



原文始发于微信公众号(爱喝酒烫头的曹操):记一次完整的渗透测试

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年5月12日11:20:59
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   记一次完整的渗透测试http://cn-sec.com/archives/1000861.html

发表评论

匿名网友 填写信息