欢迎光临散文网 会员登陆 & 注册

项目13:SickOs1.2

2023-08-18 14:56 作者:沙漠里的鲸  | 我要投稿

##Nmap信息收集

---靶机IP:192.168.95.181

---全端口扫描:只开了22和80端口

---思路:枚举web页面获取WebShell或者SSH爆破

---搜索一下版本信息和操作系统信息,没有什么有用信息

##Web信息枚举

---访问80发现一张图

---查看前端源码,没有什么信息,下载图片

---使用binwalk、exiftool、strings分析,也没有什么信息

---dirb进行目录爆破,发现存在test目录

---访问一下,发现存在目录泄露,而且存在:lighttpd/1.4.28

---Lighttpd是一个德国人领导的开源软件,其根本的目的是提供一个专门针对高性能网站,安全、快速、兼容性好并且灵活的web server环境。具有非常低的内存开销,cpu占用率低,效能好,以及丰富的模块等特点(类似于Apache的轻量级中间件)

---思路1:搜索lighttpd/1.4.28是否存在漏洞

---niKto扫描也发现了/test目录,还发现了Phpinfo的信息泄露

---但是这里phpinfo的信息看不出什么

##不安全的HTTP方法

---HTTP请求方法并不是只有GET和POST,只是最常用的

---据RFC2616标准(现行的HTTP/1.1)通常有以下8种方法:

---接下来用OPTIONS来进行请求:OPTIONS一般是对CORS(跨域资源共享)枚举

---通过这里测试,发现允许PUT请求(可以上传文件)

---也可以直接通过Curl进行测试

  • -v   ---列出详细的信息

  • -X   ---指定请求OPTIONS选项信息(GET/POST/PUT等)

---这两个Allow字段反映了服务器允许客户端使用的不同HTTP方法

---第一个字段涵盖了更多WebDAV相关的方法,而第二个字段包括了通用的HTTP方法

---WebDAV是一种扩展了HTTP协议的标准,用于支持文件的创建、修改、移动、复制等操作,以及一些属性的管理等

##文件上传获取WebShell

---方法1:通过Curl+POST传递数据

---注意:这里的系统命令执行还有:passthru、system、exec等

---PHP的代码执行和系统命令执行函数如下

---:-d/--data <data>  : HTTP POST方式传送数据

---直接浏览器访问进行系统命令执行

---然后利用Python进行一句话反弹

---但是监听的端口一直没有动静,说明存在防火墙(只允许指定端口进行联网

---可能1:找不到6677端口

---可能2:禁ping,找不到我们的Kail,只允许Kail去访问靶机(直连shell)

---这里是只允许443和8080端口进行外部连接

---方法2:上传weevely的马子

---weevely生成密码为passdayu的名为dayu.php的马子

---curl进行--upload-file文件上传

  • -0/--http1.0 :使用HTTP 1.0

  • -1/--tlsv1  使用TLSv1(SSL)

  • -2/--sslv2 使用SSLv2的(SSL)

  • -3/--sslv3 使用的SSLv3(SSL)

---其中http1.0/1.1/2的区别

---HTTP和HTTPS区别

---发现上传成功

---通过weevely进行连接

---注意:只有这个工具可以自动的去找端口连接,其它的不行

##内网信息收集

---使用http.server进行上传,发现防火墙不能传递

---使用curl上传linpeas.sh

--在linpeas.sh文件的目录上传

---然后执行赋予权限执行脚本,但是这个shell存在问题,不再执行linpeas.sh

---需要使用443端口才能绕过防火墙(这个可以测试除了,因该需要循环去尝试)

---这里出现:1,内核版本提权 2.Sudo版本漏洞

---普通用户存在SUDO权限

---SUID里面没有可以提权的命令

---本地端口只开启了22和80端口

---查看/etc目录下的计划任务:find /etc -name "*cron*" 2>/dev/null

---但是/etc/cron.d里面没有进行权限

---进入/etc/cron/daily查看计划任务下面存在chkrootkit文件(其它用户只存在执行权限

---Rootkit是一个恶意软件,它可隐藏自身以及指定的文件、进程、网络、链接、端口等信息

---Rootkit通过加载特殊的驱动修改系统内核,进而达到隐藏信息,Rootkit的三要素就是:隐藏、操纵、收集数据
---Rootkit具有隐身功能,无论静止时作为文件存在,还是活动时作为进程存在,都不会被察觉,它可能永远存在于计算机中
---Chkrootkit是一款用来检测rootkit的软件,运行环境为linux,可以直接通过http://www.chkrootkit.org/download/地址来下载,随后进行解压缩。

---查找chkrootkit文件的路径

----这两个分别对应:配置信息和环境变量 信息

---将2个文件拷贝到目录泄露目录:cat /usr/sbin/chkrootkit > /var/www/test/1.txt

---在浏览器进行访问查看

---注意:Chkrootkit的版本是0.49(注意:普通用户只存在执行权限)

---刚好这里存在一个Chkrootkit的0.49的本地提权漏洞

---exp如下

---存在漏洞的原因是:行“file_port=$file_port$i,因该“”修改成file_port="$file_port $i"

---根据exp借助chatgpt仔细分析一下chkrootkit的配置文件

---该脚本定义了一个名为slapper的函数,旨在在Shell环境中执行。

---它的目的是通过检查网络统计信息和与蠕虫相关的特定文件的存在

---来检测Slapper Worm的存在,如果发现任何感染迹象,它会提供警告消息;

---否则,它会指示未检测到感染

#chkrootkit 0.49漏洞总结

---1)/tmp目录创建update文件,.cinik文件,.b文件

---2)update在Linux下可执行,而且具有root权限

---3)产生原因:file_port=$file_port $i 这种写法实际上是不正确的,Shell 会尝试将 $i 所代表的文件路径(/tmp/update)作为一个命令来执行,而不是将它作为变量进行处理,“file_port $i” 会调用$SLAPPER_FILES中指定的所有文件作为chkrootkit用户进行执行命令(通常是root),原因是file_port是空的,因为在变量赋值周围缺少引号

---4)防护手段:file_port="$file_port $i"   ---加上引号

---5)chkrootkit 0.49漏洞的产生是由于 chkrootkitcrontab(可以定时执行任务),会定期以 root身份执行 /tmp/update文件(没有这个文件要自己建)

##chkrootkit 0.49漏洞提权

#方法1:使用printf或者echo构建sh文件写入update

---赋予执行权限

---等待一会,直接获取到root权限

#方法2:给www-data加入sudo权限:

---修改/etc/sudoers的文件,添加SUID用户

---等待一会查看

#方法3:编写个一个.c文件上传到网站的test目录中,然后gcc编译成update

---.c文件的内容是

---方法4:MSF生成elf后门

---使用http.server进行

---靶机进行下载

---msf监听

---在root的根目录下存在newRule

---只开启22、80、443端口

---补充:这里可以探测lighttpd1.4.28可能存在的漏洞(都不能进行提权)

---lighttpd 1.4.31-拒绝服务(PoC)
---Lighttpd 1.4.x-mod_userdir信息披露

##知识点总结

---1.Nmap扫描端口发现22和80端口

---2.nikto和dirb配合进行敏感目录发现和漏洞扫描

---3.Burp抓包通过OPTION发现允许PUT上传

---4.curl使用-X指定put方法,进行文件上传,-p以POST的方式上传数据,也可以使用--upload-file参数直接上传文件

---5.上传的文件:一句话命令执行(80)、weevely可以自动寻找端口连接(443),以及系统漏洞扫描linpeas.sh

---6.linpeas分析:系统漏洞、sudo版本漏洞、用户SUID漏洞

---7.计划任务枚举,在/etc/cron.day目录下发现chkrootkit文件(其它用户可执行权限)

---8.chkrootkit产生的功能了解、find查找配置文件和环境变量文件上传到Web分析

---9.查看chkrootkit0.49漏洞提示,进行替换/tmp/update提权

---10.提权的方式:写入反弹Shell的sh脚本,写入c脚本命令执行shell编译成update,msf生成elf文件修改为update,修改/etc/passwd将www-data赋予SUID权限

---11.HTTP1.0(每次建立TCP连接,队头阻塞:必须前一个请求到达才能发生请求)

---12.HTTP1.1(一直保持TCP连接超时断开;管道传输:同一个TCP客户端可以发送多个请求不必等响应,解决了请求队头阻塞但是没解决响应队头阻塞),缺点:无状态(session),明文传输(对称加密),不安全(不安全),HTTP需要将头转化为二进制

---13.HTTP2.0(头部压缩消除重发头部、二进制帧分层以Stream发送二进制数据、多路复用解决队头阻塞,服务器推送减少消息传递次数,TCP协议导致队头阻塞)

---14.非对称加密:C/S均匀公钥和私钥,C使用S的公钥加密消息发送,S接受消息使用自己的私钥解密,缺点:(公钥不保密,中间人替换客户端公钥、中间人截获客户端消息,使用S公钥加密伪造发送给S)

---15.数字签名与数字证书:S发送公钥等信息先Hash然后给CA,CA添加自己私钥生成数字证书给S,S发送数字证书给C,C通过CA公钥解密,对比不通过CA证书的hash(优点:C不需要S的公钥)

---16.SSL/TTL协议的基本过程

参考文章:

【1】Linux curl命令最全详解:http://t.csdn.cn/ec2KD

【2】详解HTTP协议版本(HTTP/1.0、1.1、2.0、3.0区别):http://t.csdn.cn/5hro9

【3】HTTP与HTTPS的区别,详细介绍:http://t.csdn.cn/1mBZN

【4】深入理解http2.0协议,看这篇就够了!:https://mp.weixin.qq.com/s/a83_NE-ww36FZsy320MQFQ


项目13:SickOs1.2的评论 (共 条)

分享到微博请遵守国家法律