记一次曲折的渗透测试> 本次渗透测试为授权测试,信息皆做脱敏处理启拿到网站,其中一个资产为该单位办公系统,看到界面比较老,感觉有戏,所用系统为九思oa,先去搜一下已公开的poc看看…
记一次曲折的渗透测试
本次渗透测试为授权测试,信息皆做脱敏处理
0x00 启
拿到网站,其中一个资产为该单位办公系统,看到界面比较老,感觉有戏,
所用系统为九思oa,先去搜一下已公开的poc看看能不能去打
搜到了两个,尝试无果,就把所有资产都丢进awvs里扫一下,抱着试一试的心态去看看能不能扫出东西来
发现此处存在sql注入,可执行sleep语句,就去抓个包,尝试用sqlmap一把梭
python sqlmap.py -r 1.txt --dbs
发现跑不出来,想找原因,就去手工测试了一下
在输入admin的时候提示是该用户没有维护邮箱,但是应该存在该用户
加'发现报错提示没有该用户信息
加了#号之后和单独输入admin一样,那就证明其存在sql注入,通过fuzzy,发现其过滤了空格。
尝试用sqlmap的temper脚本去绕过
python sqlmap.py -r 1.txt --tamper\=space2comment -dbs
果然成功了
0x01 承
想要通过sql注入注出账号密码
jsdb的md5解密后为12345678
root的md5解密后为jiusi
用御剑扫描其端口发现其数据库端口并未开放,只能作罢,去寻找其他思路
尝试去写一个webshell进去,发现也失败了,权限不够,而且不知道绝对路径
那就尝试去注出网站的账号密码,登入试试看看能不能getshell。
此时问题又来了,我们不知道账号密码在那个表里,而且由于是盲注,速度比较慢,一个oa里有几百张表,一个表里有几十个字段,也来不及一个一个试,此时又陷入了僵局。
0x02 转
我们继续去扫描该单位站点,发现该单位还有一测试的九思oa站点,且端口开放为3306,猜想之前注出的数据库密码jiusi为该数据库的密码,直接用Navicat去连接,
发现其表的结构如下
有几百张表(幸亏没跑盲注),通过该表的结构,去构造相应的sql语句(利用sqlmap的sql-shell来执行),成功把管理员以及其他用户的账号密码注了出来,数据库的密码并非用明文储存,
注出一串39位的字符,并非md5,通过对前端代码进行分析,发现其先进行了md5加密,然后交给后端处理,一定是后端又进行了加密,在网上搜到了该oa的部分源码
发现其逻辑如下,先截取10到15位的字符,后面去添加随机生成的字符,再截取0-5位的字符,再去生成一个随机字符添加到后面,以此类推。通过对算法逆向得出如下结果,需要舍弃固定位数,再对字符串进行重拼,即可得到相应的md5值,然后尝试去md5解密,可惜的是没把管理员的md5给破解出来,破解出来了一些普通用户的密码,然后登入。
0x03 合
进入oa,看看有没有上传点,尝试上传,发现其过滤了.jsp文件后缀,且为白名单上传,尝试了几个姿势,无法绕过。
通过指纹识别发现其利用了eweditor组件,搜索该组件是否存在漏洞,
尝试用默认密码登入,发现可以进去,把图片类型给加一个jsp,尝试上传
上传成功
成功rce,接下来就上线CS去内网漫游
- 本文作者: Air
- 本文来源: 奇安信攻防社区
- 原文链接: https://forum.butian.net/share/1759
- 版权声明: 除特别声明外,本文各项权利归原文作者和发表平台所有。转载请注明出处!